日々是好日

これまで使ってきたOSSの備忘録です

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) 追加ボタンをクリックする。

f:id:sincnick:20210925215944p:plain

 

5.Zabbixの監視トリガーの設定

(1) 監視トリガーの設定

 ①設定ーホストーZabbix-serverのトリガーを開く

 ②トリガーの作成を開く

 ③任意の名前をつける。(名前の後ろに{ITEM.VALUE}と入力する)

 ④深刻度を「警告」にする。

 ⑤条件式で、以下のように定義する

  (({Zabbix server:logrt[/var/log/syslog-monitor,,,,,,,].iregexp(.warning])})<>0)

 ⑥追加ボタンをクリックする。

f:id:sincnick:20210925234221p:plain

(2) 他の深刻度の設定

  警告以外の深刻度も、上記(1)①~⑥を参考に設定する。

 設定例

f:id:sincnick:20210926212122p:plain

(3) loggerコマンドを使い、テストメッセージを通知してみる。

 (警告の場合)

  logger -p local1.warn "test warn message."

 

 Zabbixのトリガー設定ができていれば、SYSLOGのプライオリティ(優先度)に応じたZabbixの深刻度が表示させる。

f:id:sincnick:20210926212927p:plain

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

【解説】

今回紹介したsyslogのログ監視は、下図の通り。

①OSのsyslogデーモンが、syslog-monitorファイルにメッセージを出力する。

②Zabbix-agentが、syslog-monitorのファイルを読み込む。

③トリガーの条件式に基づき、syslogのメッセージを障害判定する。

f:id:sincnick:20210926224156p:plain

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のメッセージも表示されるので見やすくなる。

 

以上