2022年7月15日 星期五

cacti手動撰寫script建立template

最近在重寫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 名稱,不然在執行時就無法執行了。


沒有留言:

張貼留言