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


2022年7月13日 星期三

cacti Cisco IOSXR ASR temperature and Ericsson(Redback) SmartEdge/SSR temperature

 之前在cacti 0.8.x有寫過Cisco IOSXR ASR temperature and Ericsson(Redback) temperature。自己寫的原因是在網路上找不到。

但換成cacti 1.2.x後就不能用了。找了一陣子看過了幾年有沒有人放出來,但還是找不到。

本來想要修一修舊的就好,但修的不太順,索性寫個新的版本,希望下次cacti大改版時還能用啊。

Cisco的部份主要只有在ASR 9010測試過,理論上ASR 9006應該也可以。

但我沒有寫get的部份,在realtime的部份也許不能用(等要用再來修吧)

https://github.com/tiserle/cacti_asr_temperature

ericsson的部份比較麻煩,有限制版本。在SmardEdge的部份,SEOS6是一定不能用的(snmpd沒有吐資料),SEOS12可以用,SEOS11我手邊沒有得測,所以不知道,我猜可以。

最麻煩的是SSR ,在IPOS 18可以用,但要調cacti的參數,原因是他們的snmpd被snmpwalk爬時忘了設定limit,會一路爬到timeout,此外SSR對於snmpd的priority設定的很低,常常就不回資料,要等一下才行。如果要用的話記得在設備中的snmp timeout盡量拉長。這個是用snmp index寫的,比較簡單,但變化自然就比較少。

https://github.com/tiserle/cacti_ericsson_redback_temperature

後來手癢寫了script-server的版本,但同樣的,在設備中的snmp timeout還是要拉到50000 (50秒)才行。

https://github.com/tiserle/cacti_ericsson_redback_temperature