Cacti は SNMP を使用してクエリを実行し、データを収集することがわかっています。私の知る限り、SNMP マネージャーはオブジェクト ID (OID) を使用して特定のオブジェクトについてクエリを実行し、その OID に関する SNMP エージェントからの応答を取得します。
私が混乱しているのは、Cacti がデータを収集するためにどのように egperl
またはpython
スクリプトを使用するかということです。SNMP を使用するのでしょうか。使用する場合は、プロトコルはどのように機能しますか。
答え1
SNMP クエリだけCacti
に限定されません。
データ入力方法として、独自のスクリプトを実行することもできます。Perl
、PHP
、などPython
、Bash
何でもかまいません。 スクリプト/コマンド入力タイプを選択するだけです。
スクリプトは少なくとも 1 つの値を出力する必要があります。この値は出力フィールドに添付されCacti
、後で最終的なグラフを作成するために使用されます。
出力フィールドが 1 つだけ必要な場合は、値をそのまま (例12
) 出力し、他に何も出力しません (例ms
、%
)。
#!/bin/sh
ping -c1 host | grep rtt | cut -d"=" -f2 | cut -d"/" -f2
複数の値を取得する必要がある場合、出力形式は次のようになります。
field1:value1 field2:value2 field3:value3
次に、各フィールドが出力フィールドに添付されます。
#!/bin/sh
result=$(ping -c1 host | grep rtt | cut -d"=" -f2)
min=$(echo $result | cut -d"/" -f1)
avg=$(echo $result | cut -d"/" -f2)
max=$(echo $result | cut -d"/" -f3)
echo "min:$min avg:$avg max:$max"
詳しい説明と例はこちらをご覧ください:
- http://www.cacti.net/downloads/docs/html/making_scripts_work_with_cacti.html
- http://forums.cacti.net/viewtopic.php?t=11288(作者によってメンテナンスされなくなりましたが、まだ非推奨ではありません)。