ログに「出力していない」事を検知したい
皆様のお知恵をお借りできればと思います。
毎日AM3:00~AM3:30 にバッチ処理が実行、完了時に「処理完了」とログに記載されます。
■目的
AM3:30 の時点でログに「処理完了」と記述されていない場合に、検知したい
(失敗時は何も出力されない)
■トリガー
条件式を2パターン試しましたが、両方とも検知できず。
①
{Server:log[/test/testlog_for_zabbix].str("処理完了",30m)}=0
and
{Server:log[/test/testlog_for_zabbix].time()}=033000
②
{Server:log[/test/testlog_for_zabbix].count(30m,"処理完了")}=0
and
{Server:log[/test/testlog_for_zabbix].time()}=033000
time関数の指定が良くないような気がしているのですが・・・
良い方法ありましたら教えて頂ければと思います。
Zabbix Ver : 4.0
監視対象サーバはLinux
Yasumi - 投稿数: 380
log[/test/testlog_for_zabbix]の更新間隔を0hにして、
更新間隔カスタマイズで例外設定で1-7,03:00-03:40にすればいいと思います。
※例外設定の更新間隔にもよりますが、後ろに時間をずらしておくのが無難
トリガーは下記だけで。
{Server:log[/test/testlog_for_zabbix].count(30m,"処理完了")}=0
ht0167 - 投稿数: 5
Yasumi様、ありがとうございます。
指示の通りアイテム/トリガー作成してみましたが、作成して少し時間が経つとアイテム/トリガー一覧の画面で赤い[i]マークが表示されてしまいました。
ポインタを合わせると、下記のようなメッセージが表示されます。
アイテムの[i]情報 … Accessible only as active check.
トリガーの[i]情報 … Cannot evaluate expression: "Cannot evaluate function "Server:log[/test/testlog_for_zabbix].count(30m,"処理完了")": item is not supported.".
普通に作成しただけなのですが、これを解消する方法はありますでしょうか。
Yasumi - 投稿数: 380
アイテムを「Zabbixエージェント(アクティブ)」として設定されていますでしょうか。
ログ監視は「Zabbixエージェント(アクティブ)」でないとデータ取得不可となります。
ht0167 - 投稿数: 5
アイテムのタイプを「Zabbixエージェント(アクティブ)」と選択すると、「監視間隔のカスタマイズ」項目が表示されなくなります。
(以前のバージョンでは選択できていたのでしょうか)
表示させる方法/やり方はありますでしょうか?
もしくは、やはりトリガー条件式で何とかするしかないのでしょうかね。
Yasumi - 投稿数: 380
なるほど。。。失念しておりました。
timeは確か下記のように使ったと思うので、下記で試してみてください。
※orがandだったかもしれません
{Server:log[/test/testlog_for_zabbix].count(30m,"処理完了")}=0
and
({Server:log[/test/testlog_for_zabbix].time()}=030000 or {Server:log[/test/testlog_for_zabbix].time()}=034000)
ht0167 - 投稿数: 5
time関数は <> ではなく = ですか?
今別件対応に取られていますので折を見て試したいと思います。
Yasumi - 投稿数: 380
指摘どおりですね。修正しましたので、これで試してみてください。
{Server:log[/test/testlog_for_zabbix].count(30m,"処理完了")}=0
and
({Server:log[/test/testlog_for_zabbix].time(0)}>=030000 and {Server:log[/test/testlog_for_zabbix].time(0)}<=034000)
参考サイトです。
https://qiita.com/biatunky/items/a7979331333cadb3aeba
https://pig-log.com/zabbix-trigger-time/
ht0167 - 投稿数: 5
({Server:log[/test/testlog_for_zabbix].time(0)}>=030000 and ~
と、指定すると 3:00 になった途端に判定処理が走ってしまう為、最終的に下記の様になりました。
{Server:log[/test/testlog_for_zabbix].count(30m,"処理完了")}=0
and
(
{Server:log[/test/testlog_for_zabbix].time()}>=033000
and
{Server:log[/test/testlog_for_zabbix].time()}<=033500
)
これでうまくいきそうです。
Yasumi様、色々とアドバイス頂きありがとうございました。