I.總覽
Cacti 和Nagios的監控體系可以說是使用廣泛而且支持豐富的國內外的運維人員都需要掌握的一套監控體系,這套體系的好處在於使用Cacti的強大畫圖和自定 義畫圖能力,以及Nagios的可控報警。但是網上的大部分內容都是如何安裝,在安裝成功如何使用的方面介紹的很少,而真正開始用之后,為了工作需要就需 要不斷地去Cacti官網查看使用文檔,或者論壇去翻別人的帖子,十分麻煩。於是我決定寫一篇使用方面的手冊,以讓大家真正會用這套系統。
II.Cacti的使用
Cacti的常用服務器的畫圖大部分都是使用模板的形式做的,而Cacti安裝好之后本身自帶了一部分模板,這些模板雖然可用,但是支持的項目太少,於是我們要尋求更多的模板以及更優化的內容。
Cacti的官方的模板庫:http://docs.cacti.net/templates
2:如何在Cacti上添加一個新主機並監控相關的內容:(以添加Linux主機為例) 1.創建畫圖 a. 在Cacti的Web頁面Console->Import Templates導入響應的xml模板文件。b. 在Linux上cacti/resource/snmp_queries中放入模板相關的xml數據收集文件。並確保屬主和屬組均為cacti。 c. 點擊Console->Devices,打開設備管理頁面。 d. 點擊右上角的add,添加一個新的機器 e. 當主機的信息填好之后,點擊Create h. 添加好相應的模板之后點擊Save。此時左上角會出現Save Successful. 2.在Graphs界面顯示新添加主機。 a. 在Cacti Web界面Graph Trees中,選擇相應的列(或者系統默認的Default Tree)。 |
III.Cacti的常用模板
1.Windows常用模板 為了解決基本的監控項,我們需要以下模板。 我們還需要在Windows主機上安裝一個軟件,以確保SNMP能發送更多的信息為我們提供數據采集:informant-std-16.exe 使用A模板來監控Windows的CPU項目
|
2.Linux常用模板 |
3.Switch && Router的相關模板 |
IV:自定義腳本的添加以及監控
很多時候,我們需要為我們獨有的環境去指定監控內容,那么如何制定呢?就可以通過自己寫腳本的方式進行收集數據。這里我用一個監控QQ在線人數的例子來舉例。
准備工作:
這個里面只有最后一行是有用的,其他的為curl的抓取信息。
|
1.創建數據輸入方式
1. 在Console-->點擊Data Input Methods
2. 點擊右上角的Add,添加一個新的數據獲取方式
3. 點擊Create,出現新的項目
4. 新的項目包括Input Fields和Output Fields,即輸入內容和輸出內容,輸入內容其實就是向腳本傳遞函數,我們這個腳本不需要傳遞什么參數進去,於是沒有,只有Output Fields。
5. 在Output Fields上點擊Add,添加新的輸出內容。
6. 在Field[Output]中輸入我們腳本的輸出項:這里我填寫“QQ_Now”
7. 在Friendly Name中輸入解釋輸出項的內容,內容隨意。
8. 勾選Update RRD File后,點擊Create
9. 然后查看我們整個的數據獲取方式信息,點擊Save,左上角應出現“Save Successful”
2.創建數據源
1. 在Console->點擊Data Sources,進入數據源界面
2. 點擊右上角的Add,添加新的數據源
3. 確保Data Template和Host均為None。直接點擊Create
4. 在新出現的信息面板中輸入相關內容
5. 點擊Create,此時左上角會出現Save Successful
6. 注意系統自動給生成的RRD文件路徑,確保里面不會出現連續兩個反斜線的路徑信息。如果出現,請手動修改為一個反斜線。如:/1194.rrd
7. 點擊Save,看到Save Successful,則數據源創建成功。
3.創建圖像
1. 選擇Console--> Graph Management,進入圖像管理
2. 點擊右上角的Add,添加一個新的圖像
3. 選擇Graph Template以及Host均為None,然后點擊Create
4. Title中輸入圖像的名字,其他保持不變。並點擊Create
5. 然后你會看到多出的Graph Items,以及中間有一個看不到圖的紅叉,因為這個圖我們還沒有定義。
6. 在Graph Items中點擊Add,添加畫圖規則。
7. 添加完畫圖內容之后,點擊Create/Save,返回之前的頁面,接下來還要添加數據的展示內容。
8. 再次點擊Graph Items中的Add,這次添加的是數據的展示,展示當前值。
9. 設置好后點擊Create創建這個項目,然后按照這個方法,分別創建最大值,最小值,平均值的展示內容。
10. 添加好后內容如圖。
4.將自定義好的圖形,加入到Graphs面板
1. 在Cacti Web界面Graph Trees中,選擇相應的列(或者系統默認的Default Tree)。
2. 進去Tree之后,點擊右上角的Add,添加一個新的顯示項。
3. 在Tree Item Type中選擇Graph,然后在下面的Graph中選擇我們剛才創建的圖像。點擊Create。
4. 此時,再進入Graphs界面,就可以看到在Default Tree下已經出現了我們新創建的圖像。
V.Cacti問題 Q & A
1.填完Drivers信息之后顯示紅色的SNMP error
這是由於被監控機的SNMP設置問題,沒有允許我們監控機進行監控,或者Community不匹配導致的。
Linux可以在/etc/snmp/snmpd.conf中修改/增加發送snmp的機器,以及community。
Windows可以在Snmp服務中增加允許發送snmp的機器,以及community。
2.添加完圖之后,等待了無數時間圖依然無法繪制,反饋給我們一個紅色的X。
首先,如果你是用添加的模板創建的圖,那么顯示不了的話,很有可能是由於模板太老,或者模板不正確導致的。可以考慮更新作者的最新模板以重新畫圖。當然,如果圖像的確畫不出來,那么我們可以打開畫圖的Debug日志的方式進行排錯。
進入Graph Management,在Host中選擇我們畫不出圖的那個Host,然后點Go,這樣就在下面列出了所有在這個Host中的圖像列表, 點擊那個無法畫圖的列表。這就進入了我們選定主機的相關圖像的設置界面,我們應該可以看到這個界面下方依然有一個紅X,證明我們無法畫圖,所以點擊右上角 的“Turn on Graph Debug Mode.”來打開Debug日志,這時候,就可以看到頁面下方多出 了"RRD Tool Command:"的列表,里面詳細的描述了RRD工具是如何為我們畫圖的,這都不是關鍵,關鍵是最后的 RRD Tool Says:比如
這里面是RRD Tool 告訴的我們為什么它無法畫圖,我們可以看到我當前例子的沒有畫圖的原因是316.rrd這個文件不存在,說明在創建的時候rrd沒有正確的創建出這個文件,這就有可能是所用的模板有問題了。
在這里,這是一個很好的查看為什么沒有畫出圖的地方,沒有畫出的圖RRD Tool會一一的告訴我們,我們只需要根據它說的來修正,直到RRD Tool Says: OK
3.圖什么的都有,但是數據都是N/A,這是要鬧哪樣?
這個的解決辦法其實跟無法畫圖的解決一樣,就是我們去看數據的Debug日志。
進入Data Sources,在Host中選擇沒有數據的Host,然后在下面的列表中選擇沒有數據的那個圖。進入數據設置界面,然后點擊右上角的“Turn on Data Source Debug mode”,然后去分析它的報錯。
4.在給主機添加Data Query的監控項的時候發現里面沒有獲取到數據。
這時候,如果它獲取不到數據,我們就無法給它畫圖。因為在給它創建的圖的界面上顯示沒有內容。
這時候可以直接點擊上圖中的Debugging下的相關內容,直接打開Debug查看狀態。
這時就可以看到反饋出得信息,比如上圖,發現SNMP無法獲取數據。當然也有其他的,比如MIB文件不存在。只要你仔細看它反饋出來的問題,知道問題的根源,就一定能解決。當解決了數據獲取之后,可以直接點擊右邊的綠色的小圓圈,就刷新了數據的獲取狀態。
5.關於cacti下文件的權限問題。
Cacti目錄中的內容權限並不統一,而且權限要求的也很少,並不像其他的比如Nagios要求的那么多。我們可以簡單的保持整個Cacti目錄的屬主和屬組都是Cacti即可。但是有兩個特殊的例外:
第一個是cacti/rra目錄,整個目錄里的內容是RRD的畫圖文件自動在里面生成的。而生成之后里面文件的屬主和屬組到底是誰,取決最終是由哪個用戶 來創建的,而這個就是在Cacti的那個crontab里控制,如果我們使用的是root用戶添加的crontab,那么這個rra目錄中的內容屬主和屬 組都是root。同理,如果我們的crontab是在cacti中設置的,那么rra目錄中的內容屬主和屬組都是cacti。
第二個目錄是cacti/scripts目錄,這里面存的大部分都是我們自定義的腳本,一定要確保里面的腳本是cacti用戶可執行的。最好的檢測方法就是su到cacti用戶中,進入這個目錄,手動運行一下腳本,查看腳本是否成功執行。