Zabbixでsyslogのログ監視
1.はじめに
Zabbixでsyslogのログ監視を行う場合、OS既定値のままだとログの日時やプライオリティを認識できない。そのため、認識できるようにする設定方法を説明する。
【環境】
CentOS 8
Zabbix 5.0
2.rsyslog.confの設定
(1) rsyslog.confの編集
/etc/rsyslog.confに、以下の2行を追加する。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
# テンプレートの定義
$template SyslogMonitor,"%timegenerated:::date-rfc3339% %hostname% [%syslogfacil
ity-text%.%syslogseverity-text%] %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-l
ast-lf%\n"
# warn以上をログ出力
*.warn /var/log/syslog-monitor;SyslogMonitor
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
(2) rsyslogの再起動
systemctl restart rsyslog
(3) テストメッセージの通知
logger -p local1.crit "test crit message."
(4) テストメッセージが、監視用のsyslogファイル(syslog-monitor)に出力されたことを確認する。
tail /var/log/syslog-monitor
(5) Zabbixでログ監視できるように、読み取り権限を追加
chmod +r /var/log/syslog-monitor
3.監視用のsyslogファイル(syslog-monitor)のローテーション設定
(1) logroateに、syslog-monitorをローテーションする設定を追加する。
4.Zabbixの監視アイテムの設定
(1) 設定ーホストーZabbix-serverのアイテムを開く
(2) アイテムの作成を開く
(3) 名前は任意の名前を入力する
(4) タイプは、「Zabbixエージェント(アクティブ)」を選択する
(5) キーは、logrt[/var/log/syslog-monitor,,,,,,,]と入力する
(6) データは、「ログ」を選択する
(7) ログの時間の形式に、「yyyy-MM-ddThh:mm:ss」と入力する
(8) 追加ボタンをクリックする。
5.Zabbixの監視トリガーの設定
(1) 監視トリガーの設定
①設定ーホストーZabbix-serverのトリガーを開く
②トリガーの作成を開く
③任意の名前をつける。(名前の後ろに{ITEM.VALUE}と入力する)
④深刻度を「警告」にする。
⑤条件式で、以下のように定義する
(({Zabbix server:logrt[/var/log/syslog-monitor,,,,,,,].iregexp(.warning])})<>0)
⑥追加ボタンをクリックする。
(2) 他の深刻度の設定
警告以外の深刻度も、上記(1)①~⑥を参考に設定する。
設定例
(3) loggerコマンドを使い、テストメッセージを通知してみる。
(警告の場合)
logger -p local1.warn "test warn message."
Zabbixのトリガー設定ができていれば、SYSLOGのプライオリティ(優先度)に応じたZabbixの深刻度が表示させる。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
【解説】
今回紹介したsyslogのログ監視は、下図の通り。
①OSのsyslogデーモンが、syslog-monitorファイルにメッセージを出力する。
②Zabbix-agentが、syslog-monitorのファイルを読み込む。
③トリガーの条件式に基づき、syslogのメッセージを障害判定する。
rsyslog.confの設定
syslog(/var/log/messages)の既定では、日付が「Sep 26」というような形式になっているため、Zabbixのログ監視では日付を認識できない。そのためrsyslog.confにテンプレートを定義して、日付をrfc3339形式で出力するようにしている。また、プライオリティ(優先度)も出力するように定義している。
Zabbixの監視アイテム
今回はlogrtを使用しているが、syslogログのローテーションの設定で、copytruncateを指定した場合は、logrtのオプションでcopytruncateを指定する必要がある。
Zabbixの監視トリガー
syslogのプライオリティ(優先度)とZabbixの深刻度の種類は、一致しないため環境に合わせてカスタマイズが必要になる。また、監視トリガーの名前に{ITEM.VALUE}をつけておくと、Zabbixのダッシュボードに、syslogのメッセージも表示されるので見やすくなる。
以上