[memo][Gentoo] SNMP+RRDtool+cactiでサーバ監視


インストールまでは上手くいったけど設定に嵌って酷い目にあった。

以下のものが必要。

さくっとemergeするわけだが、USEフラグに注意。cactiにはapache2/snmp、phpにはapache2/snmp/sockets/mysqlあたりが必要(gdとかxmlも必須なのか?よくわらかんがこの辺は/etc/make.confでデフォルトで付けている)。

cacti用のデータベースとユーザを作成し、付属のスクリプトでテーブルを作成する。

mysqladmin -u root create cacti -p
mysql cacti -u root -p > /var/www/localhost/htdocs/cacti/cacti.sql
mysql -u root mysql -p -e"GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'p4ssw0rd'"
mysql -u root mysql -p -e"flush privileges"

次にphpのconfigファイルを、今設定したものに合わせて書き換える。

vi /var/www/localhost/htdocs/cacti/include/config.php
 $database_username = "cactiuser";
 $database_password = "p4ssw0rd";
useradd -g apache -d /dev/null -s /bin/false -c cacti cacti

ホームディレクトリを/dev/null、ログインシェルを/bin/falseにすることで、cactiというユーザでログインできないようにする。この辺は適当に手を抜いてrootでやったりすると怖いので忘れずに。次にcactiユーザでデータの読み書きするためにパーミションを変える。

chown -R cacti:apache /var/www/localhost/htdocs/cacti

全部変えちゃったけどrraとlogディレクトリだけでいいかも。未検証。

適当なタイミングでスクリプトをブン回す。とりあえず5分間隔に設定。

vi /etc/crontab
 */5 * * * * cacti   /usr/bin/php /var/www/localhost/htdocs/cacti/cmd.php > /dev/null 2>&1

ブラウザから http://hostname/cacti/ にアクセス。デフォルトのユーザとパスワードはadmin/admin。ウィザードが始まるがNext押していけばいい。adminのパスワードは適当なものに変更する。

色々設定するところがあるが、一番下にある参考URLらへんを参照。

ここでrrdtoolからACCESS DENIEDと言われてグラフが上手く表示されなかった。よくわからんがcactiでadminじゃなくてcactiというユーザを作り、User Management→cacti→Graph PermissionsでDenyをAllowにお変更してSave。Graph Managementからなんかグラフを選んで、右上の*Turn On Graph Debug Mode.をクリックするとログが見えるようになるので押してみる。今度は’rra/localhost_load_1min_5.rrd’: No such file or directoryとか怒られる。

見てみると確かにrraの下が空っぽなのでダメらしい。/var/www/localhost/htdocs/cacti/cmd.phpを実行してもエラーらしきものは出ておらず。しばらくココで嵌ったが、/var/www/localhost/htdocs/cacti/poller.phpを実行すればOKだった。1回目は前のデータがないので怒られるが、もう1度やると問題なく実行された。そのあとcactiからはちゃんと見えるようになった。