Cacti 增加 IPMI 模組

監控Server是自己建置伺服器很重要的一環,甚至對於MIS來說算是基本功了.而尚未進入大學殿堂前就用過一段時間的MRTG來Monitor主機與TECOM的AR4031B.所以專題訓練就是去深化SNMP結合Cisco的NetFlow與wethermap來架構一套學網用的監控系統.更有趣的是畢業後還走進東訊,對我自己來說也算是玩得有始有終阿~哈哈.

當然科技應用的演進,MRTG什麼的已經不是主流了,堆疊這些技術上來的就是今天要整理的CACTI.Cacti是一套透過RRDtool實現GUI的整合套件,而RRDtool是MRTG作者基於改善MRTG的下一代技術,不過實際上要部屬首先就得面對他難以理解的資料格式,還好有了cacti幫我們解決了苦差事.

本文分兩個部分 1.介紹與安裝 Cacti 並設定抓取流量 2.增加 IPMI Module for Cacti

對於Ubuntu的使用者來說只要apt-get去安裝基本套件就會幫忙Setup起來,不過php-snmp default僅會裝置client的部分,因為我們還需要監控自己本機的流量,所以還是裝全套.而因為最主要是c2550d4i這塊板子支援IPMI需要透過ipmitool來抓取Sensor的資訊,之前就已經透過apt-get來安裝過.

scottj@ubuntu:~$ sudo apt-get install cacti
...
scottj@ubuntu:~$ sudo apt-get install snmpd
...
scottj@ubuntu:~$ sudo apt-get install ipmitool
...
ps.如果你自動去安裝cacti前尚未裝過MySQL,安裝中途會出現提示要您設定或是輸入MySQL administrative account password.

cacti_1

裝好後即可直接到您Host URL去初始化Cacti, 如 http://localhost/cacti 這部分主要參考這裡的文章: 軟體開箱文~~系統效能監控軟體Cacti 安裝
這來是把snmpd給enable,文中一大堆的設定,可能是我套件版本較新,只有對於 /etc/snmp/snmpd.conf 如下修改:

39
40
41
42
43
44
45
46
47
48
49
50
51
###############################################################################
#
#  ACCESS CONTROL
#
 
                                                 #  system + hrSystem groups only
view   systemonly  included   .1.3.6.1.2.1.1
view   systemonly  included   .1.3.6.1.2.1.2view   systemonly  included   .1.3.6.1.2.1.25.1
 
                                                 #  Full access from the local host
#rocommunity public  localhost
                                                 #  Default access to basic system info

再來就是試著用snmpwalk爬爬看,如果有下列包含主機的interface列出來即是成功.

scottj@ubuntu:/usr/share/cacti$ snmpwalk -v 2c -c public localhost 1.3.6.1.2.1.2
iso.3.6.1.2.1.2.1.0 = INTEGER: 6
iso.3.6.1.2.1.2.2.1.1.1 = INTEGER: 1
iso.3.6.1.2.1.2.2.1.1.2 = INTEGER: 2
iso.3.6.1.2.1.2.2.1.1.3 = INTEGER: 3
iso.3.6.1.2.1.2.2.1.1.4 = INTEGER: 4
iso.3.6.1.2.1.2.2.1.1.5 = INTEGER: 5
iso.3.6.1.2.1.2.2.1.1.6 = INTEGER: 6
iso.3.6.1.2.1.2.2.1.2.1 = STRING: "lo"
...

最後就是把他掛上cacti,到console device 裡 add, 完成下列選項後就可以點取Create Graphs for this host 來建圖.
cacti_2

cacti_3

完成後再到Graph Trees –> Default Tree 去把新的這個Host add進來就可以在 graphs 裡看到瞜!

cacti_4

 

再來就是把IPMI sensor 給掛進來,這樣才能監看主機的溫度與風扇轉速電壓等等的資訊.當然往海上也是有先輩完成了該模組 Eric A. Hall – IPMI Sensor Readings 這邊除了有開放檔案下載外,還很貼心的把用到的工具方法和安裝步驟寫得很清楚.主要是透過ipmitool這個工具來抓取,也可以先直接下cmd來驗證是否可抓取成功,以下為我自己的範例:
scottj@ubuntu:/usr/share/cacti$ ipmitool sdr -H 192.168.1.2 -U "admin" -P "passwd"
+5VSB | 5.01 Volts | ok
+3VSB | 3.44 Volts | ok
Vcore | 0.73 Volts | ok
VCCM | 1.51 Volts | ok
+1.1V | 1.07 Volts | ok
+1.0V | 1.01 Volts | ok
BAT | 3.20 Volts | ok
+3V | 3.30 Volts | ok
+5V | 5.04 Volts | ok
+12V | 12.30 Volts | ok
CPU_FAN1 | no reading | ns
REAR_FAN1 | no reading | ns
FRNT_FAN1 | 1100 RPM | ok
FRNT_FAN2 | no reading | ns
REAR_FAN2 | no reading | ns
CPU_FAN2 | no reading | ns
MB Temperature | 61 degrees C | ok
CPU Temperature | 56 degrees C | ok
scottj@ubuntu:/usr/share/cacti$
接下來就是把IPMI Sensor Reading掛上來瞜,大致上的幾個安裝步驟:
1.解壓縮”tar -xvzf cacti-ipmitool-sensors.tar.gz”並切換至建立的目錄cacti-ipmi-sensors
2.拷貝scripts/ss_ipmitool_sensors.php到/scripts/底下,原始ubuntu套件則在/usr/share/cacti/site/scripts/
3.resource底下的三個.xml檔案也依序拷貝至/resource/script_server/並直接修改檔案裡面ipmi_username ipmi_password這兩個欄位替換成ipmitool要去存取的user name和password. (這裡的 ubuntu 預設安裝路徑 /usr/share/cacti/resource/script_server/)
4.再來由cacti的web console裡”Import Templates”去餵templates底下的示範檔案.有8x字樣是可以把多個sensor的值放到同一張圖裡.建議可以先由data query開始.
5.接下來一樣就由cacti的web來添增物件,由console –> device 來建或是在原有的host裡新增:

cacti_5

當然如果像我這樣不幸剛好遇上FAN命名與原本的開發環境不同,就會有抓不到風扇的問題:

scottj@ubuntu:/usr/share/cacti$ php /usr/share/cacti/site/scripts/ss_ipmitool_sensors.php 192.168.2.2:admin:admin fan query sensorname
PHP Notice: Undefined index: name in /usr/share/cacti/site/scripts/ss_ipmitool_sensors.php on line 413
1:

比對開發者Eirc的圖,看到FAN的命名規則和我的不太一樣,問題應該就是出現在這邊,好在找了一下論壇上也已經有先進解決了.

cacti_6

修改”/usr/share/cactisite/scripts/ss_ipmitool_sensors.php”:

287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
                #
                # use regex to locate the sensor name and value
                #
                # exit if no match found (not all text values are errors)
                #
 
                #if (preg_match("/^(.+?)\s+\|.+\|.+\|.+\|\s([\-|\.|\d]+)\s/",
                if (preg_match("/^(.+?)\s+\|.+\|.+\|.+\|\s([\-|\.|\d]*).*\s/",                        $ipmitool_response, $scratch) == 0) {
 
                        $sensor_count++;
                        break;
                }
 
                #
                # matches were found so use them

搞定收工!

 

Reference:
http://www.eric-a-hall.com/software/cacti-ipmitool-sensors/
http://download.ithome.com.tw/article/index/id/288
Cacti 透過 SNMP 取得主機溫度及風扇轉速
http://forums.cacti.net/viewtopic.php?f=12&t=11593&start=45

Facebook Comments
Scottj Written by:

史考特 喜歡3C 愛拍照