特定のサーバでログ検出が実行されない
お世話になります。
表題の件ですが、logrtで一台だけ検知がされずに原因を究明しております。ご教授くださると助かります。
【環境】
OS(ServerとAgentどちらも):Centos7
Zabbix-Server:3.4
DB:PostgreSQL:9.6
【設定内容】
zabbixサーバを入れた監視サーバが11台のサーバを監視しています。
11台のサーバすべてに共通で下記のアイテムと条件式を登録しています。
アイテム:
logrt[/var/log/messages,@REG8,UTF-8,100]
条件式:
({SERVERNAME:logrt[/var/log/messages,@REG1,UTF-8,100].regexp(@REG1)}=1)and({SERVERNAME:logrt[/var/log/messages,@REG1,UTF-8,100].nodata(5)}=0)
※SERVERNAMEは各サーバ名が入ります
【事象】
①
全台で/var/log/messagesに上記のアイテムで検知できるログが出力され、Zabbixサーバから1台を除き(サーバAと記載します)検知メールが発出されました。
アクションログを見るとサーバAだけ検知された形跡がありませんでした。
また監視データのヒストリを見てもlog検知やlog出力時にサーバが高負荷だったり、落ちていた形跡はありませんでした。
※検知したいログの内容は特定のプロセスを落とした時にmessagesに出力されるログです。
②
①の事象の2か月後、同様のログが出力されました。
今度はサーバAで検知は正常に行われ、別のサーバが(サーバBと記載します)検知されませんでした。
【確認した点】
1.サーバの設定内容:
サーバAとサーバBで設定しているアイテムとトリガーは同一であることを確認しました。
2.正規表現:
①と②の挙動から正規表現のマッチングにも問題ない認識です。
3.負荷状況:
ログ検知当時、リソース系のアラートはなく、zabbix上からもメモリとCPUが90%以上で張り付いている様子もありませんでした。
また接続断のアラートも出ていませんでした。
4.DBのエラー:
postgresのpostgresql.logを確認しましたが、検知時の時間帯でDB書き込みエラーが発生した形跡はありませんでした。
5.agentのログ:
agentは設定によりログを出力しないようになっています。そのため事象発生時のagentログは追えませんでした。
【質問事項】
①上記の確認した点以外にほかに見るべき点があれば教えてください。
②logrtで3.4固有のメッセージが送れないバグといったナレッジがあれば教えてください。
Yasumi - 投稿数: 380
検知とは何を差していますでしょうか。
アイテムには正常にログが格納されているのに、トリガーが発報しなかったという意味でしょうか。
私logrt使うときは下記のようにアイテムを設定していますが、正しく動いている認識でよかったでしょうか。
logrt["/var/log/^messages$",@REG1,UTF-8,100]
あとトリガーのnodata(5)というのは明らかに誤った設定です。
nodataの最小値は30なので、5だと機能しないのではないでしょうか。
nob - 投稿数: 4
ご連絡ありがとうございます。
>検知とは何を差していますでしょうか。
アイテムには正常にログが格納されているのに、トリガーが発報しなかったという意味でしょうか。
⇒説明不足で申し訳ありません。
検知されなかったサーバBのアイテムをヒストリの「最新500個の値」から確認したところ、該当するログが格納されていました。
アイテムがログを拾ったとするとトリガーが発砲しなかったということになるのでしょうか・・・?
>私logrt使うときは下記のようにアイテムを設定していますが、正しく動いている認識でよかったでしょうか。
⇒正しく動作できております。
>あとトリガーのnodata(5)というのは明らかに誤った設定です。
nodataの最小値は30なので、5だと機能しないのではないでしょうか。
⇒ご指摘ありがとうございます。当方もその点については認識しておりますが
「30以下でも入力は可能だが、実際は30で動作する」という現状の設定を変更することができないため本設定を入れております。
Yasumi - 投稿数: 380
アイテムに情報が格納されているのに、トリガーが発報しないということは、問題はトリガーにあると思われます。
nodataを使っているので、別のアラートを検知しているタイミングで巻き込まれた、などではないでしょうか。
「正常イベントの生成」と「障害イベント生成モード」の設定も教えてください。
nob - 投稿数: 4
ご連絡ありがとうございます。
>「正常イベントの生成」と「障害イベント生成モード」の設定も教えてください。
「正常イベントの生成」:条件式
「障害イベント生成モード」:単一
となっております。
>別のアラートを検知しているタイミングで巻き込まれた、などではないでしょうか。
メールが飛ばなかった時間帯にサーバBに他のアラートはありませんでした。
TNK - 投稿数: 4760
障害イベント生成モードを「単一」に設定していると、トリガーの
状態が障害の状態となっている時に、トリガーの条件に合致するよ
うなログが出力され、Zabbixが読み込んだとしても、トリガーイベ
ントが発生しないので、アクションの実行は行われないでしょう。
nob - 投稿数: 4
ご連絡ありがとうございます。
確かに単一だと実行されないか、と思いWEBコンソールから「監視データ」⇒「障害」⇒「ヒストリ」からサーバBで絞り
アクションが実行されなかった時間帯を調べたのですが一件もありませんでした。
件のログ監視アクションが実行された2か月前の履歴と3日前の別のアラートがあるだけで
「事前に障害状態だったためアクションが実行されなかった」という線は薄いかもしれまん。
もし確認する点が違ってたらご指摘ください。
Yasumi - 投稿数: 380
お聞きする限り、何らかの問題が起きている可能性はありますね。
Zabbixサーバのバージョンが古くなってしまっているので上げることが最も妥当な判断かとは思いますが、
{SERVERNAME:logrt[/var/log/messages,@REG1,UTF-8,100].regexp(@REG1)}=1
regexpを採用しているので、もしかしたら大文字と小文字の違いが実はあって検知できなかった、とかですかね。