お世話になっております。
ログローテート対象のファイルに対して、毎日決まった時間に出力される文字列の数を監視したいです。
ログローテートファイル:/var/log/message_YYYYMMDD
ローテート時間:毎日4時
監視文字列:OKの文字列
文字列の数:OKが100件
とした場合
【アイテム】
zabbixエージェント(アクティブ)
logrt["/var/log/message_[0-9]{8}","OK"]
更新間隔300秒
【トリガー】
条件式の設定方法が思いつきません。
どなたか助力いただけないでしょうか。
KAZ - 投稿数: 1085
シェルを組んで監視するほかないと思います…
なんかいい案ありますか > フォーラムのみなさん
■案として
以下の様なコマンドでログに出力される指定時間の検索キーワードに一致した行数が取得できます。
↓試したmessagesのフォーマットです。
Mar 17 09:19:52 xxxxxxxxxxxxxxxxxxxxxxxx
■時間の指定について
月は"..."なので、何月でもヒット
日は[1-3][0-9]なので、10~39迄の数字だったらヒット
時は"04"なので4時のみヒット
実行結果はこんな感じです。
上記をシェル化して、取得できた値をzabbix_senderでZabbixサーバに飛ばすようにします。
で、シェルをcronで朝5時以降に動かせば、朝4時台の目的キーワードの数が取得できると思います。
格好良くないですが、一つの案として…A(^^;
ちなみに複雑な条件の監視はシェル組んでUserParameterやzabbix_senderを利用した方がZabbixのみでやらせるより楽な場合があります。
と、ZABBIX-JPのスタッフが言っていいものか…A(^^;
入力した文体が崩れた修正しました。 2014-03-17 19:30
ikemo - 投稿数: 48
zabbixの機能だけでは難しそうですねー・・・。
もうちょっと考えてみて、この設定も試してみたいと思います。
ありがとうございました!
ikemo - 投稿数: 48
以下のアイテムで該当文字列のカウントを拾えるところまでは作成できたのでトリガーで検知できる状況が整ってきました。
ですが、監視対象サーバがSJIS、対象ファイルもSJISで、該当文字列が日本語です。
キーワードで日本語を指定すると、zabbixに登録してもうまく取得できないようです。
system.run["hogehoge.log |iconv -f SJIS -t UTF-8 |grep ''正常' |wc -l"]
「正常」の文字列の部分をアルファベットにした場合は取得できます。
zabbixサーバはUTF-8、対象サーバはSJISです。
できれば対象サーバの環境等を変更せずzabbixからの操作のみで監視する方法を検討してます。
良い対応方法はないでしょうか。
KAZさんが提案していただいたようにシェルを駆使して監視する方法以外ないですかね・・・。