ログメッセージの監視

おそらく初歩的なことだとは思いますが、探してみましたが方法が見つからなかったため、質問させていただきます。

<実施したい内容>
ファイル内の文字列監視を実施し、特定の文字列を確認した際にアラートを出力

<確認したいファイルのフォルダパス>
/var/log

<確認したいファイル名称>
messages

<監視したい文字列>
hogehoge

<入力コマンド>
zabbix_server -V
<結果>
zabbix_server (Zabbix) 5.4.7

Web画面から作成
<作成したアイテム>
名前:testlog
タイプ:Zabbixエージェント(アクティブ)
キー:log[/var/log/messages]
データ型:ログ
監視間隔:1m
監視間隔のカスタマイズ:設定なし
ヒストリの保存期間:90d
ログの時間の形成:設定なし
説明:設定なし
有効:チェック状態

<作成したアイテムの状態>
監視データ > 最新データ より確認
名前:testlog
最新の値:

アイテムは作成出来ていると思うのですが、トリガーの作成がうまくいかず苦戦しています。
<トリガー>
名前:<好きな名前を入れる>
イベント名:設定なし
運用データ:設定なし
深刻度:警告
条件式:(不明部分)
<追加>
アイテム:<サーバ名>:testlog
関数:?????
最新の????カウント
タイムシフト:??時間
結果:?? ??

正常イベントの生成:条件式
障害イベント生成モード:単一
正常時のイベントクローズ:すべての障害
手動クローズを許可:設定なし
URL:設定なし
説明:設定なし
有効:チェック状態

初歩的なことで申し訳ないですが、ご教示お願いいたします。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー TNK の写真

「アイテムは作成出来ていると思う」とのことですが、アイテムの
設定に関しても、例えばファイルのパーミッションなどの問題があ
って正常に値を取得できていない可能性が考えられます。

まずは、最新データを確認して、アイテムの設定や環境の設定に問
題が無く、正常に値を取得できていることを確認してください。

ユーザー 悩み中 の写真

回答ありがとうございます。
ファイルのパーミッションについては下記コマンドを入力済みで、権限の付与を行っております。

<ファイルを確認したいサーバにて実施>
cd /var/log
chmod△777△messages
パーミッション状態
-rwxrwxrwx

また、アイテムの値については下記状態となっております。
<アイテムの確認結果>
最新のチェック時刻:2022/04/19 03:11:29
最新の値:Apr 19 03:11:01 .........

ファイルの更新日時とアイテムのチェック時刻が同一であることを確認しております。
<ファイルの更新日時>
対象サーバの/var/log/messages
更新日付:2022/04/19 03:11

上記以外に確認すべき項目があればご教示お願いいたします。

ユーザー 悩み中 の写真

何回かトリガーを作成してみましたが、うまくいかずの状態です。

失敗例:last関数
アイテム:<サーバ名>:testlog
関数:last()
最新の:
タイムシフト:
結果: = 0
検索したい文字を入力できない

失敗例:find関数
アイテム:<サーバ名>:testlog
関数:find()
最新の:24時間
タイムシフト:
O:
V:Apr
結果: = 0
仮にAprで検知しようとしたが、検知できない
結果を > 0 にしても同様に検知できない
結果を = 1 にしても同様に検知できない
最新の 1カウント にしても同様に検知できない

※ファイルにはAprを含む文字列ありの状態です。

ユーザー TNK の写真

ログ監視で、特定の文字列が含まれているかをチェックするのであ
れば、findを使用します。
lastは最終値をとってくるだけなので、文字列比較には使用できま
せん。

あと、条件式ウィザードの入力項目だけではなく、実際にその入力
で最終的にどのような条件式になったのかを提示頂いた方が私は状
況を確認しやすいです。

findの使い方ですが、マニュアルを確認すると以下のように書かれ
ていると思います。

 find(/host/key,<(sec|#num)<:time shift>>,,)

「host」の部分には対象のホスト、「key」の部分にはアイテムキー
を指定します。
最新の値だけをチェックするのであれば、その次の引数は指定しな
くて良いと思います。
その次の「operator」には、その次の「pattern」で指定する文字列
とどのように比較するかを指定します。
文字列を含むというのであれば、likeを指定すればよいでしょう。
正規表現を使用したいのであれば、regexpを指定すればよいでしょ
う。

なので、以下のような条件式が一例となると思います。

 find(/<ホスト名>/log[/var/log/messages],,"like","Apr")

あとは、何をどのように監視したいか次第です。
マニュアル:
https://www.zabbix.com/documentation/5.4/en/manual/appendix/functions/hi...

ユーザー 悩み中 の写真

回答ありがとうございます。

設定後、ファイル内容を更新したところ、正常に検知致しました。
また、ファイル内容からAprを消したところアラートが消えたことを確認できました。

解決しました。引き続き、Zabbixについて学んでいこうと思います。
ありがとうございました。