CentOS 5 で Cacti を使った監視サーバーを構築する時の基本を確認します。Cacti は SNMP などで取得した値を RRDtool に保存し、グラフとして見せる古典的な監視ツールです。現在の新規監視基盤としては別の選択肢が多いですが、古い環境の監視履歴を読む時には仕組みを理解しておく価値があります。
Cacti の構成要素
Cacti は単体で魔法のように監視するツールではありません。Web、DB、RRDtool、SNMP、cron によるポーラーが組み合わさって動きます。
- Apache / PHP による Web 画面
- MySQL による設定情報の保存
- RRDtool による時系列データ保存
- Net-SNMP による監視値取得
- cron による poller 実行
このため、画面が表示されない問題、グラフが空になる問題、値が古い問題は、原因がそれぞれ違います。Cacti を見る時は構成要素を分解して確認します。
パッケージとサービス確認
rpm -qa | egrep -i "cacti|rrd|snmp|mysql|httpd|php"
service httpd status
service mysqld status
service snmpd status
which rrdtoolCacti 本体だけでなく、Apache、MySQL、RRDtool、SNMP が揃っているかを確認します。古い環境では、パッケージ管理外の手動配置が混ざっている場合もあります。
データベースと設定ファイル
Cacti は設定情報を MySQL に保存します。接続情報は Cacti の設定ファイルに書かれているため、移行時には Web ファイルだけでなくデータベースも対象になります。
grep -R "database_" /var/www/cacti/include/config.php 2>/dev/null
mysql -u root -p -e "SHOW DATABASES;"
mysql -u root -p cacti -e "SHOW TABLES;"Cacti の移行では、RRD ファイル、MySQL データベース、設定ファイル、cron 設定をセットで扱います。どれか一つだけを移しても監視履歴やグラフが復元できないことがあります。
poller と RRD 更新確認
グラフが更新されない場合は、cron で poller が実行されているか、RRD ファイルの更新時刻が進んでいるかを確認します。
cat /etc/cron.d/cacti
grep cacti /var/log/cron
find /var/lib/cacti/rra -name "*.rrd" -mtime -1 2>/dev/null
php /var/www/cacti/poller.php手動で poller を実行するとエラーが見える場合があります。ただし、本番環境では実行ユーザーや権限が cron と違うと結果も変わるため、cron の実行ユーザーも確認します。
SNMP 取得確認
Cacti のグラフが空の場合、監視対象から値を取れていないだけのこともあります。Cacti 画面の前に、監視サーバーから直接 snmpwalk を実行して確認します。
snmpwalk -v2c -c public 192.168.1.10 sysName.0
snmpwalk -v2c -c public 192.168.1.10 ifDescrSNMPv2c の community 名は暗号化されません。広いネットワークに SNMP を晒して community 名で守る、という設計は弱いです。監視用ネットワークや ACL で送信元を制御することが前提になります。
まとめ
CentOS 5 の Cacti は、Apache、PHP、MySQL、RRDtool、SNMP、cron が組み合わさった監視基盤です。グラフだけを見るのではなく、値の取得、保存、描画、ポーラー実行を分けて確認すると、古い監視環境の状態を読み解きやすくなります。
関連する記事
- CentOS 5 サーバー管理ガイド
CentOS 5 系の記事を役割別に確認できるハブページです。 - CentOS 5 RRDtool インストール
Cacti が利用する時系列データ保存の基本です。 - CentOS 5 Net-SNMP 設定
監視値取得に使う SNMP 側の記事です。
参考書籍
古い Linux サーバーの記事を読み直す時にも、コマンドライン操作の考え方を確認しやすい参考書籍です。
Amazon で見る
