シェルスクリプトを利用して、logmonで除外キーワードを設定

2021-07-02

logmonでの除外キーワードを設定する

logmonのログ監視では、指定した文字列のみヒットするとメールを送付する、任意のシェルスクリプトを実行するなどのアクションが実行できます。

※ logmonのインストール方法は「logmonでログ監視 」を参照

除外キーワードを利用してのログ監視ですが、以前の記事(logmonでの除外キーワード)でも書きましたが、設定ファイルでの除外キーワードの設定がなくlogmonでは特定の文字列を除外してログ監視はできません。

但し、ログ監視で特定の文字列を検知した場合に、一旦のその内容をファイルに出力し任意のシェルスクリプトを利用してログ監視すれば可能です

シェルスクリプトを利用して除外キーワードを設定してログ監視する

logmonで除外キーワードを設定してログ監視する場合はですが、以下のような流れなら除外キーワードを設定してログ監視ができます

  1. 特定の文字列を書き込まれると、その内容を別のファイルに出力する
  2. シェルスクリプトを実行され、出力されたファイルに除外キーワードがある場合は、その行を削除する
  3. ファイルが空ファイルじゃない場合は、任意のアドレスにメールする

特定の文字列を書き込まれるとファイルに出力され、シェルスクリプトを実行する必要があるので、logmon.confを編集します。

下記の設定では、「/var/log/messages」に「error|ERROR|fail|FAIL」の文字列が含まれると「/var/tmp/logmon.log」に出力されます。その後「/root/script/excluding_logmon_.sh」が実行されます。このシェルスクリプトで除外キーワードを含む場合の処理をしています

$ sudo /etc/logmon/logmon.conf
:/var/log/messages
(error|ERROR|fail|FAIL)
echo "<%%%%>" >> /var/tmp/logmon.log | sh /root/script/excluding_logmon_.sh

下記のシェルスクリプトでは、除外キーワードを設定してその行が含まれる場合は、sedコマンドでその行を削除しています。
その後、if [ ! -s ${LOGFILE} ]; でファイルの0バイト以上の場合で処理を分けています。
0バイトの場合はエラーメッセージを含まれていないので空ファイルを削除しています。
0バイトではない場合は、sedコマンドで除外キーワードを除外してもエラーメッセージが含まれているので、メール送信してからファイルを削除しています

$ sudi vim /root/script/excluding_logmon_.sh
#!/bin/bash

HOSTNAME=`/bin/hostname`
# LOGファイルの場所
LOGFILE=/var/tmp/logmon.log
# 除外キーワード1
KEYWORD1=TEST01
# 除外キーワード2
KEYWORD2=example

# 除外キーワードを含む行を削除
/bin/sed -i "/${KEYWORD1}/d" ${LOGFILE}
/bin/sed -i "/${KEYWORD2}/d" ${LOGFILE}
# 空行を削除
/bin/sed -i '/^$/d' ${LOGFILE}

#ファイルが空の場合は、そのファイルを削除、空ではなくエラーメッセージが含まれる場合はメール送信
if [ ! -s ${LOGFILE} ]; then
  rm -f ${LOGFILE}
else
  cat ${LOGFILE} | mail -s "${HOSTNAME} messages alert" -r (送信元メールアドレス) (送信先メールアドレス)
  rm -f ${LOGFILE}
fi

logmon.confを編集して、シェルスクリプト等のを設定した場合は、logmonの再起動が必要なので再起動をおこないます

$ sudo /etc/init.d/logmon start
Starting logmon: Success.

再起動後はloggerコマンドなどで、/var/log/messagesにエラーや除外キーワードを書き込みを行なって動作確認をおこないます

除外キーワードの場合はメール送信されなくて、errorなどの監視キーワードの場合はメール送信されればOKです

# エラーを/var/log/messagesに書き込む
$ sudo logger ERROR
# 除外キーワード(test)を/var/log/messagesに書き込む
$ sudo logger "test message"

 

スポンサーリンク

0
0