はじめに

CentOSでログを監視します。
対象のログは「/var/log/messages」とします。

環境

Zabbixサーバ

OS:CentOS 8.2.2004
Apache:2.4.37
PHP:7.2.25
MariaDB:10.3.17
Zabbix Server:5.0.2
Zabbix Agent:5.0.2

 

検証サーバ

OS:CentOS 7.8.2003

操作手順

Zabbixの管理コンソールにサインインします。

 

パーミッションの変更

messagesは、rootユーザー以外のユーザーではアクセスすることができません。そのため、最初にオーナーとパーミッションの設定を変更してZabbixからログファイルにアクセスできるようにします。
# chown root:zabbix /var/log/messages
# chmod 640 /var/log/messages

 

テンプレートを作成する

左サイドバーから [設定] - [テンプレート] をクリックします。
「テンプレートの作成」ボタンをクリックします。
以下の通り入力します。
テンプレート名:T_Log_05
グループ:Templates
「追加」ボタンをクリックします。

 

テンプレートの作成が完了しました。
これから作成したテンプレートに対して設定を追加していきます。

 

アイテムを作成する

テンプレートの「アイテム」をクリックします。
CentOSでログを監視してみた

 

右上の「アイテムの作成」ボタンをクリックします。
アイテムの作成画面では、監視したい項目に合わせて設定します。
名前:messages
タイプ:Zabbixエージェント(アクティブ)
キー:log[/var/log/messages,"Fail|This is a Critical Error",,,skip,,,]
「Fail」 と 「This is a Critical Error」というキーワードで検知させます。
データ型:ログ
監視間隔:1m
アプリケーション:ログ
「追加」ボタンをクリックします。

 

トリガーを作成する

テンプレートの「トリガー」をクリックします。
CentOSでログを監視してみた

 

右上の「トリガーの作成」ボタンをクリックします。
トリガーの作成画面では、監視したい項目に合わせて設定します。
名前:ログ監視
深刻度:重度の障害
条件式:{T_Log_05:log[/var/log/messages,"Fail|This is a Critical Error",,,skip,,,].nodata(60)}=0
条件式の説明です。
・「Fail」 または 「This is a Critical Error」が見つかった
・60秒の間にデータを受信した
(60秒経過後、新たなエラーログを検知しなければ復旧となります)
【nodataの補足】
nodata:データを受信していないかの確認
(60):60秒間(公式サイトでは30秒以上必須)
=0:データを受信しているかの判定。(=1であれば受信していないかの判定)

「追加」ボタンをクリックします。

 

テンプレートをホストにリンクする

左サイドバーから [設定] - [ホスト] をクリックします。
作成したテンプレートをリンクするホストを選択します。ここでは「CentOS8-2」を選択しています。
「テンプレート」をクリックします。
新規テンプレートをリンク欄で、「T_Log_05」をリンクします。

動作確認

CentOS8-2にログインします。
syslogに任意のログを書き込みます。以下のコマンドを入力します。
# logger Fail
# logger test
# logger This is a Critical Error

 

[監視データ]-[最新データ]をクリックします。
ホストは「CentOS8-2」を選択し、「適用」ボタンをクリックします。

 

アイテム設定で指定したログのみが取得できています。
CentOSでログを監視してみた

 

ダッシュボードではトリガー設定により指定したキーワードで検知できていることが確認できます。
CentOSでログを監視してみた

トップへ戻る