最近在重寫cacti的template,做一個簡單的筆記,不然過幾年我又忘了。
我們針對的是script_server的部份
1、通常是把scripts找一個適合的出來改。
cp ss_cisco_temperature.php test.php
vi test.php
把
function ss_cisco_temperature 上面都刪除。
但要載入必要的library,通常我會再加一點料,這樣要測試的時候比較好測試。
error_reporting(0);
include_once(dirname(__FILE__) . '/../include/global.php');
include_once(dirname(__FILE__) . '/../lib/snmp.php');
$cmd = "get";
$arg1 = "rbnEntityTempCurrent";
$arg2 = "104.1";
$hostname = "1.2.3.4";
$host_id = "30";
$result = ssr_temperature($hostname, $host_id, "2:161:5000:1:10:iiiseed:::::: ", $cmd, $arg1 , $arg2 );
print_r($result);
$cmd有兩種:index, num_indexes,
$arg1有兩種:query (walk全部) get (get一個值)
如果$arg1是get的話,$arg2要填入你要查的oid。
之後要測試的時候很簡單,
把查詢的查參數改掉就好。
$result = ssr_temperature("139.175.240.150", "52", "2:161:5000:1:10:public:::::: ", $cmd, $arg1 = '', $arg2 = '');
php test.php
就可以驗證測試結果,把index,num_indexes, query arg2,get arg2
都各測一輪就差不多了。稍微看一下輸出的格式是否跟其它檔案或者與你預期的是否相符。
index就要列出所有的index
num_indexes要計算有幾個index
query arg1(descr) ,通常是列出所有index及其對應的descr
query arg1(value) ,通常是列出所有index及其對應的value
以下兩個如果沒有show出來 (我的範例是沒有的,要自己print_r($result);
get arg1(descr) arg2(oid),先snmpwalk所有的index如果有相符的再秀出其oid對應的descr
get arg1(value) arg2(oid),取出該oid對應的value
之後就是調校data query, data template, graph template,通常我是duplicate其它的template後再進行修改。
在cacit 1.2.x版,有一個我常常忘記的設定,在建立data query時,需要Associated Data Templates,在建立Data Source後,後方的check box記得勾選,不然不會生效。
最後要提醒一下,把test.php還原成ssr_temperature.php時,我們會把前面的檔頭加回去,print call_user_func_array('ssr_temperature', $_SERVER['argv']); 這一行記得要更新成你命名的function 名稱,不然在執行時就無法執行了。
沒有留言:
張貼留言