logrt で複数ファイルをログ監視している中での各ファイル毎に別アラートとしてあげたい
以下のようにlogrt で複数ファイルのログ監視をしたいのですが
logrt["/var/log/node.*\.log$",,,,skip]
以下のように2件のERRORが出た場合でも1件目と2件目は同じ障害として認識されてしまいます。
ファイル名:node1.log
2024-10-22T10:10:10 10.0.0.1 ERROR ****** *******
ファイル名:node2.log
2024-10-22T20:20:20 10.0.0.2 ERROR ****** *******
これをそれぞれ、別々のアラートとしてあげる事は可能でしょうか?
便宜上、ファイルを複数に分けていますが、1つのファイルにまとめる事も可能です。
ファイルのフォーマットはログ出力の日時の次にノードのIPアドレス となっており、識別は可能となっております。
プリプロセッシングなどを使う必要が出てきそうでしょうか。。。
TNK - 投稿数: 4755
別の複数のファイルにログが出力されているのであれば、アイテム
は分けてください。
分けないと、ファイルごとにファイルのどの位置まで読み込んだか
の管理ができないので、複数回同じログで通知されたり、ログの再
読み込みと同様の問題が発生する可能性が考えられます。
imeatu01 - 投稿数: 3
ありがとうございます。
それでは以下のように静的にアイテムを登録していく他はなさそうでしょうか?
log["/var/log/nodeA.log",,,,]
log["/var/log/nodeB.log",,,,]
:
:
log["/var/log/nodeN.log",,,,]
TNK - 投稿数: 4755
個別に出力されるログファイルは、記載されているようにアイテム
を分けてください。
さらに、それらのファイルがローテーションするようになっている
のであれば、ローテーションされる際のファイル名に合わせてlog[]
ではなくlogrt[]を使用した方が良いと思います。
logrt[]でファイル名に正規表現を使うことができるのは、複数の
個別のファイルをまとめて設定するためのものではなく、1つのフ
ァイルがログローションなどによって、ローテーションされた際に、
同じファイルの読み飛ばしを起こさないようにするための機能です。
例えば、RHELでlogrotateを使用してログのローテーションが実行
された際に、
/var/log/messages
が
/var/log/messages-20241020
に移動され、
/var/log/messages
が新規に作成されると思います。
Zabbixエージェントがログを読み込むタイミングによっては、
/var/log/messagesに出力されていたログを読み込む前にローテー
ションが実行された際に、/var/log/messages-20241020から、読み
込んでいないと思われる分のログを読み込んでから、新しい、
/var/log/messagesから読み込むように機能します。
imeatu01 - 投稿数: 3
ありがとうございます。
logrt[] の使いどころ、理解しました。
スケールしていくログファイル登録の煩わしさは
Zabbix APIを利用する事で対応しようと思います。