複数ポイントの登録(Cacti)

今日は3週間ぶりの休みなので、12時過ぎまで寝てました。
昼からは、ipodが壊れてたので買い直しに行って購入、したのは良いんですが
最近のipodってカラーがホワイト=シルバーなんですねぇ…。
こんな事ならブラックを頼むべきだった。事前調査を怠った報いでしょうか。

今回はCactiで複数の機器or監視ポイントを追加する方法です。
CactiはデータベースにMysqlを使用し、GUIで操作が簡単に行えます。

また、多数のポイントをグラフ化するのに適しております。
CPU :Pentium4 3GHz
メモリ:1GB
HDD :シリアルATA(RAID1)
経験から言うと、上記仕様でトラフィックポイントが3000ポイント程度でしょうか。
これらの追加作業をGUI操作では非常に面倒くさいんですが
海外で、追加をコマンドラインで実施する為のスクリプトが公開されてます。

Cacti Forum
http://forums.cacti.net/

以上のフォーラム内で公開されているスクリプトを、teratermマクロで自動追加する分です。
シェルスクリプトを作成してサーバ上で実行した方が早いんですが
作成当時、スクリプトの存在(作成できる云々の次元ではない)を知ってるのが
当方だけという職場だったもので…。

;監視サーバ(Cactiをインストールしているサーバ)にssh接続を実施
connect ‘サーバのIPアドレス /ssh /auth=passwd /user=ユーザ名 /passwd=ユーザパスワード’

;telnetの場合
;connect “IPアドレス:23 /nossh”
;wait ‘login’
;sendln ‘ユーザ名’
;wait ‘Password’
;sendln ‘パスワード’
;wait ‘ホスト名’

wait ‘ユーザ名’
;管理者(root)に移行
sendln ‘su -‘
wait ‘Password’
sendln ‘ルートパスワード’
wait ‘root’

;追加するホスト名とIPアドレスを記入したファイルを展開
;例ではCドライブ直下に記載テキストファイル(add_device.txt)が
;あると仮定します。
fileopen infp ‘c:\add_device.txt’ 0
if infp = -1 goto owari
:loop

;ホストID
filereadln infp inbuf
if result goto fclose
dscrpton=inbuf
;IPアドレス
filereadln infp inbuf
if result goto fclose
addres=inbuf
;ホストテンプレートID
;ID番号はcactiデータベース内host_templateテープルを参考にして下さい。
;例えば、”Local Linux Machine”は8です。
filereadln infp inbuf
if result goto fclose
graphid=inbuf
;SNMPバージョン
filereadln infp inbuf
if result goto fclose
snmpver=inbuf
;SNMPコミュニティ。デフォルトの”public”のままな機器はない…はず。
filereadln infp inbuf
if result goto fclose
snmpcom=inbuf

;監視サーバに保存した追加スクリプト(add_device.php)に
;追加に必要な情報(ホスト名、IPアドレス)を送って追加させます。
;今回は/var/www/html/cacti/cli/に保存したと仮定します。
sendln ‘/usr/bin/php /var/www/html/cacti/cli/add_device.php –description=’dscrpton’ –ip=’addres’ –template=graphid –avail=snmp –version=snmpver –community=snmpcom’
wait ‘root’

;ループします
goto loop

;終了処理
:fclose
fileclose infp

;sendln ‘exit’
;wait ‘ホスト名’
;sendln ‘exit’
:owari
end

1.監視対象機器の登録(add_device)

必要な情報
・ホスト名
グラフに表示される機器名称。実際のホスト名とは別でOK
・IPアドレス
そりゃそうだ。サブネットマスクは不要。
・SNMPバージョンとコミュニティ
SNMPで数値データを取得するので必要。

以上の情報に加えて、ホストテンプレートIDが必要です。
これは適当でも不具合は起こしませんが、次項で紹介するadd_graphs.ttlを動かすには
監視対象グラフテンプレートが該当機器に登録されてないとならないので
取得するつもりのグラフテンプレートがあるホストテンプレートを選ぶのが吉です。
もし、全ての監視対象グラフを賄うテンプレートがないなら自分で作っちゃった方が良いです。

<解説>
基本的にはttlファイル内にコメントで記入しており、
テキストファイルを開けばわかるかと思いますので割愛。

ホストテンプレートID一覧(デフォルト)
1.Generic SNMP-enabled Host
3.ucd/net SNMP Host
4.Karlnet Wireless Bridge
5.Cisco Router
6.Netware 4/5 Server
7.Windows 2000/XP Host
8.Local Linux Machine

;;監視サーバ(Cactiをインストールしているサーバ)にssh接続を実施
connect ‘サーバのIPアドレス /ssh /auth=passwd /user=ユーザ名 /passwd=ユーザパスワード’

;telnetの場合
;connect “IPアドレス:23 /nossh”
;wait ‘login’
;sendln ‘ユーザ名’
;wait ‘Password’
;sendln ‘パスワード’
;wait ‘ホスト名’

wait ‘ユーザ名’
;管理者(root)に移行
sendln ‘su -‘
wait ‘Password’
sendln ‘ルートパスワード’
wait ‘root’

;追加するホスト名とIPアドレスを記入したファイルを展開
;例ではCドライブ直下に記載テキストファイル(add_device.txt)が
;あると仮定します。
fileopen infp ‘c:\add_device.txt’ 0
if infp = -1 goto owari
:loop

;新規追加するグラフID。
;ID番号はcactiデータベース内graph_templatesテープルを参考にして下さい。
;例えば、”Interface – Traffic (bits/sec)”は2です。
filereadln infp inbuf
if result goto fclose
graphid=inbuf
;ホストID。
filereadln infp inbuf
if result goto fclose
hostid=inbuf

;監視サーバに保存した追加スクリプト(add_graphs.php)に
;追加に必要な情報(追加対象のホストID)を送って追加させます。
;また、追加するグラフID等も必要です。
;ここではインターフェース0のトラフィック(graphidを2)のIn/Out Bits(–snmp-query-type-id=13)としてます。
sendln ‘/usr/bin/php /var/www/html/cacti/cli/add_graphs.php –graph-type=ds –graph-template-id=’graphid’ –host-id=’hostid’ –snmp-query-id=1 –snmp-query-type-id=13 –snmp-field=ifIndex –snmp-value=2′
wait ‘root’

goto loop

;終了処理
:fclose
fileclose infp

sendln ‘exit’
wait ‘k.isomoto’
sendln ‘exit’
:owari
end

2.監視対象ポイントの登録(add_graph)
必要な情報
・ホスト名
監視対象のホストID。cactiデータベース内hostテーブルを参考にしてください。
・グラフID
追加するグラフID。cactiデータベース内graph_templatesテーブルを参考にしてください。

以上の情報に加えて、トラフィックの取得とかだと対象インターフェースの指定とかもあります。

<解説>
基本的にはttlファイル内にコメントで記入しており、
テキストファイルを開けばわかるかと思いますので割愛。

また、本家Cactiを翻訳して日本語版を作成しておられる方がいます。

ももーい鯖

http://www.momo-i.org

http://svn.momo-i.org/viewvc/cacti-ja/?pathrev=68

自分も上記のようなものを作りたいと思いつつ、仕事に追われる毎日です。