ログ監視にて除外設定の共通化
----------------------------------------
□バージョン
2.4.4
----------------------------------------
■やりたい事
ログ監視で文字列毎にイベントの表示名を変更したい。
ただし、特定の除外項目は共通。
■現状の状況
アイテム数 = 正規表現数となり、
正規表現毎に、除外設定を入れなければなりません。
以下の感じです。
■現状設定
□アイテム1
・アイテム名
動物グループ1です。
・設定
logrt[/var/log/messages,@Doubutu01,,,skip]
□アイテム2
・アイテム名
動物グループ2です。
・設定
logrt[/var/log/messages,@Doubutu02,,,skip]
□正規表現1
・名前1
Doubutu01
・条件式1
1>01-02-03 [結果が真]
2>usagi|hiyoko|neko [結果が偽]
3>kirinn|raion|zou [結果が偽]
□正規表現2
・名前2
Doubutu02
・条件式1
1>09-02-04 [結果が真]
2>usagi|hiyoko|neko [結果が偽]
3>kirinn|raion|zou [結果が偽]
■試したこと。
1)
logrt[/var/log/messages,01-02-03&@正規表現1,,,skip]
⇒ 正規表現1に固定の除外設定をいれて&で繋げる方法
結果:動作不良
2)
カスタム正規表現にカスタム正規表現を入れる。
⇒ 結果:動作不良
3)
アイテムを一つにして、トリガーで分岐させる。
□アイテム
logrt[/var/log/messages,@Doubutu01,,,skip]
□トリガー
アイテムキー.regexp(01-03-02)}=1
アイテムキー.regexp(09-02-04)}=1
一致しない場合?に正常と出てしまう。
※一致した時だけ、障害と出したい。
----------------------------------------
何かいい案があったら教えて頂けないでしょうか?
wakaba - 投稿数: 228
広瀬です
ログ監視に関しては何の文字列が出たら取得対象としたいのか、極力省力化するのがベターです。
ログ自体のDB格納量を最小限に抑える=通信量、負荷の低減、DB肥大化の抑制につながります。
なので、監視対象のログの中でERRORだけならそれだけに特化させるのが一番最良です。
その後、regexp関数で更に排除したい文字列だけ入れておく。私の場合は以下で
□アイテム
logrt[/var/log/messages,@LEU,,,skip]
□トリガー
アイテムキー.regexp(@EXC)}=1
■アイテム用正規表現(取得対象のみ)
LEU=error|failure|failed| fail |warn|critical|panic|unexp ※「結果が真」
※後に永続的に取得不要なものは、「結果が偽」のフィルタに追加
■トリガー用正規表現(排除用文字列専用)
EXC=hoge|hage|tako|ika
恐らく、ご提示の/var/log/messagesは事例の一つだと思いますので、本来的に監視されたいのは、
何らかのアプリログなのかと思いますが、私は以前の現場ではそれを見越して出力させたいエラーを
明示的に限定させ、ERR+レベル分け用のフラグ+コードを持たせるように指示しました。
結構、これが功を奏しました。レベル区分程度のトリガー数で済むので、作業は楽でした。
まぁ、既製OSSやパッケージ製品では上記のようには行かないかもしれませんが、方法論の一つです。
最近やった事ですと、IPS/IDSなどの製品の場合、数多の攻撃検知がログとして出ますし色々項目は
増えますが、正規表現5つ、アイテム5つ、トリガー5つで事足りました。
ZABBIXは指示した内容に併せてしかできませんが、情報の選択基準や取捨選択は人間が行うことな
ので、代替は効かないと思います。
冒頭でも述べた通り、ZABBIXサーバへの負荷低減を要旨とした方法なので直接的な解答ではあり
ませんが、ご参考程度に。