Zabbixにて、Linux系のログをチェック

zabbixでの設定において、
特定のログファイルに対して、特定の文字列をチェックして、出現したら、メール通知をする。
という設置手順の覚え書きです。

メールが届かない!トレンドマイクロのチェック!
メールが届かない! 例えば、 aaa@example.com 宛てに送ろうとすると、 mail postfix/smtp: to=<aaa@example.com>, relay=xxxxx.trendmicro.c...

今回は、上記の、トレンドマイクロの設定により、メールが届かない場合、いちはやく通知する設定を、例としています。

アイテム登録

該当のサーバーのアイテムに登録をします。

↑「設定」「ホスト」を選び、「アイテム」をクリックします。

↑画面、右上、「アイテムの作成」をクリックします。

↑名前:「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」の数字が現れなかったら、復旧と見なします。
という設定です。

メールが届かない!トレンドマイクロのチェック!
メールが届かない! 例えば、 aaa@example.com 宛てに送ろうとすると、 mail postfix/smtp: to=<aaa@example.com>, relay=xxxxx.trendmicro.c...

↑上記の記事をご参照ください。

↑復旧条件式に、入りました。

「深刻度」は、今回、「軽度の障害」とします。

画面下の「追加」を押します。

トリガーが追加されました。

↑このように設定されました。

タイトルとURLをコピーしました