I.總覽
Cacti和Nagios的監控體系可以說是使用廣泛而且支持豐富的國內外的運維人員都需要掌握的一套監控體系,這套體系的好處在於使用Cacti的強大畫圖和自定義畫圖能力,以及Nagios的可控報警。但是網上的大部分內容都是如何安裝,在安裝成功如何使用的方面介紹的很少,而真正開始用之後,爲了工作需要就需要不斷地去Cacti官網查看使用文檔,或者論壇去翻別人的帖子,十分麻煩。於是我決定寫一篇使用方面的手冊,以讓大家真正會用這套系統。
本文不包含任何Cacti和Nagios的安裝工作,如需安裝,請移步: 本文用的Cacti版本爲最新的 0.8.7i |
II.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. k. 選擇好需要畫圖的項目後,點擊右下角的Create,左上角會出現被創建出來的畫圖項。 2.在Graphs界面顯示新添加主機。 a. 在Cacti Web界面Graph Trees中,選擇相應的列(或者系統默認的Default Tree)。 |
III.Cacti的常用模板
1.Windows常用模板 1. CPU Use 2. Memory Use 3. Disk Size 4. Interface Traffic 爲了解決基本的監控項,我們需要以下模板。 我們還需要在Windows主機上安裝一個軟件,以確保SNMP能發送更多的信息爲我們提供數據採集:informant-std-16.exe 使用A模板來監控Windows的CPU項目 最終,添加完相關模板,在創建Windows主機之後,在Devices->Your Windows host ->頁面下方正確添加的各種Templates如下: 由於Windows模板下都是Data Queries。所以請確保添加完相關的Data Queries之後,所有項目的Status下應該都是Success以及是能看到很多Items以及Rows的。這說明數據正確採集,如果沒有,請移步最後問題綜述的問題4。 最後添加完並且畫圖的監控結果:
|
2.Linux常用模板 1. CPU Use 2. Load Average 3. Memory Usage 4. Swap Usage 5. Disk I/O 6. Disk Size 7. Interface Traffic 爲了解決Linux監控內容,我們使用以下模板: A. Cacti_host_template_ucdnet_snmp_host.gz B. Cacti_graph_template_ucdnet_-_memory/swap_usage_linux.xml C. Data_query_snmp_-_get_disk_io 最終,添加完相關模板,在創建Linux主機之後,在Devices->Your Linux host ->頁面下方正確添加的各種Templates如下: 在所有的Linux監控添加後的內容如下: |
3.Switch && Router的相關模板 |
IV:自定義腳本的添加以及監控
很多時候,我們需要爲我們獨有的環境去指定監控內容,那麼如何制定呢?就可以通過自己寫腳本的方式進行收集數據。這裏我用一個監控QQ在線人數的例子來舉例。
1.創建數據輸入方式
1. 在Console-->點擊Data Input Methods
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,進入數據源界面
3. 確保Data Template和Host均爲None。直接點擊Create
4. 在新出現的信息面板中輸入相關內容
5. 點擊Create,此時左上角會出現Save Successful
7. 點擊Save,看到Save Successful,則數據源創建成功。
3.創建圖像
1. 選擇Console--> Graph Management,進入圖像管理
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)。
3. 在Tree Item Type中選擇Graph,然後在下面的Graph中選擇我們剛纔創建的圖像。點擊Create。
4. 此時,再進入Graphs界面,就可以看到在Default Tree下已經出現了我們新創建的圖像。
V.Cacti問題 Q & A
1.填完Drivers信息之後顯示紅色的SNMP error
這是由於被監控機的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沒有正確的創建出這個文件,這就有可能是所用的模板有問題了。
3.圖什麼的都有,但是數據都是N/A,這是要鬧哪樣?
這個的解決辦法其實跟無法畫圖的解決一樣,就是我們去看數據的Debug日誌。
4.在給主機添加Data Query的監控項的時候發現裏面沒有獲取到數據。
這時候,如果它獲取不到數據,我們就無法給它畫圖。因爲在給它創建的圖的界面上顯示沒有內容。
這時就可以看到反饋出得信息,比如上圖,發現SNMP無法獲取數據。當然也有其他的,比如MIB文件不存在。只要你仔細看它反饋出來的問題,知道問題的根源,就一定能解決。當解決了數據獲取之後,可以直接點擊右邊的綠色的小圓圈,就刷新了數據的獲取狀態。
5.關於cacti下文件的權限問題。
Cacti目錄中的內容權限並不統一,而且權限要求的也很少,並不像其他的比如Nagios要求的那麼多。我們可以簡單的保持整個Cacti目錄的屬主和屬組都是Cacti即可。但是有兩個特殊的例外:
第二個目錄是cacti/scripts目錄,這裏面存的大部分都是我們自定義的腳本,一定要確保裏面的腳本是cacti用戶可執行的。最好的檢測方法就是su到cacti用戶中,進入這個目錄,手動運行一下腳本,查看腳本是否成功執行。