unoh.github.com

cacti の設定をコマンドラインから行う方法

Sun Feb 07 18:00:32 -0800 2010

こんにちは。kyagi です。今回は cacti の設定をコマンドラインから行う方法をお知らせいたします。

cacti とはサーバの監視/グラフ化ツールです。CPU使用率やロードアベレージ、その他様々な情報をカラフルなグラフで見ることができます。

設定は主にブラウザ上から行うのですが1台のサーバの設定でもSNMPの各項目を選択したり、グラフのデータ元であるデータクエリを設定したりなかなかの作業量になります。設定内容は全て把握していても 1 台につき、マウスでクリックする回数が多いので数十台の追加となると時間もかかりますし、指もかなり疲れます(また、ヒューマンエラーも入り込む余地が生まれます)。

cacti にはこういった設定をコマンドラインから行える php スクリプトが用意されています。標準ではこれらのスクリプトは /var/lib/cacti/cli/ 配下にインストールされています。これらのスクリプトの使用方法は --help オプションをつけると表示されますが、html 版のドキュメントも用意されています。

■cacti の設定をコマンドラインから行える php スクリプト

$ rpm -ql cacti | grep cli | grep php$
/var/lib/cacti/cli/add_data_query.php
/var/lib/cacti/cli/add_device.php
/var/lib/cacti/cli/add_graph_template.php
/var/lib/cacti/cli/add_graphs.php
(...snip...)


■上記 php スクリプトのヘルプドキュメント

$ rpm -ql cacti | grep cli | grep html$
/usr/share/doc/cacti-0.8.7e/docs/html/cli_add_data_query.html
/usr/share/doc/cacti-0.8.7e/docs/html/cli_add_device.html
/usr/share/doc/cacti-0.8.7e/docs/html/cli_add_graph_template.html
/usr/share/doc/cacti-0.8.7e/docs/html/cli_add_graphs.html
(...snip...)


以下にこれらのスクリプトを使用して newserver というサーバを追加していく例を紹介いたします。

1.まず、追加するサーバのタイプ(Web サーバだったり、DB サーバだったりします)を指定するための template の id を調べます。

$ sudo -u cacti php /var/lib/cacti/cli/add_device.php --list-host-templates
Valid Host Templates: (id, name)
0	None
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
9	X DB Server HT
10  	WebServer - Apache
11	Memcached Server
12	X Nginx Server HT


2. ここでは template としてシンプルな None を選びます。template が決まったので add_device.php で device を追加します。ここでの cacti の出力の device_id の 90 が以下に使う「--host-id」に渡す値になります。

$ sudo -u cacti php add_device.php --description=newserver --ip=10.0.0.123 --version=2 --avail=pingsnmp --community=public --template=0
 
Adding newserver (10.0.0.123) as "None" using SNMP v2 with community "public"
Success - new device-id: (90)


3. Data Query を追加します。サンプルとして以下 3 つ(SNMP interface, ucd/net Get Mount, SNMP Get Mount Partitions) を追加します。「--host-id」に先ほどの値 90 を使用します。

$ sudo -u cacti php add_data_query.php --host-id=90 --data-query-id=1  --reindex-method=1 #SNMP interface
$ sudo -u cacti php add_data_query.php --host-id=90 --data-query-id=2  --reindex-method=1 #ucd/net Get Mount Partitions
$ sudo -u cacti php add_data_query.php --host-id=90 --data-query-id=8  --reindex-method=1 #SNMP Get Mont Partitions


4. Graph Template を追加します。サンプルとして CPU 使用率、ロードアベレージ、メモリ使用量を追加します。グラフテンプレートIDは「--list-graph-templates」オプションで見ることができます。

$ sudo -u cacti php add_graph_template.php --host-id=90 --graph-template-id=4  #ucd/net CPU Usage
$ sudo -u cacti php add_graph_template.php --host-id=90 --graph-template-id=11 #ucd/net Load Average
$ sudo -u cacti php add_graph_template.php --host-id=90 --graph-template-id=13 #uce/net Memory Usage


5. Graph を追加します。サンプルとして CPU 使用率、ロードアベレージ、メモリ使用量を追加します。

$ sudo -u cacti php add_graphs.php --host-id=90 --graph-template-id=4 --graph-type=cg
$ sudo -u cacti php add_graphs.php --host-id=90 --graph-template-id=11 --graph-type=cg
$ sudo -u cacti php add_graphs.php --host-id=90 --graph-template-id=13 --graph-type=cg


使い方がわかればこれらをバッチ処理で実行するスクリプトを作成して更に効率化することも可能です。
http://github.com/kyagi/cacti-add-device-helper.rb/blob/master/cacti-add-device-helper.rb