xymonのログ監視機能でmsgsアイコンがありますが、これだと複数のログの監視がひとつにまとめられてしまい、アラーム通報が細かく設定できないなど柔軟さに欠いています。

またログ検知から30分間が赤になるとの仕様も通知が複数回届いてしまう事象となったりGreenの復旧通知が遅れたりとわかりにくい場合があります。

 

自前でログ監視を行って回避させようとするシェルスクリプトっぽい擬似コードです。

ローテートの処理が完全ではないのと、タイミングによっては監視が漏れてしまう場合があるかもしれませんが。

前回実行時からの増加分の行数を数えていますが、IFSを変えて複数行の監視を実現しているところがポイント。

==============================================================

OLD_LINE=`cat /tmp/xymon_syslog_wc.txt`

NEW_LINE=`wc -l /var/log/messages | awk '{print $1}'`

echo $NEW_LINE > /tmp/xymon_syslog_wc.txt

TAIL_LINE=`expr $NEW_LINE - $OLD_LINE`

echo `date` "OLD: $OLD_LINE NEW:  $NEW_LINE TAIL: $TAIL_LINE"

if [ $TAIL_LINE -lt 0 ] ; then

  # log rotate

  cp /var/log/messages.log /tmp/messages

else

  tail -$TAIL_LINE /var/log/messages.log > /tmp/messages

fi

 

# change IFS to Only Return

ORG_IFS=$IFS

NEW_IFS="

"

IFS=$NEW_IFS

 

ここに/tmp/messagesを対象にログ監視の処理を入れる。

監視で見つかったらアラート。

IFS=$ORG_IFS

==============================================================

これでログを見つけたら、あとは普通に通知を上げれば良さそう。

Xymon関係無くcronからでもなんでも定期的に実行すればログ差分のみの監視ができます。

 

どなたかローテート対応など拡張してくれたら嬉しいです。

 

devmonを起動しっぱなしにするとメモリリークしているように見えます。

 

止めようとしても止まらず。

 

[root@example ~]# /etc/rc.d/init.d/devmon stop

Stopping Devmon:                                           [失敗]

 

プロセス見るとこんな感じ。

 

[root@example ~]# ps aux | grep devmon

root      2636  0.6  0.5  15132 10852 ?        S    Jan01 705:24 devmon[master]

root     16922  1.7  0.4  15132 10144 ?        S   00:00   0:00 devmon

root     16923  0.0  0.4  15132  9552 ?        S    00:00   0:00 devmon

root     16924  0.0  0.4  15132  9552 ?        S    00:00   0:00 devmon

root     16925  0.0  0.4  15132  9552 ?        S    00:00   0:00 devmon

root     16926  0.0  0.4  15132  9552 ?        S    00:00   0:00 devmon

 

killしてやるとゾンビになりますが、徐々に消えていきます。

 

[root@example ~]# ps aux | grep devmon

root      2636  0.6  0.5  15132 10852 ?        S    Jan01 705:24 devmon[master]

root     16924  0.0  0.0      0     0 ?        Z    00:00   0:00 [devmon] <defunct>

root     16925  0.0  0.0      0     0 ?        Z    00:00   0:00 [devmon] <defunct>

root     16926  0.0  0.0      0     0 ?        Z    00:00   0:00 [devmon] <defunct>

 

全部消えた後にdevmon起動するとメモリリークは解消していました。

 

devmonのhosts.dbの更新と確認

テーマ:
devmonのhosts.dbファイルの更新は、

./devmon --readbbhosts

ですが、更新してもDBファイルはバイナリのため、中身の確認はできないとお考えですか?
stringsコマンドのバイナリ中の文字列を出力する方法が効果的に使えます。

strings hosts.db すると、

main_utm_01
192.168.10.1
Fortinet
Fortigate-300C
public
・・・(略)

のように5行ごとに、DBの中身が確認できます。
これだけ表示できればdevmonの設定確認には充分です。