collectd のフロントエンドとして Cacti を使う

  • リソースデータ収集は collectd がとてもいい
  • だが collectd にはプレゼンテーション層が欠けている
  • Cacti のデータ閲覧 UI は(この手のフリーのもののなかでは)かなり良い
  • でも Cacti のデータソース管理 UI をいじるのは相当面倒

端的に言うと「Cacti の UI で collectd のデータを閲覧できたらなぁ」

collectdのデータをKDEデスクトップ上に表示したい場合は、kcollectdの利用を検討するとよい。誕生して間もないプロジェクトだが、すでに有用性が認められている。また、生成されたRRDtoolファイルはCactiでも利用できる。ただし、非常に長々とした設定をグラフ別に行う必要がある。

Webインタフェースでマシンを監視する4つの方法 (2/5) - ITmedia エンタープライズ

collectd は膨大な rrd ファイルを生成するので、これを手作業で Cacti にインポートしてってやるのも面倒だよなぁと思っていました。

すると Cacti のフォーラム Cacti • View topic - Cacti as a frontend for collecd? にて、collectd のデータを Cacti から閲覧できるようにするスクリプトがあったので、やってみました。Python 2.6 が必要と書いてあったけど、CentOS 5 に付属の Python 2.4.3 でもうまく動きました。

その結果がこちら。

んーずいぶんお手軽にできるものだなぁ。

ただ、このスクリプトにもいいところもあればわるいところもあります。

良い点
  • 設定いらず*1で collectd で扱っているデータをすべて*2グラフ化してくれる
  • 監視データの polling は collectd 側がやってくれるので Cacti 側の負荷は増えない(閲覧時にグラフを生成しているだけ)
  • Tree Mode にわざわざ Collectd というツリーをホストごとに掘ってくれる; 同一ホスト内の情報も適宜グループ化してくれる
イマイチな点
  • すべてのグラフの縦軸の項目名が「vertical_label」になってしまう(これは RRD ファイルに値の単位が記載されていないというしくみ上どうしようもないか; Cacti の管理画面で変更していけばいい)
  • collectd のデータ上、同じディレクトリに存在する rrd ファイルの値がまとめられてしまう(たとえば cpu の場合、idle, interrupt, nice, softirq, steal, system, user, wait)
    • このため、たとえば vmem のように vmpage_number-file_pages の値だけ突出しているグラフの場合、その他の値がグラフの下にべったり張り付いてしまい傾向をみることができなくなってしまう
  • 全部線グラフとなり、(適宜項目数におうじて色を変えてくれる*3が)塗りつぶし表現などなく平板な印象になってしまう
  • あとからある項目を追加したり、あるホストを追加したり、ということができない(もちろんスクリプトを書き換えればいけると思うけど)

とはいえ、これ一つで collectd のデータを簡単に見ることができるようになるのは事実。

Python で書かれているのが個人的にはちょっとつらいのだけれど、がんばって読み込んでみようかなぁ。

*1:実際には rrd ファイルの場所や Cacti のデータベース情報などの設定は必要だけど

*2:といっても irq と df はデフォルトで除外されるようになっています。それらも使うためにはちょこっと書き換えが必要。

*3:なにげによくできた機能ですが。