zabbix-agentでnginxのログから2xxの数を数えたい

nginxのログから 2xx や 4xx や 5xx のエラーの数を計算して取得したい。
logrt.count を使うとログファイルを監視して、正規表現にマッチした行数を取得できるらしい。
「Zabbixエージェント(アクティブ)」でキーを

logrt.count[/var/log/nginx/access.log,.*?" 2\d\d ]

にしてみる。
f:id:gae:20200529143443p:plain


これで行けるはずだけど zabbix_agentd.log を見ると

active check "log.count[/var/log/nginx/access.log,.*?" 2\d\d ]" is not supported: Unsupported item key.

"Unsupported item key" とのこと。
ログの上の方を見ると...

Zabbix Agent stopped. Zabbix 3.0.12 (revision 73586).

zabbix-agent のバージョンがむっちゃ古い。
Ubuntu 18.04 で普通にインストールした zabbix-agent はバージョンが 3.0 で logrt.count は 3.2 からの対応なので、新しいのにする必要がある。
↓ここを見てリポジトリを追加。

# wget https://repo.zabbix.com/zabbix/4.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.4-1+bionic_all.deb
# dpkg -i zabbix-release_4.4-1+bionic_all.deb
# apt update

zabbix-agent を upgrade する。

apt upgrade

zabbix_agentd.conf はそのままでも問題ないが、アップグレード中に警告がでていた。

dpkg: warning: unable to delete old directory '/var/log/zabbix-agent': Directory not empty

どうもログの場所が /var/log/zabbix-agent から /var/log/zabbix に変わったらしくて、古いディレクトリを消そうとしたらしい。
まぎらわしいので /var/log/zabbix-agent は削除しておく。

# rm -rf /var/log/zabbix-agent

これでアップグレードできたのでzabbix-agentを再起動してみると、またエラー出てる。

active check "logrt.count[/var/log/nginx/access.log,.*?" 2\d\d ]" is not supported: Cannot open file "/var/log/nginx/access.log.1": [13] Permission denied

zabbix がログにアクセスできない。zabbix を adm グループに追加。

# gpasswd -a zabbix adm

これでちゃんと動いた。