シェルスクリプト

ログ監視スクリプトを作る【エラー検知・アラート通知の実装】

シェルスクリプト
記事内に広告が含まれています。

サーバーのエラーをいち早く検知するためのログ監視スクリプトを作ります。特定キーワードが出たら通知する仕組みを解説します。

基本的なログ監視スクリプト

#!/bin/bash
LOGFILE="/var/log/nginx/error.log"
LAST_POS_FILE="/tmp/log_monitor_pos"
last_pos=$(cat "$LAST_POS_FILE" 2>/dev/null || echo 0)
current_size=$(wc -c < "$LOGFILE")
if [ "$current_size" -gt "$last_pos" ]; then
  new_lines=$(tail -c +$((last_pos+1)) "$LOGFILE")
  matched=$(echo "$new_lines" | grep -E "ERROR|CRITICAL|FATAL")
  [ -n "$matched" ] && echo "[$(date)] アラート: $matched"
fi
echo "$current_size" > "$LAST_POS_FILE"

tailでリアルタイム監視

#!/bin/bash
tail -f /var/log/syslog | while IFS= read -r line; do
  echo "$line" | grep -q "ERROR" && echo "[$(date)] エラー: $line"
done

まとめ

  • grep -E でERROR・CRITICALなどをパターンマッチできる
  • 最後に読んだ位置を記録して差分のみを処理できる
  • tail -f とwhileループでリアルタイム監視ができる
  • cronと組み合わせて定期チェックにするのが実用的

コメント

タイトルとURLをコピーしました