FANCOMI Ad-Tech Blog

株式会社ファンコミュニケーションズ nend・新規事業のエンジニア・技術ブログ

Cactiで好きなグラフだけ集めたダッシュページを作る

最近はいろいろなグラフ化ツールが出ています。 例えば、GrafanaとかKibanaとかあります。 人気の理由の一つに、自分でダッシュボードを作成できるというのもあるかと思います。

さて、我らがCactiにもそんな機能は、・・・・・・ないですね。 なんとかCactiでもダッシュボードを作成できないのでしょうか?

問題1.グラフのフィルター機能の不足

Cactiには複数のグラフを表示させる時に以下の3つのフィルターが利用できます。

  • Host (複数選択不可)
  • Template (複数選択不可)
  • Search (文字列の部分一致)

cacti_index

たとえば、スイッチAのポートGi1/0/1とスイッチBのポートGi1/0/1を一つのページで見たい時、どうなるでしょうか?

  • Hostでフィルターをかけようとしても、一つのHostしか選択できないため、上手くいきません。
  • Templateでフィルターをかけようとし、Interface - Traffic(bit/sec) というのを選ぶと、Gi1/0/1だけでなく、全てのインターフェースが表示されてしまいます。
  • SearchでGi1/0/1とフィルターをかけるとGi1/0/10も一緒に表示されたりします。

TemplateとSearchを組み合わせると、ある程度ましなフィルターができる場合もあるのですが、なかなか期待通りの一覧が出せないことが多いです。

問題2.Cactiサーバ1台ごとしか見れない

Cactiサーバが複数ある時、それを同時に表示できません。

GREEさんのブログCacti による監視サーバ分散の仕組みというのが紹介されていますが、普通はパッとはできません。 さすがGREEさん、凄いなーと思う次第です。

なお、Cactiロードマップによると、Cacti 1.1.0にDistributed and remote pollingという機能が予定されています。 ただ、ここ数年0.8.8から変化ないので・・・・・・。

ちなみにさっき知ったのですが、2015年3月9日にmultipollerserverというプラグインが公開されていました。 複数Cactiサーバの連携に使えるかもしれません。

解決編

上記の2つの問題を解決する方法があります。 しかも、超簡単なローテクです。 サーバ側の変更は不要です。 自分のPCでHTMLファイル一つ作れば終わりです。

ネタ元はこちらです:Generating graphs for a remote webpage

おもむろにエディタを開いてhtmlファイルを書きましょう。 以下のhtmlコードを表示させたいグラフの数だけ書いてください。

[html] <a href="http://[Cacti-Server-1]/cacti/graph.php?action=view&rra_id=all&local_graph_id=[Graph-ID]"> <img src="http://[Cacti-Server-1]/cacti/graph_image.php?local_graph_id=[Graph-ID]&rra_id=5&graph_width=300&graph_height=100&graph_nolegend=true"> </a> [/html]

  • [Cacti-Server-1]は、自分のCactiサーバのアドレスを書いてください。
  • [Graph-ID]は、そのグラフのgraph_idを書いてください。

CactiのグラフにはそれぞれGraph-IDがついていて、以下の方法で確認できます。

graph_id

または、実際のグラフの上にカーソルを持ってくるとURLにgraph_idが入っていたりします。

graph_id1

これで好きなグラフの一覧が好きなだけ作れますね!

sample_page2

こんな感じで簡単に作れます!

まあ私のデザインはアレですが、機能的に問題ないでしょう。 Cactiのダッシュボードとは言えないかもしれませんが、思う存分HTML,CSS,JavaScriptを書けば思うがままですね?

なお、<META HTTP-EQUIV="Refresh" CONTENT="300">を書けば、5分で自動更新できます。

オフィスのディスプレイで重要なメトリックを表示させ続けるのもいいかもしれません。