Cacti的安裝配置-SNMP代理
Cacti 安裝配置:回大綱
Net-SNMP 的一個強大功能就是你可以對它進行擴展:
讓我們運行一下 /tmp/foo.sh 腳本:
- $ /tmp/foo.sh -arg1123
現(xiàn)在把如下這行添加到 snmpd.conf 文件中:
- exec foo /bin/sh /tmp/foo.sh -arg1
現(xiàn)在,腳本的返回結果可以通過 ucdavis.extTabel.extEntry 樹:
腳本的輸出: ucdavis.extTable.extEntry.extOutput
退出的狀態(tài): ucdavis.extTable.extEntry.extResult
命令:
- ucdavis.extTable.extEntry.extCommand
你可以使用如下的 SNMP 查詢對結果進行檢測:
- $ snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.8.1UCD-SNMP-MIB::extIndex.1 = INTEGER: 1UCD-SNMP-MIB::extNames.1 = STRING: fooUCD-SNMP-MIB::extCommand.1 = STRING: /bin/sh /tmp/foo.sh -arg1UCD-SNMP-MIB::extResult.1 = INTEGER: 0UCD-SNMP-MIB::extOutput.1 = STRING: 123UCD-SNMP-MIB::extErrFix.1 = INTEGER: 0UCD-SNMP-MIB::extErrFixCmd.1 = STRING:
extOutput 翻譯 .1.3.6.1.4.1.2021.8.1.101 指令后,"foo" 是我們的第一個執(zhí)行指令,在 OID 的最后增加了 .1。
在 Cacti 中,可以按如下方法使用 "SNMP - Generic OID Template" :
之后你會驚喜的發(fā)現(xiàn) /tmp/foo.sh 腳本的執(zhí)行結果在Cacti中被圖形化輸出了。
現(xiàn)在,讓我們執(zhí)行第二個腳本,這個腳本會返回多于一個結果:
- $ /tmp/bar.sh456789
這個腳本返回了兩個值,每個值一行(這一點很重要)。
另一個在 snmpd.conf 中調用腳本的辦法是指定一個 OID ,如下文所示:
- exec .1.3.6.1.4.1.2021.555 /bin/sh /tmp/bar.sh
執(zhí)行這個查詢:
- $ snmpwalk -v 1 -c public localhost .1.3.6.1.4.1.2021.555UCD-SNMP-MIB::ucdavis.555.1.1 = INTEGER: 1UCD-SNMP-MIB::ucdavis.555.2.1 = STRING: "/bin/sh"UCD-SNMP-MIB::ucdavis.555.3.1 = STRING: "/tmp/bar.sh"UCD-SNMP-MIB::ucdavis.555.100.1 = INTEGER: 0UCD-SNMP-MIB::ucdavis.555.101.1 = STRING: "456"UCD-SNMP-MIB::ucdavis.555.101.2 = STRING: "789"UCD-SNMP-MIB::ucdavis.555.102.1 = INTEGER: 0UCD-SNMP-MIB::ucdavis.555.103.1 = ""
腳本返回的第一行可以通過 .1.3.6.1.4.1.2021.555.101.1 進行訪問,第二行可以通過 .1.3.6.1.4.1.2021.555.101.2 進行訪問,以此類推。
之后你就可以使用 Cacti 的 "SNMP - Generic OID Template" (每個 OID 一個數(shù)據(jù)源)。
假如你想同意一個日志文件中的條目數(shù),那么添加如下內(nèi)容到 snmpd.conf 中:
- logmatch cactistats /home/cactiuser/cacti/log/cacti.log 120 SYSTEM STATS
(符合條件的全局統(tǒng)計數(shù)可以通過 OID .1.3.6.1.4.1.2021.16.2.1.5.1 進行訪問;符合條件的 "正則匹配數(shù)" (通過每個文件特征重置) 可以通過 OID .1.3.6.1.4.1.2021.16.2.1.7.1 進行訪問)。
使用下面的查詢,可以列出所有能夠訪問的變量:
- $ snmpwalk -v 1 -c public localhost logMatchUCD-SNMP-MIB::logMatchMaxEntries.0 = INTEGER: 50UCD-SNMP-MIB::logMatchIndex.1 = INTEGER: 1UCD-SNMP-MIB::logMatchName.1 = STRING: cactistatsUCD-SNMP-MIB::logMatchFilename.1 = STRING: /home/cactiuser/cacti/log/cacti.logUCD-SNMP-MIB::logMatchRegEx.1 = STRING: SYSTEM STATSUCD-SNMP-MIB::logMatchGlobalCounter.1 = Counter32: 301634UCD-SNMP-MIB::logMatchGlobalCount.1 = INTEGER: 301634UCD-SNMP-MIB::logMatchCurrentCounter.1 = Counter32: 6692UCD-SNMP-MIB::logMatchCurrentCount.1 = INTEGER: 6692UCD-SNMP-MIB::logMatchCounter.1 = Counter32: 1UCD-SNMP-MIB::logMatchCount.1 = INTEGER: 0UCD-SNMP-MIB::logMatchCycle.1 = INTEGER: 120UCD-SNMP-MIB::logMatchErrorFlag.1 = INTEGER: 0UCD-SNMP-MIB::logMatchRegExCompilation.1 = STRING: Success
現(xiàn)在,讓我們使用另外一個有趣的指令, "proxy"。 以 Squid 代理為例:啟用時,SNMP 代理會偵聽 UPD 3401端口。如果你想在Cacti中繪制系統(tǒng)圖形和Squid圖形,但是又不想Cacti中聲明這兩個設備,那么,在 snmpd.conf 中添加如下內(nèi)容:
- proxy -v 1 -c public localhost:3401 .1.3.6.1.4.1.3495.1
Squid SNMP 樹可用通過訪問 .1.3.6.1.4.1.3495.1 獲取。
對這個主機進行查詢:
- $ snmpwalk -v 1 -c public 10.151.33.3 sysdescrSNMPv2-MIB::sysDescr.0 = STRING: Linux srv1.foo.com 2.6.8.1-12mdk #1 Fri Oct 1 12:53:41 CEST 2004 i686
下面是如何輸出 Squid 部分(指定的 OID 會返回 Squid 版本):
- $ snmpwalk -v 1 -c public 10.151.33.3 .1.3.6.1.4.1.3495.1.2.3.0SNMPv2-SMI::enterprises.3495.1.2.3.0 = STRING: "2.5.STABLE6"
如果你想知道如何開啟 Squid SNMP 代理,那么,請參照其他文章。
【編輯推薦】