ラベル cacti の投稿を表示しています。 すべての投稿を表示
ラベル cacti の投稿を表示しています。 すべての投稿を表示

2010年1月7日木曜日

Windows上でcactiのpollerにspineを使うときのspine.conf

メモエントリ
 
 

WindowsでIIS+php+MySQLでCactiをセットアップして、pollerにspineを使おうとしてもデフォルトでは駄目。
 

spine.conf を見ると接続先 MySQLサーバ(host)の指定がlocalhostとなっており、そのままだとspineの仕様でunixソケットがないよといわれてこけるのだ。
 
 

127.0.0.1に変えるとよい。
 

2010年1月6日水曜日

Cactiでグラフが出ない -やたら長いOIDだとグラフ作成に失敗する-

CentOS5.4にyumでCactiを入れまして、Windowsサーバのネットワークトラフィック状況をグラフにしようとしたんだ。
 

しかし特に何も考えずにそのまま使おうとすると、SNMPクエリでOIDの一部をインデックス扱いするもののうち、その一部が255文字を超えるものはグラフ化出来ないので少々調べてみた。
 

ちなみにどういう場合に該当するかというと詳しい内容は省くが結構ある。
WindowsServer2003だと、NICのQoSを有効にしたらフレンドリ名が「(NICの名前)+パケットスケジューラ ミニポート」となる、この日本語がやたら曲者。
 
WindowsServer2008ではQoSを有効にしても英字で文字列が追加されたりと良くなっているが、もNIC周りをちょっといじればすぐフレンドリ名が長くなる。
突然「ローカル エリア接続 - 仮想ネットワーク」とかいうフレンドリ名が出来たりと余計になかなか。。。
 
 

結果、それがOctetStringでIOD一部として使われるとあっという間に長いOIDが完成。
 

SNMP Informantを使ったときにはそれがそのままインターフェイスの識別符号になるため困ってくるのだ。
せめて物理アドレスなりをインデックスにさせてくれればよいものを、SNMP Informantは最小限しかMIBを定義していない。
 

まあこんな感じになっちゃうのよね。
SNMP Informantでは networkInterfaceTable 以下のNetInstance(.1.3.6.1.4.1.9600.1.1.3.1.1) に続くOctetStringを各インターフェイスのインデックスとして使う。
 

「Microsoft Loopback Adapter」 ならこう。
 
netInstance.26.77.105.99.114.111.115.111.102.116.32.76.111.111.112.98.97.99.107.32.65.100.97.112.116.101.114
最初の26で文字数、後はASCIIなり。cacti用にインデックスとして扱える部分は77以降、94桁だね。
 

これ以降のOID、netBytesTotalPerSec とかでは末尾の文字列を参照しつつ、「Microsoft Loopback Adapter」 のものだと識別するわけだが。
 
 

これが「ローカル エリア接続* 2」(だと思う) ならこう。
netInstance.31.4294967267.4294967171.4294967213.4294967267.4294967171.4294967228.4294967267.4294967170.4294967211.4294967267.4294967171.4294967211.32.4294967267.4294967170.4294967208.4294967267.4294967171.4294967210.4294967267.4294967170.4294967202.4294967270.4294967182.4294967205.4294967271.4294967222.4294967194.42.32.50
 
インデックス用には300桁もいるじゃねーかよ!!
 
 


さてここらでCactiのグラフについて。
 

冒頭で説明した環境ではインデックス部になぜか 255桁しか入りません。つまり「New graph」作成の段階で桁が落ちちゃう。
これではそれ以降のSNMPクエリが出来ない(指定したOID+桁落ちしたインデックス用の数字でクエリ=UNKNOWN)ので、まったく値がrrdに突っ込めない。
 
 

これをインデックス扱いして使うにはMySQLでCactiテーブルの改造が必要だったのでその個所をメモっておく。
 
 

まずは[poller_item] のarg1,arg2,arg3。
ここのarg1にインデックスを入れるようになってるんだけど、これがTEXT型なのに255文字で切れている、切れたOIDが入っていたので多分ここだ。
細かい理由は調べてない、UTF8だからとかバッファ容量の関係とかそういう理由かな。。
MySQLのTEXT型の説明を少し見たけどややこしいのでよくわからん。
 

とりあえず全部varchar(512) に変えてみたら、グラフの設定はきっちりできた。
 
 

これ以降はどこをやればいいかはっきり調べてないが一応触った個所を。[poller_item]を最後に気付いたので、それまで結構いじってしまった。
もしかしたら後はまったくいじらなくてもいいかもしれないが、[data_local] ,[poller_reindex]あたりは怪しいかな。
 


  • [data_local] の [snmp_index] が varchar(255) だったので512にした。


  • [graph_local] の [snmp_index] が varchar(255) だったので512にした。


  • [host_snmp_cache] の[snmp_index] が varchar(255) だったので512にした..かったけどキーだったのでUTF8のままでは1024バイトの制限を超えちゃう。
    しかたないのでUTF8を諦めラテンにした。


  • [poller_reindex] の[arg1] が varchar(255) だったのでラテンで512。




 

とりあえずこれだけやればOKだった。
どれが必要かはちょっと精査してないが、もしも同じ悩みを持った人がいたら参考にしてちょ。
 
 

それにしてもMySQLのTEXT型は定義がややこしいな。
 

2009年12月25日金曜日

CactiからWindowsの情報を、ありものだけでグラフ化してみる

cacti のグラフが美しいので、普段やらないWindowsのSNMPから情報をグラフ化してみた。
 
 


なんかcactiはネットワーク機器とLinuxを見るような印象だったが、有りものだけでWindowsの情報を結構取れる。
実際どのくらいとれるのか紹介しとこう。
 



Windows側で仕込み


Cactiたっぷり情報取るには、標準のSNMPに加えてサードパーティ製のSNMPプロバイダを入れるといい。


 

有料版・無料版とあって、無料版ではCPU,メモリと論理HDDなどのパフォーマンスカウンタの情報を取ってくれる。
 

mibで見るとこんな感じ、これは頼もしそうな項目。。
 
[caption id="attachment_1625" align="alignnone" width="515" caption="画像:mibブラウザより"]画像:mibブラウザより[/caption]
 

有料のはほとんどのパフォーマンスカウンタオブジェクトに対応している、開発しんどいし買ってもいいくらい。
 
インストール要件は簡単、Windows標準のSNMPさえ入れておけばOK。
サーバ側の準備はこれでOK。
 
 



CactiにWindows用のテンプレートを追加


まあ色々あるけど、とりあえず良い感じなのを2つ。
 

さっきの「SNMP Informant」で追加されたMIBをゴリゴリ取ってくるテンプレート。

※最後の方の発言からZIPをダウンロードしよう。
 

特定プロセスのCPU・メモリ使用量をグラフ化する、まあおまけで。

 


これらを添付の手順に沿ってサーバにUP&インストール。
データクエリはサーバの "(cactiパス)/resource/snmp_queries" に、テンプレートはCactiの管理画面から入れよう。
Cactiの準備もこれでOK。
 
 


じゃあWindowsの状態をグラフにする


ここまでの準備を元にホストテンプレート、デバイス追加してデータクエリを軸に「Create New graph」するという作業になるけど割愛。
ではありものをぺたぺた貼って、このくらいグラフ化出来るよというSSをどうぞ。
 

でっかいので注意してくださいねー
 
[caption id="attachment_1626" align="alignnone" width="150" caption="画像:大きさ注意グラフ(627 × 9067)"]画像:大きさ注意グラフ(627 × 9067)[/caption]
 

結構とれてるでしょ?今回SSの相手は『WindowsServer2008R2 x64』だったが、2003(確認済)や2000(らしい)もOKだ。
 
 


Cactiでカスタマイズは結構ややこしいのだが、手軽にこれだけの情報がとれるといいね。