oranie's blog

旧:iをgに変えると・・・なんだっけ・・・

cactiでSNMPで取得した値を使い独自グラフを作成するメモ。

http://docs.cacti.net/manual:087:3a_advanced_topics.3b_snmp_data_query_walkthrough#snmp_data_query_walkthrough
を見るのが一番確実。

とりあえず最低限のグラフを作成する場合にやらなければいけない手順をタスクレベルでメモ。

以下はCactiを既に使っていて、テンプレートさえあればグラフを追加出来るレベルの人を想定しています。


今回自分で独自に作成したグラフは、ある製品にポートが1〜n個まであって各ポートでどれくらい応答まで掛かっているか
マイクロ秒での平均値をSNMPで取得してグラフ化する手順です。
もちろん上記の情報はMIBで定義されていて、OIDを指定すればsnmpwalk等で情報が取得出来る製品でやりました。

まず一番大事なのは英語のマニュアル、及びサバカンのフォーラムをしっかり読みましょうw
それをちゃんとやれば問題無く出来ると思います。
一番初めに書いたURLの内容を飽きるまで読み返せば、下に書いている事は読む必要無いと思います。
また、その内容の流れに沿ったメモレベルです。

                                                                                                                                                                                            • -


1.取得する値を定義したXMLファイルを作る。
大事なのはinputとoutputという二つのカテゴリーの定義。
inputはグラフ管理を行う際に使う値?
outputは実際にグラフ描画に用いる値?


2.作成したXMLファイルをDataQueriesに設定する。
作成したXMLファイルを/resource/snmp_queries/配下にアップして、
DataQueriesのaddでcactiに追加する。


3.Cactiから定義したsnmp queryが実行出来るか確認する。
「Successfully located XML file.」が出て読み込み保存が完了したら、一度deviceを作成し、
Associated Data Queriesを実行してsnmpで値がちゃんと取得出来るか確認する。


4.data templateを定義する。この時Data Input Methodは複数の項目を作成するので、
Get SNMP Data (Indexed)を選択すること。
Internal Data Source NameにXMLのoutputで定義した項目名を設定する。


5.Graph Templatesを定義する。
取得した値をどのようにグラフに描画するか定義する。
大事なのはGraph Template ItemsとGraph Item Inputsぐらいだと思う。
他はデフォルトでもちゃんと動いている気がする。確か。


6.再度Data Queriesで定義したGraph Templatesを設定する。
これで定義したした通りにグラフが作成されるはず!
超初歩的だけど大事な事として、Data Queries内のGraph Templatesの設定を確認し、
Data Source:項目のチェックボックスにチェックが入っている事を確認する。
これが付いていないと永久にグラフ作られません。

Suggested Valuesはグラフのタイトルに使う項目をXMLで定義した値を利用して
設定する部分なので、

Field Name: name
|host_description| - 好きなタイトル - |query_XMLで定義した項目名|

Field Name: title
|host_description| - 好きなタイトル - |query_XMLで定義した項目名|

と設定すると、
ホスト名 - 好きなタイトル - 取得した項目名(例えばデバイス名とか)
でグラフが作成・表示される。


以上で、下準備が完了。
あとは、deviceに対象のホストを追加して、グラフを作る設定をしてみて駄目だったら
今までの手順を見直しましょう。あと、切り分け方法としては
グラフが作成されるはずの場所の右にある工具マークみたいなアイコンで表示される
rrdtoolのコマンドを実行してみて、エラーメッセージを読むと結構幸せになれます。


1.そもそも対象のrrdファイルが作成されていない→値を出力する設定に漏れがある可能性が高いです。
rrdファイルが作成されないと空っぽのグラフすら作成されず、画像が表示されなくて空白のままです。


2.rrdファイルはあるが rrdtool fetch ファイル名 LAST 等のコマンドで中身を確認すると
値がnanしか無い→取得するOIDが間違っているとか、templatesで定義している項目名が間違っているなど。


3.期待している様な数値までちゃんと入っているのが確認出来るがグラフが空っぽなまま。
→Graph Templatesの設定が間違っているか、処理に時間が掛かっているかグラフの表示範囲を最小30分とかにして見ましょう。


この内容は気が向いたら今後もっと整理しよう。