Linux環境でのログ監視は、システム管理者やエンジニアにとって重要なタスクです。しかし、手動でログをチェックするのは手間がかかります。スクリプトを活用すれば、ログ監視を自動化し、効率的にトラブルシューティングやセキュリティ監視が行えます。この記事では、シンプルなログ監視スクリプトの作成方法や、日常のログ管理を楽にする活用法を紹介します。
1. シンプルなLinuxログ監視スクリプトの作成法
Linuxでは、bash
やpython
を使って簡単なログ監視スクリプトを作成できます。以下に、基本的なスクリプトの例を示します。
1-1. Bashスクリプトでログ監視
以下は、エラーメッセージをリアルタイムで監視するシンプルなBashスクリプトです。
例:エラーメッセージ監視スクリプト
#!/bin/bash
LOG_FILE="/var/log/syslog" # 監視対象のログファイル
KEYWORD="ERROR" # 検索するキーワード
tail -Fn0 $LOG_FILE | while read LINE; do
echo "$LINE" | grep --quiet "$KEYWORD"
if [ $? -eq 0 ]; then
echo "[$(date)] Found error: $LINE"
fi
done
解説
tail -Fn0
:ログファイルのリアルタイム更新を監視。grep --quiet
:指定したキーワード(例:「ERROR」)を含む行を検出。echo
:検出されたログをターミナルに表示。
1-2. Pythonスクリプトでログ監視
Pythonを使うと、より高度な解析やメール通知などの機能を簡単に実装できます。
例:Pythonでのエラーメッセージ監視スクリプト
import time
LOG_FILE = "/var/log/syslog" # 監視対象のログファイル
KEYWORD = "ERROR" # 検索するキーワード
with open(LOG_FILE, "r") as file:
file.seek(0, 2) # ファイルの終端から開始
while True:
line = file.readline()
if not line:
time.sleep(0.1) # ログの更新待ち
continue
if KEYWORD in line:
print(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] Found error: {line.strip()}")
解説
file.seek(0, 2)
:ファイルの最後から監視を開始。time.sleep(0.1)
:ログ更新待ちの間隔を指定。KEYWORD in line
:キーワードが含まれる行をチェック。
2. スクリプトでLinux環境のログ監視を自動化
ログ監視スクリプトを使えば、特定の条件に応じたアクションを自動化できます。
2-1. 特定条件でのアクション実行
以下は、キーワードを検出した際にメールで通知するBashスクリプトの例です。
例:メール通知付きログ監視スクリプト
#!/bin/bash
LOG_FILE="/var/log/syslog"
KEYWORD="ERROR"
MAIL_TO="admin@example.com"
tail -Fn0 $LOG_FILE | while read LINE; do
echo "$LINE" | grep --quiet "$KEYWORD"
if [ $? -eq 0 ]; then
echo "[$(date)] Found error: $LINE" | mail -s "Error Alert" $MAIL_TO
fi
done
ポイント
mail -s
:エラーメッセージをメールで送信。- 自動化することで、問題発生時に即座に対応可能。
2-2. 定期実行でのログ解析
スクリプトを定期実行してログを解析することで、手動作業を削減できます。以下はcron
を使った定期実行の例です。
手順
- スクリプトを作成して保存(例:
/home/user/log_monitor.sh
)。 chmod +x /home/user/log_monitor.sh
で実行権限を付与。crontab -e
を編集し、以下を追加:*/5 * * * * /home/user/log_monitor.sh
これにより、5分ごとにスクリプトが実行されます。
3. 日常のログ管理を楽にするスクリプト活用法
スクリプトを活用することで、以下のような日常的なログ管理タスクを効率化できます。
3-1. 定期的なログのバックアップと圧縮
ログファイルが肥大化するのを防ぐため、古いログを圧縮して保存します。
例:ログファイルの圧縮スクリプト
#!/bin/bash
LOG_DIR="/var/log"
BACKUP_DIR="/var/log/backup"
mkdir -p $BACKUP_DIR
find $LOG_DIR -name "*.log" -mtime +7 -exec gzip {} \;
find $LOG_DIR -name "*.gz" -exec mv {} $BACKUP_DIR \;
echo "Backup completed at $(date)"
解説
find -mtime +7
:7日以上前のログファイルを対象。gzip
:ログファイルを圧縮。mv
:圧縮ファイルをバックアップディレクトリに移動。
3-2. 特定エラーの統計レポート生成
エラーメッセージの出現回数を集計し、レポートを生成します。
例:エラー統計スクリプト
#!/bin/bash
LOG_FILE="/var/log/syslog"
OUTPUT_FILE="/home/user/error_report.txt"
grep "ERROR" $LOG_FILE | awk '{print $5}' | sort | uniq -c | sort -nr > $OUTPUT_FILE
echo "Error report saved to $OUTPUT_FILE"
解説
grep
:エラーメッセージを抽出。awk
:エラーの種類を特定。uniq -c
:出現回数をカウント。
まとめ
Linux環境でのログ監視は、スクリプトを活用することで効率化できます。
- シンプルな監視:BashやPythonでリアルタイムログ監視スクリプトを作成。
- 自動化:メール通知や定期実行を設定し、監視作業を省力化。
- データ活用:エラー統計やバックアップスクリプトで、管理を楽に。
これらのスクリプトを応用することで、日常のログ管理をより簡単かつ効果的に行えます。この記事を参考に、あなたのLinux環境に最適なログ監視スクリプトを作成してみましょう!