zabbixでの設定において、
特定のログファイルに対して、特定の文字列をチェックして、出現したら、メール通知をする。
という設置手順の覚え書きです。
今回は、上記の、トレンドマイクロの設定により、メールが届かない場合、いちはやく通知する設定を、例としています。
アイテム登録
該当のサーバーのアイテムに登録をします。
↑「設定」「ホスト」を選び、「アイテム」をクリックします。
↑画面、右上、「アイテムの作成」をクリックします。
↑名前:「SMTP_mail_log」
タイプ:「Zabbixエージェント(アクティブ)」
キー:log[/var/log/maillog,”postfix/smtp”,,,skip,,,]
第5引数の「skip」は、過去の情報は、チェックしない。という指定。
データ型:「ログ」
監視間隔:「1m」
ヒストリの保存期間「1d」
とする。
あとは、デフォルト。
/var/log/maillog
のファイルの中の「postfix/smtp」という行だけをチェックする。
この情報は、「1日」分(ヒストリの保存期間の「1d」)保存される。
チェック元の情報の保存期間であり、チェック結果の情報の保存期間ではない。
そして、「追加」を押します。
アイテム登録時のエラー
アイテム登録後、上記のような「Cannot open file “/var/log/maillog”: [13] Permission denied」
というエラーが出た場合の解消方法です。
/var/log/maillogのパーミッションを変更します。
パーミッション変更
# ls -al /var/log/maillog -rw------- 1 root root 9844460 XXX 3 XX:XX /var/log/maillog
↑上記のようなパーミションになっています。(CentOS7の場合)
rootしか、読み書き出来ません。
# chmod g+r /var/log/maillog
↑グループに読む権限を付加します。
# id zabbix uid=XXX(zabbix) gid=XXX(zabbix) groups=XXX(zabbix)
↑zabbixユーザの権限情報です。
# usermod -aG root zabbix
↑zabbixユーザをrootのグループに入れます。
# id zabbix uid=XXX(zabbix) gid=XXX(zabbix) groups=XXX(zabbix),0(root)
↑groupに、「root」が、加わりました。
# cat /etc/group root:x:0: ↓ root:x:0:zabbix
↑groupのファイルをみると、rootの行にzabbixが入っていました。
ログローテーションの変更
ログのローテーション実施後も、パーミッションが維持されるように変更をします。
# cd /etc/logrotate.d/ # cat syslog /var/log/cron /var/log/maillog /var/log/messages /var/log/secure /var/log/spooler { missingok sharedscripts postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true endscript }
↑「/var/log/maillog」が変更したファイルです。「syslog」というファイルに記述があります。
# cp -a syslog maillog
↑設定をコピーします。
# vi syslog /var/log/cron /var/log/messages /var/log/secure /var/log/spooler { missingok sharedscripts postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true endscript }
↑maillogを除外します。
# vi maillog /var/log/maillog { missingok sharedscripts postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true endscript }
↑maillogだけにします。
# vi maillog /var/log/maillog { missingok sharedscripts postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true endscript create 640 root root }
↑「create 640 root root」という行を追加して、新たに作成されたファイルのパーミッションを指定します。
トリガー
↑「設定」「ホスト」を選び、「トリガー」をクリックします。
↑画面、右上、「トリガーの作成」をクリックします。
↑「名前」のところに、「Trend Micro Email block」と入れます。
今回は、TrendMicroのチェックをします。
「条件式」のところですが、右側に「追加」のボタンを押します。
↑アイテムは、先ほど作成した、アイテム、「SMTP_mail_log」をプルダウンから選びます。
アイテムを選び、その下の「関数」に登録出来る関数の一覧が、あります。
関数のところですが「find」で始まるものを探します。
「find」は、zabbix 5.4から、搭載されたもので、従来の「str」関数から発展されたものになります。
↑「V」というところに、
blocked by Trend Micro Email Reputation Service
の文字列を入れます。
結果のところ「1」を入れます。
↑「条件式」のところに、入りました
blocked by Trend Micro Email Reputation Service
という文字列が現れたら、トリガー発動。です。
↑「正常イベントの生成」「復旧条件式」を選びます。
そして、右側の「追加」を押します。
↑「アイテム」と「関数」は、さきほど、同じものを選びます。
「最新の」のところの「300」は、「hour」の時間ではなく、「time」の時間です。
ここの単位は、「秒」です。
300秒「blocked by Trend Micro Email Reputation Service」の数字が現れなかったら、復旧と見なします。
という設定です。
↑上記の記事をご参照ください。
↑復旧条件式に、入りました。
「深刻度」は、今回、「軽度の障害」とします。
画面下の「追加」を押します。
トリガーが追加されました。
↑このように設定されました。