本文へジャンプ

IBM Systems Director で利用できるログファイル監視用スクリプト

内容/目次

変更履歴
----------
2009/06/30 ver1.1 メタ文字列 <%%%%> を追加
----------

■ 説明

IBM Systems Director には Linux のログファイルを監視する機能がありません。

添付のスクリプトは、ログファイル内に特定の文字列を含むメッセージが現れると事前に定義したコマンドを実行します。この時、IBM Systems Director サーバーにイベントを発行するコマンドを実行することで、IBM Systems Director でログファイルを監視することができます。

監視対象のログファイル、文字列、実行コマンドは、それぞれ、複数のエントリーを任意に指定することが可能です。


■ 設定手順

① 添付のアーカイブファイルを任意の作業用ディレクトリで展開して、セットアップスクリプト setup.sh を実行します。

# tar -xvzf logmon_YYYYMMDD.tgz
# cd logmon_YYYYMMDD
# ./setup.sh


この時、以下のファイルが配置されて、サービス logmon がサーバー起動時に開始するように登録されます。
    /etc/logmon/logmon.pl   監視スクリプト本体
    /etc/logmon/logmon.conf  設定ファイル
    /etc/init.d/logmon     サービス起動・停止スクリプト


② 設定ファイルに監視対象ファイル、文字列、実行コマンドを記載します。

具体的な書き方は《設定ファイルの書き方》のセクションを参照してください。


③ サービス logmon を開始します。
    # service logmon start


■ ログファイルの回転について

logrotate などで監視対象のログファイルが新規作成された場合は、次のコマンドで、監視するファイルを新規ファイルに切り替える必要があります。
    # /etc/init.d/logmon switch

下記の例のように、logrotate の設定ファイル内の監視対象ログファイルの postrotate エントリーに、このコマンドを記載しておいてください。


※表示上、1行が折り返されて表示されている部分がありますのでご注意願います。
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {
  sharedscripts
  postrotate
    /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    /bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
    /etc/init.d/logmon switch
  endscript
}


※ logmon 起動時は、監視対象のログファイルに(logmon の起動後に)新たに書き込まれたエントリーから監視を始めますが、上記の切り替えを行った直後は、新規ファイルの既存のエントリー(最後の 5 行)も監視対象とします。これは、新規ファイルが作成されてから、logmon の監視対象ファイルの切り替えが完了するまでのわずかなタイミングで新規ファイルに書き込まれたエントリーの読み落としを防ぐためのものです。


■ 設定ファイルの書き方

《設定例》
※表示上、1行が折り返されて表示されている部分がありますのでご注意願います。実行コマンドは1行です。
# Monitor for messages
:/var/log/messages

(error|ERROR)

/opt/ibm/director/agent/runtime/agent/bin/agentcli.sh coreagent genevent /compcat:"Director.LogMonitor.Error" /comptype:"Messages" /sev:1 /text:"/var/log/messagesにエラー「error|ERROR」が記録されました。"

/usr/bin/wall "Found \"error|ERROR\" in /var/log/messages."

(warning|WARN)

/opt/ibm/director/agent/runtime/agent/bin/agentcli.sh coreagent genevent /compcat:"Director.LogMonitor.Error" /comptype:"Messages" /sev:3 /text:"/var/log/messagesに警告「warning|WARN」が記録されました。"

# Monitor for secure
:/var/log/secure

(Invalid user)

/opt/ibm/director/agent/runtime/agent/bin/agentcli.sh coreagent genevent /compcat:"Director.LogMonitor.Error" /comptype:"Secure" /sev:2 /text:"/var/log/secureに不正ユーザー「Invalid_user」が記録されました。"

設定ファイルの各行は、次のいずれかです。
    • 空行、および、# で始まる行は無視されます。
    • :<ファイル名> の行は、監視対象ファイル名です。
    • (文字列) の行は、監視対象文字列です。
    • その他の行は、実行コマンドです。

※ 監視対象文字列は、perl の正規表現が利用できます。例えば、複数の文字列を "|" 記号で区切ると、これらの文字列のいずれかにマッチします。

監視対象ファイル名、監視対象文字列、実行コマンドの3つ組みをこの順番で記載します。この時、1つの監視対象ファイルに対する監視対象文字列を複数指定でき、さらに、1つの監視対象文字列に対して、複数の実行コマンドを指定できます。

上記の例では、結果として、次のような動作になります。
    • /var/log/messages に "error" または "ERROR" が書かれると、agentcli.sh および wall コマンドが実行されます。
    • /var/log/messages に "warining" または "WARN" が書かれると、agentcli.sh が実行されます。
    • /var/log/secure に "Invalid user" が書かれると、agentcli.sh が実行されます。

設定ファイルの内容が logmon に正しく解釈されているかは、次のコマンドで確認ができます。logmon が設定ファイルを解釈した結果が画面に表示に表示されます。

# service logmon check
Config file: /etc/logmon/logmon.conf

Logfile: /var/log/messages
Message: (error|ERROR)
Action: /opt/ibm/director/agent/runtime/agent/bin/agentcli.sh coreagent genevent /compcat:"Director.LogMonitor.Error" /comptype:"Messages" /sev:1 /text:"/var/log/messagesにエラー「error|ERROR」が記録されました。"
Action: /usr/bin/wall "Found \"error|ERROR\" in /var/log/messages."
Message: (warning|WARN)
Action: /opt/ibm/director/agent/runtime/agent/bin/agentcli.sh coreagent genevent /compcat:"Director.LogMonitor.Error" /comptype:"Messages" /sev:3 /text:"/var/log/messagesに警告「warning|WARN」が記録されました。"

Logfile: /var/log/secure
Message: (Invalid user)
Action: /opt/ibm/director/agent/runtime/agent/bin/agentcli.sh coreagent genevent /compcat:"Director.LogMonitor.Error" /comptype:"Secure" /sev:2 /text:"/var/log/secureに不正ユーザー「Invalid_user」が記録されました。"


また、実行コマンドの行では、特殊文字 <%%%%> は、監視対象文字列が発見された行全体に置き換えられます。例えば、次の指定では、"I/O Error" を含む行全体が root 宛にメールで送信されます。

:/var/log/messages
(I/O Error)
echo "<%%%%>" | mail -s "I/O Error was found" root


■ IBM Systems Director Agent のイベント発行コマンド

上述の設定例の agentcli.sh は、IBM Systems Director 6.1 の環境で利用可能なコマンドです。/text: で指定するメッセージ内には空白を含むことができませんので、ご注意ください。

添付資料

logmon_20090630.tgz

文書情報

有効期限: 2011年6月27日

本文書について

本文書では、IBM製品においてLinuxを使用する上で有用と思われる技術情報やHints&Tipsをご提供いたします。
本文書の情報は、限られた検証環境における結果に基づくものであり、全ての環境で同一の結果を保証するものではありません。
本文書の情報に基づき導入・設定を実施される場合には、十分な検証テストを行ってください。
また、予め各社より提供される情報および製品のマニュアルをご覧ください。
本文書の情報に基づいて導入・設定・運用した結果について、IBMはいかなる保証も責任も負いかねますので予めご了承ください。

ソフトウェアサポート

ソフトウェア製品のサポート技術情報

ハードウェアサポート

ハードウェア製品のサポート技術情報