Linuxログ監視スクリプトの作成と活用法:自動化で効率化を実現|サイバーセキュリティ.com

Linuxログ監視スクリプトの作成と活用法:自動化で効率化を実現

Linux環境でのログ監視は、システム管理者やエンジニアにとって重要なタスクです。しかし、手動でログをチェックするのは手間がかかります。スクリプトを活用すれば、ログ監視を自動化し、効率的にトラブルシューティングやセキュリティ監視が行えます。この記事では、シンプルなログ監視スクリプトの作成方法や、日常のログ管理を楽にする活用法を紹介します。


1. シンプルなLinuxログ監視スクリプトの作成法

Linuxでは、bashpythonを使って簡単なログ監視スクリプトを作成できます。以下に、基本的なスクリプトの例を示します。

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を使った定期実行の例です。

手順

  1. スクリプトを作成して保存(例:/home/user/log_monitor.sh)。
  2. chmod +x /home/user/log_monitor.shで実行権限を付与。
  3. 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環境に最適なログ監視スクリプトを作成してみましょう!

Ray-SOC(レイソック)サービス

月額10.8万円から利用できるSOCサービス

国内に施設を持ち、サポート実績のあるSOCサービス、廉価な費用で24時間の監視サービスを提供します。


詳細はこちら

  • 中小企業の情報瀬キィリティ相談窓口[30分無料]
  • 情報処理安全確保支援士(登録セキスペ)募集
  • サイバー保険比較
  • 【企業専用】セキュリティ対策無料相談