利用cacti提供的api接口可以進行添加查詢監控
這些api腳本放在cacti的cli目錄下面:
/web/cacti02/cli
編寫腳本循環調用下面這些api腳本,就可以達到批量添加的效果,省去大量的人力和時間
add_data_query.php add_device.php add_graphs.php add_graph_template.php add_perms.php add_tree.php
下面我們來實踐添加一次cacti監控的過程:
1.添加設備
/usr/local/php/bin/php /usr/local/web/cacti02/cli/add_device.php --description="設備名稱" --ip="設備ip" --avail=snmp --version=2 --community="snmp的團體名" --template="模板id"
如果你不知道模板id的話可以利用這個腳本的查詢功能得到:
/usr/local/php/bin/php add_device.php --list-host-templates
直接運行該腳本可以看到更多參數,我就不一一解釋了:
/usr/local/php/bin/php add_device.php Add Device Script 1.0, Copyright 2004-2012 - The Cacti Group A simple command line utility to add a device in Cacti usage: add_device.php --description=[description] --ip=[IP] --template=[ID] [--notes="[]"] [--disable] [--avail=[ping]] --ping_method=[icmp] --ping_port=[N/A, 1-65534] --ping_retries=[2] [--version=[1|2|3]] [--community=] [--port=161] [--timeout=500] [--username= --password=] [--authproto=] [--privpass= --privproto=] [--context=] [--quiet] Required: --description the name that will be displayed by Cacti in the graphs --ip self explanatory (can also be a FQDN) Optional: --template 0, is a number (read below to get a list of templates) --notes '', General information about this host. Must be enclosed using double quotes. --disable 0, 1 to add this host but to disable checks and 0 to enable it --avail pingsnmp, [ping][none, snmp, pingsnmp] --ping_method tcp, icmp|tcp|udp --ping_port '', 1-65534 --ping_retries 2, the number of time to attempt to communicate with a host --version 1, 1|2|3, snmp version --community '', snmp community string for snmpv1 and snmpv2. Leave blank for no community --port 161 --timeout 500 --username '', snmp username for snmpv3 --password '', snmp password for snmpv3 --authproto '', snmp authentication protocol for snmpv3 --privpass '', snmp privacy passphrase for snmpv3 --privproto '', snmp privacy protocol for snmpv3 --context '', snmp context for snmpv3 --max_oids 10, 1-60, the number of OID's that can be obtained in a single SNMP Get request List Options: --list-host-templates --list-communities --quiet - batch mode value return
添加好設備後我們就可以爲設備添加圖像了,首先我們通過api獲取到剛剛添加的設備的id號:
host_ids=`/usr/local/php/bin/php add_graphs.php --list-hosts | grep "設備名稱" | awk -F " " '{print $1}'`-直接運行add_graphs.php -l
直接運行add_graphs.php --list-hosts會輸出所有的設備信息,通過grep篩選出剛剛添加的設備名稱,再通過awk截取id列,這些是shell的基礎我就不多做解釋了
有了設備的id號我們就可以爲該設備添加圖像:
/usr/local/php/bin/php /usr/local/web/cacti02/cli/add_graphs.php --host-id="設備id" --graph-type=cg --graph-template-id="圖像模板id"
圖像的模板id可以通過--list-graph-templates查到,和設備的模板id查詢方法類似
最後就到樹的構建了,首先我們添加最外層的樹,如果已經有的話,可以通過add_tree.php --list-trees查到樹的id,如果沒有則:
/usr/local/php/bin/php add_tree.php --type=tree --name="樹名"
然後我們添加樹下的節點:
/usr/local/php/bin/php add_tree.php --type=node --tree-id="樹的id" --node-type=header --name="節點的名稱"
如果我們不需要添加節點,而是直接就在樹下添加主機,那樣把上面語句的--node-type=header 改成--node-type=host就可以了
如果是直接在樹下添加圖像,那樣把--noed-type=header改成--node-type=graph
添加好節點後我們可以選擇在該節點下添加主機或圖像:
主機:
/usr/local/php/bin/php add_tree.php --graph-id="圖像的id" --type=node --node-type=host --tree-id="樹的id" --parent-node="節點的id"
圖像的id可以通過如下語句查出:
/usr/local/php/bin/php add_tree.php --list-graphs --host-id="設備id" |grep "該樹的名稱" |awk -F " " '{print $1}'
節點的id可以通過如下語句查出:
/usr/local/php/bin/php /usr/local/web/cacti02/cli/add_tree.php --list-nodes --tree-id="樹的id" |grep "N/\A.*節點的名稱" |awk -F " " '{print $2}'
如果是添加圖像的話把--node-type=host改成--node-type=graph就可以了
通過循環批量執行如上步驟,就能批量添加cacti的監控,有興趣的可以嘗試下,下面貼上一個別人寫的比較簡單的添加腳本希望能夠加深你們的理解:
#!/bin/bash #by 崔元榮 #QQ:295749093 #cacti批量加監控 #讀取IP列表 host_ips=`cat ips.txt` for host_ip in $host_ips do #添加cacti設備 php add_device.php --description="$host_ip" --ip="$host_ip" --template=3 --version=2 --community="public" #讀取設備ID host_ids=`php add_graphs.php --list-hosts | grep $host_ip | awk -F " " '{print $1}'` #創建模板圖像 php add_graphs.php --host-id="$host_ids" --graph-type=cg --graph-template-id=4 php add_graphs.php --host-id="$host_ids" --graph-type=cg --graph-template-id=11 php add_graphs.php --host-id="$host_ids" --graph-type=cg --graph-template-id=13 #創建網卡數據圖像 php add_graphs.php --host-id="$host_ids" --graph-type=ds --graph-template-id=2 --snmp-query-id=1 --snmp-query-type-id=16 --snmp-field=ifDescr --snmp-value="eth0" php add_graphs.php --host-id="$host_ids" --graph-type=ds --graph-template-id=2 --snmp-query-id=1 --snmp-query-type-id=16 --snmp-field=ifDescr --snmp-value="eth1" #創建分區數據圖像 php add_graphs.php --host-id="$host_ids" --graph-type=ds --graph-template-id=26 --snmp-query-id=8 --snmp-query-type-id=18 --snmp-field=hrStorageDescr --snmp-value="/" php add_graphs.php --host-id="$host_ids" --graph-type=ds --graph-template-id=26 --snmp-query-id=8 --snmp-query-type-id=18 --snmp-field=hrStorageDescr --snmp-value="/data" php add_graphs.php --host-id="$host_ids" --graph-type=ds --graph-template-id=26 --snmp-query-id=8 --snmp-query-type-id=18 --snmp-field=hrStorageDescr --snmp-value="/usr/local" php add_graphs.php --host-id="$host_ids" --graph-type=ds --graph-template-id=26 --snmp-query-id=8 --snmp-query-type-id=18 --snmp-field=hrStorageDescr --snmp-value="Memory Buffers" php add_graphs.php --host-id="$host_ids" --graph-type=ds --graph-template-id=26 --snmp-query-id=8 --snmp-query-type-id=18 --snmp-field=hrStorageDescr --snmp-value="Real Memory" php add_graphs.php --host-id="$host_ids" --graph-type=ds --graph-template-id=26 --snmp-query-id=8 --snmp-query-type-id=18 --snmp-field=hrStorageDescr --snmp-value="Swap Space" #添加設備到相應的組 php add_tree.php --host-id="$host_ids" --type=node --node-type=host --tree-id=2 done