Debian Buster に Cacti をインストールする
ログをElasticSearch+Kibanaに集約したり、Prometheus を使ってみたりしたけれども、普通にサーバーのログファイル+Cactiに戻ってきた。
最近の流行は大量のサーバーとか大量のコンテナとかがメインターゲットなんだね。
普通に数台〜十数台のコンテナではないサーバーなら、ログファイルとCactiが一番使いやすそうということになった。
実際に長期間KibanaとPrometheusを試したわけではないから分からないけれども。
そういうわけでDebian BusterにCactiをインストールしたログ。
apt install cacti cacti-spine chown www-data:www-data /var/log/cacti/*
インストール時にログの所有者がwww-dataになっていないので手動変更する。
自動でapache2とmod-phpがインストールされる。
普段はnginxとphp-fpmを使っているけれど、自動インストールに任せたかったのでapacheのままにした。
/etc/apache2/conf-available/cacti.conf に設定があり、これだけで /cacti で既に利用できるようになっているけれども、sslとか独自サブドメインとかの設定をするなら普通にsites-availableを自分で用意する。
それから、SNMPは使わないので
Installing Percona Monitoring Plugins for Cacti
PerconaのCactiプラグインを入れる。このテンプレートで、SNMPの代わりにSSHで繋げる。
(NginxでもSSHしてからwgetするので、直接繋ぎたい場合は後でコマンドに --use-ssh 0 を付ける)
busterが無くstretchしか無いけれども、特に依存があるわけでもないのでstretch用パッケージで問題ない。
PostgreSQL
PostgreSQL Host Template - Cacti
PHP-FPM
GitHub - glensc/cacti-template-php-fpm: Cacti PHP-FPM template
どれもあまりメンテされてなさそうだけれども、使える。
cactiの過去グラフが平均化されないようにする方法 - Qiita
この辺も設定する。
tholdプラグインは、gitで取ってきて 2ea956d6 をインストール。
バージョンが合わない問題、バージョンタグが細かく打たれていない問題があるので、互換性がある最新のハッシュを探す必要があった。
v1.2のようにタグを決め打ちで取得すると、バグがかなりある。
2ea956d6 でも若干怪しい部分があるが、これ以上新しくすると互換性がなくなる。
それから
MAILER WARNING: Mail failed from... - Cacti
このようなエラーに対応する。
Debian公式パッケージになっているのに、バグがあるとはね…。
人気の無いパッケージのつらさよ。
まあでも一度動き始めれば使い続けられるという安心感があるし、PHPerなので多少のバグは自分で直せる。
色々試して、RRDTool だとディスク容量が増えない安心感があるということも実感した。
ログを3年保存とかにしても、設定直後にディスクが確保されるから、その時点で足りていれば大丈夫。
サーバー数が倍になる予定なら、あとから2倍の容量になるだろうという予測も簡単。
実際の設定反映はAnsibleにしている。
各ノードにはsshのログが大量に出るので、/etc/rsyslog.d/cacti.conf に
if \ ($msg contains 'Received disconnect from 192.168.0.10') or \ ($msg contains 'Disconnected from user cacti 192.168.0.10') or \ ($msg contains 'Accepted publickey for cacti from 192.168.0.10' ) then \ /var/log/cacti.log & ~
を追加して、/etc/logrotate.d/rsyslog に /var/log/cacti.log を追加したりといったことも自動化した。