Zabbixでログから数値を抽出して監視する

Zabbixでログから数値を抽出して監視する

こんにちは。

今回は、Zabbixを使用しログから数値を抽出して監視する方法を紹介します。

過去の記事で、ClamAVを利用してログファイルを出力する方法を紹介しました。これを応用しマルウェアが検知されたことをZabbixで検知します。

環境

  • Zabbix server 6.0.1

2022 04 09 23h42 46

ログファイルが Zabbix ユーザーからアクセスできる必要があります。 環境によっては、権限の調整が必要になりますので以下の記事あたりを参考に設定してください。

技術メモメモ: ZabbixでAllowRoot=1をせずに/var/log/messagesなどを監視する方法

監視仕様

  • scanvirus.log から Infected files: 数字 を検出する。
  • 数字の部分を抜き出して、0 を超える とき通報する。

scanvirus.log過去の記事clamav_check_YYYYMMDD-HHMMSS.log のファイル名を変更して応用しています。

Zabbix の設定

それでは、Zabbixの設定をしていきましょう。

流用できるよう、テンプレートを作成します。 設定→テンプレート→テンプレートの作成 をクリックします。

テンプレート名グループ を任意に入力し追加します。 記事中は、Scan Virus Log Infected files Check とします。

アイテム

以下のアイテムを作成します。

  • 名前:マルウェアファイル検出監視
  • タイプ:Zabbixエージェント(アクティブ)
  • キー:log[/var/log/scanvirus.log,"Infected files: ([0-9]+)",,,skip,\1]
  • データ型:ログ
  • 監視間隔:1m

マルウェアファイル検出監視用アイテムの作成

マルウェアファイル検出監視用アイテムの作成

log 関数のフォーマットは、log[/path/to/file/file_name,<regexp>,<encoding>,<maxlines>,<mode>,<output>] となっています。

第2引数の、regexp はログの取得対象の文字列を記載します。 本記事では、マルウェアファイルの検出ファイル数を取り出したいので ([0-9]+)1桁以上の連続する数字 を示す正規表現を記載します。

第6引数の、output\1 を指定します。 これは 第2引数の()で囲んだ箇所をアイテムの値として抽出する という設定になります。

トリガー

以下のトリガーを作成します。

  • 名前:Found infected files : {HOST.NAME}
  • 深刻度:重度の障害
  • 条件式:last(/Scan Virus Log Infected files Check/log[/var/log/scanvirus.log,"Infected files: ([0-9]+)",,,skip,\1])>=1

2022 04 09 23h59 52

条件式は前述で作成したアイテムを指定していますが、最後の >=10 を超える を表します。

あとがき

本記事の設定で、マルウェアが1つ以上検出された場合に検出されます。 今回の記事は自動復旧ではなく、手動クローズを想定しています。

さまざまな応用が可能だと思いますのでお試しください。

それでは次回の記事でお会いしましょう。

norikazum