cacti不能獲取數據或者顯示圖經常碰到的問題

一、snmp和網絡是否正常

    通過在cacti服務器上運行snmpwalk   -c    public    -v  2c    ip,能夠正常返回數據,排除snmp和網絡的問題。

 注意:-c    後跟共同體名   public爲community名,此處可變,需根據自己環境設置進行更改!

       -v    snmp版本

       ip    爲被監控端的IP

       

 

二、查看cacti全局參數設置

    經查看cacti全局參數設置中的路徑,採集器等均沒有問題。

 

三、檢查cacti服務器上rra和log的目錄權限

    查看rra和log目錄屬主均是web程序運行用戶,有對rra和log目錄的讀寫權限,沒有問題。進入rra目錄,發現所有圖像文件的修改日期均是前幾天的,也就是說最近都沒有獲取到數據,更新到rra文件;進入log目錄,發現cacti.log文件達到2G,log不記錄東西了,mv cacti.log cacti.log.old,重新生成cacti.log,故障依舊。

 

四、檢查cacti.log

    snmp能夠獲取到數據,rra和log權限也均沒有問題,爲什麼還不能獲取到數據呢?

    開啓cacti全局設置中的詳細日誌,tail -f cacti.log查看日誌,發現有很多類似日誌:

    WARNING: Result from CMD not valid.  Partial Result:

    這是cacti採集器沒有獲取到相關主機的返回數據。同時發現有如下日誌:

    Maximum runtime of 292 seconds exceeded. Exiting.

    是說在一個循環週期內(5min),cacti沒有獲取完所有的數據,自動退出,執行下一循環,

    應該是有太多主機了,同時有很多主機無法連接上超時,導致最終採集器時間超過292s自動退出。

    決定採用cactid來代替cmd.php採集,同時清理數據庫中poller_item中的無效,無法連接上,配置錯誤的記錄(重要,可根據cacti.log中得知哪些主機或記錄有問題)。

 

五、配置cactid

    新版的叫spine。安裝配置cactid:

    tar -zxvf cacti-cactid-0.8.6j.tar.gz

    cd cacti-cactid-0.8.6j

    ./configure (mysql另外安裝的需要指安mysql路徑)

    make

    mkdir /usr/local/cactid

    cp cactid cactid.conf /usr/local/cactid/

    vi /usr/local/cactid/cactid.conf修改爲相應的數據庫的用戶名和密碼。

    全局配置中設置採集器爲cactid,並設置好cactid的路徑:/usr/local/cactid/cactid

 

    能夠正常獲取到數據了,查看cacti.log:

    02/12/2011 11:31:03 AM – CACTID: Poller[0] Time: 55.2049 s, Threads: 1, Hosts: 25

    …

    02/12/2011 11:32:04 AM – CACTID: Poller[0] Time: 113.7014 s, Threads: 1, Hosts: 25

    二分鐘即能獲取到所有的主機數據了,效率提升不少。故障解決。

 

六、如以上還不能解決故障,可通過手動運行:php /var/www/html/cacti/poller.php 查看輸出來找到問題所在。



=======================================

cacti安裝測試過程中不能顯示圖形:(2011-09-13)

cd /var/www/html/cacti/log

tail -f  cacti.log

顯示如下:

09/13/2011 01:10:03 PM - SYSTEM STATS: Time:1.4293 Method:cmd.php Processes:1 Threads:N/A Hosts:3 HostsPerProcess:3 DataSources:17 RRDsProcessed:11

09/13/2011 01:14:01 PM - CMDPHP: Poller[0] Host[1] DS[11] WARNING: Result from CMD not valid.  Partial Result: U

09/13/2011 01:14:01 PM - CMDPHP: Poller[0] Host[1] DS[11] WARNING: Result from CMD not valid.  Partial Result: U

處理過程如下示:

最後的解法是將 cmd.php 做 chmod a+x 就可以了。

後記:那時感覺很奇怪,poller.php已經指定用php去run,後來想想,可能poller.php內又直接呼叫cmd.php,並未只名為php script。

=================================cacti的排錯經驗=========================


cacti出不了數據,一般從以下幾個方面入手解決問題

1。確認你的cacti主機上能否得到目標機器上的snmp數據
cacti得到目標機器上的統計數據分爲兩種方法,一種是遠程通過snmp協議獲取、一種是本地機器通過shell腳本獲取。

2。確認你的crontab計劃任務有在正常運作
cacti是通過crontab的定時作業每隔一段時間獲取數據的,如果定時作業沒有運作,肯定也是讀取不到數據的

3。確認你的crontab定時作業所執行的作業能獲取信息
cacti獲取信息用的是poller.php定時運作,然後根據你設置的是用php腳本來執行snmp獲取還是cactid來獲取,所以,你必須確認你的php能支持php的snmp擴展、或者確認你有正確設置cactid。推薦使用cactid,效率比通過php高10~20倍。

4。確認你的rrdtool的版本
rrdtool1.0.x版本和1.2.x版本有着比較大的差別,在cacti裏面要正確設置你的rrdtool的版本。比較容易出現的錯誤就是你的rrdtool是1.2.x版本,而cacti默認的rrdtool版本爲1.0.x版本,如果是這樣的話,你的數據收集是正常的,不過由於rrdtool的版本變化導致的命令處理格式的一點差別,cacti的縮微圖會畫不出來的,而具體的圖片時可以畫出來,這個,大家要留神一下。

5。當然了,要保證cacti收集的數據能被儲藏在你的機器上,要保證收集的數據能被httpd服務讀取

以上是我個人對cacti的trouble shooting的一些認識,請各位補充指正。

  將cacti安裝好按例子進行配置,想到得到第一個hellow world這樣的例子時,常常也會遇到不少的問題,最可能的就是無圖,或者有圖無數據。
  先說無圖吧,主要是檢查先確定你的IP地址、snmp comunite、snmp version等信息配置沒有錯誤,如果都沒有錯誤,那麼你確定才一個採集週期(一般默認採集週期300秒)以後去檢查rra目錄,看是否有相應的rra文件生成,如果是新安裝,本來rra目錄只有一個.placeholder文件。你只要關注以rra爲文件後綴的文件即可。如果沒有那麼一是rra文件權限,windows是ntfs和linux等下有這個問題,其它就檢查snmp的設置。


解決cacti中無圖或無數據的問題

snmpwalk -v 2c -c public yourIP if


 如果有數據返回,則snmp的數據沒有問題。如果出現“Timeout: No Response from ...”之類的錯誤信息則是snmp設置的問題。

  再說有圖無數據吧,一般這樣的情況就是snmp採集的結果有問題。這種情況下,一般也會出現新建的device的Data Query裏面的狀態總是“ Success [0 Items, 0 Rows]”。通過執行snmp命令來檢查:

snmpwalk -c community -v 2c hostIP if


  通過結果可以看到是否允許cacti取這些OID的數據。
eg:

snmpwalk -c public -v1 192.168.0.221 .1.3.6.1.2.1.2.2.1.16.2

當cacti 有圖沒有數據時,而且狀態爲nan錯誤解決辦法

解決辦法:

   1.
[root@codfei rra]# pwd
/usr/local/apache2/htdocs/cacti/rra
[root@codfei rra]# rrdtool fetch fxd-mdl11_traffic_in_365.rrd AVERAGE
按照以上命令執行如果結果輸出爲:
1197990600:   nan   nan
1197990900:   nan   nan
1197991200:   nan   nan
1197991500:   nan   nan
1197991800:   nan   nan
1197992100:   nan   nan

則表示snmp獲取
數據有問題,經過仔細檢查發現不能獲取流量的主機都是64位系統,
用以下命令檢查:
[root@codfei rra]# snmpwalk -c public -v 2c 192.168.1.2 IF-MIB::ifHCInOctets
輸出內容如下,表明不支持64位MIB庫,終於找到原因了。
IF-MIB::ifHCInOctets = No Such Object available on this agent at this OID

2,需要重新安裝snmpd支持64位MIB庫,不過正常用源碼包安裝時在make的時候會出現error,無法繼續,
解決方法:
在源碼包下config後,先不要make,請先修改以下兩個文件。

[root@codfei net-snmp-5.3.1]# vi apps/Makefile
TRAPDWITHAGENT   = $(USETRAPLIBS) -ldl -lrpm -lrpmio -lpopt   -lz -lcrypto -lm
替換成:
TRAPDWITHAGENT   = $(USETRAPLIBS) -ldl -lrpm -lrpmio /usr/lib64/libpopt.so   -lz -lcrypto -lm

[root@codfei net-snmp-5.3.1]# vi agent/Makefile
LIBS          = ../snmplib/libnetsnmp.$(LIB_EXTENSION)$(LIB_VERSION) -ldl -lrpm -lrpmio -lpopt   -lz -lcrypto -lm   $(PERLLDOPTS)
替換成:
LIBS          = ../snmplib/libnetsnmp.$(LIB_EXTENSION)$(LIB_VERSION) -ldl -lrpm -lrpmio /usr/lib64/libpopt.so   -lz -lcrypto -lm 
然後在進行make && make install

3,停止當前linux自帶的snmpd,通過daemoonls啓動新安裝的snmpd就能了。
   這時在用snmpwalk檢測,支持64位MIB庫了,過一會流量監視的圖片也出來了!
[root@codfei rra]# snmpwalk -c public -v 2c 192.168.1.2 IF-MIB::ifHCInOctets
IF-MIB::ifHCInOctets.1 = Counter64: 2400309170
IF-MIB::ifHCInOctets.2 = Counter64: 256326257624
IF-MIB::ifHCInOctets.3 = Counter64: 0
IF-MIB::ifHCInOctets.4 = Counter64: 624808037429
IF-MIB::ifHCInOctets.5 = Counter64: 0
IF-MIB::ifHCInOctets.6 = Counter64: 0
IF-MIB::ifHCInOctets.7 = Counter64: 0
IF-MIB::ifHCInOctets.8 = Counter64: 0

   Cacti監控遠程服務器問題解決

使用模板ucd/net - Memory Usage,檢測局域網內別的機器發現有圖,但是無數據,都是nan,
cacti log有如下錯誤 
04/22/2009 02:10:08 AM - CMDPHP: Poller[0] Host[7] DS[44] WARNING: Result from SNMP not valid.   Partial Result: U
04/22/2009 02:10:08 AM - CMDPHP: Poller[0] Host[7] DS[43] WARNING: Result from SNMP not valid.   Partial Result: U
04/22/2009 02:10:08 AM - CMDPHP: Poller[0] Host[7] DS[42] WARNING: Result from SNMP not valid.   Partial Result: U
04/22/2009 02:10:08 AM - CMDPHP: Poller[0] Host[7] DS[41] WARNING: Result from SNMP not valid.   Partial Result: U
04/22/2009 02:10:08 AM - CMDPHP: Poller[0] Host[7] DS[40] WARNING: Result from SNMP not valid.   Partial Result: U
04/22/2009 02:10:08 AM - CMDPHP: Poller[0] Host[7] DS[39] WARNING: Result from SNMP not valid.   Partial Result: U

於是
wget ftp://mirror.switch.ch/pool/1/mirror/scientificlinux/5rolling/i386/SL/net-snmp-utils-5.3.1-24.el5_2.1.i386.rpm
安裝獲得snmpget snmpwalk snmpbulkwakl snmpgetnext

snmpwalk -v 2c -c public your_remote_ip if 
錯誤: 
Timeout: No Response from your_remote_ip 

於是修改snmpd配置 並啓動snmpd
com2sec notConfigUser   default   public--->com2sec notConfigUser   your_snmpd_server_ip public 
#view all     included   .1   80---->view all     included   .1   80 

snmpwalk -v 2c -c public your_remote_ip system ok
但 
snmpwalk -v 2c -c public your_remote_ip if 
錯誤: 
IF-MIB::ifTable = No Such Object available on this agent at this OID

於是再次修改snmpd.conf,並重啓snmpd
access   notConfigGroup ""       any       noauth     exact   systemview none none-->
access   notConfigGroup ""       any       noauth     exact   all     none none

再次snmpwalk -v 2c -c public your_remote_ip if
ok

再訪問頁面終於圖和數據出來了


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章