Zabbixでログから数値を抽出して監視する
こんにちは。
今回は、Zabbixを使用しログから数値を抽出して監視する方法を紹介します。
過去の記事で、ClamAVを利用してログファイルを出力する方法を紹介しました。これを応用しマルウェアが検知されたことをZabbixで検知します。
環境
- Zabbix server 6.0.1
ログファイルが 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
条件式は前述で作成したアイテムを指定していますが、最後の >=1
で 0 を超える
を表します。
あとがき
本記事の設定で、マルウェアが1つ以上検出された場合に検出されます。 今回の記事は自動復旧ではなく、手動クローズを想定しています。
さまざまな応用が可能だと思いますのでお試しください。
それでは次回の記事でお会いしましょう。