Cacti完全使用手冊 ( 讓你快速個性化使用Cacti )


I.總覽                                          
    Cacti 和Nagios的監控體系可以說是使用廣泛而且支持豐富的國內外的運維人員都需要掌握的一套監控體系,這套體系的好處在於使用Cacti的強大畫圖和自定 義畫圖能力,以及Nagios的可控報警。但是網上的大部分內容都是如何安裝,在安裝成功如何使用的方面介紹的很少,而真正開始用之后,為了工作需要就需 要不斷地去Cacti官網查看使用文檔,或者論壇去翻別人的帖子,十分麻煩。於是我決定寫一篇使用方面的手冊,以讓大家真正會用這套系統。

II.Cacti的使用                                   

    Cacti的常用服務器的畫圖大部分都是使用模板的形式做的,而Cacti安裝好之后本身自帶了一部分模板,這些模板雖然可用,但是支持的項目太少,於是我們要尋求更多的模板以及更優化的內容。
    Cacti的官方的模板庫:http://docs.cacti.net/templates  

1:cacti模板的一般加載方法:

    一個Cacti的模板一般有兩部分組成。一部分是xml模板文件,另一部分是xml的數據收集文件,雖然這兩種文件都是xml格式的,但是你可以很顯而易見的就能分出它們的不同。因為它們的文件大小一點都不相似。
    舉個簡單的例子:

 



這個是一個windows的監控模板,我們可以簡單的根據文件的大小來看。
    *  大小大於10KB的,那就是xml模板文件。
    *  大小小於10KB的,那就是xml數據收集文件。

Xml模板文件是要在cacti的Web頁面的Console選項卡內Import Templates項進行添加:

 

    而xml數據收集文件,則是要放在Linux上Cacti的安裝目錄的cacti/resource/snmp_queries中:

 

    只要將兩種類型的xml正確的導入/放入到應有的位置,那么模板就添加成功了。 

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
f. 此時你的頁面左上角應該顯示:Save Successful,並且已經顯示出了主機信息和SNMP信息,如果SNMP信息顯示 SNMP error,請查看最后的問題綜述。
g. 這時我們就可以添加相應的監控項了,在頁面最下方的Associated Graph Templates中添加圖形模板,在Associated Data Queries中添加數據模板。

 

h. 添加好相應的模板之后點擊Save。此時左上角會出現Save Successful.
i. 點擊右上角的Create Graphs for this Host,來為剛才通過模板所獲得到的數據進行畫圖。
j. 選中需要畫圖的項,其中依然分為兩部分:
    通過Graph Templates中的內容都需要選中,而Data Query獲取的內容比較詳細,所以可以按需選擇。
k. 選擇好需要畫圖的項目后,點擊右下角的Create,左上角會出現被創建出來的畫圖項。

2.在Graphs界面顯示新添加主機。

a. 在Cacti Web界面Graph Trees中,選擇相應的列(或者系統默認的Default Tree)。
b. 進去Tree之后,點擊右上角的Add,添加一個新的顯示項。
c. 在Tree Item Type中選擇Host,然后在下面的Host中選擇我們剛才創建的主機。點擊Create。
d. 此時,再進入Graphs界面,就可以看到在Default Tree下加入了我們新創建的主機。

 

III.Cacti的常用模板                         

1.Windows常用模板
    Windows一般所需要監控的基本內容有:
    1.    CPU Use
    2.    Memory Use
    3.    Disk Size
    4.    Interface Traffic

    為了解決基本的監控項,我們需要以下模板。
    A.    Cacti_SNMP_Informant_Standard_Metrics_v12.zip
    B.    Cacti_host_template_ucdnet_snmp_host.gz

    我們還需要在Windows主機上安裝一個軟件,以確保SNMP能發送更多的信息為我們提供數據采集:informant-std-16.exe

    使用A模板來監控Windows的CPU項目
    使用B模板來監控網絡,硬盤,內存。 
    最終,添加完相關模板,在創建Windows主機之后,在Devices->Your Windows host ->頁面下方正確添加的各種Templates如下:

 


    由於Windows模板下都是Data Queries。所以請確保添加完相關的Data Queries之后,所有項目的Status下應該都是Success以及是能看到很多Items以及Rows的。這說明數據正確采集,如果沒有,請移步最后問題綜述的問題4。
    最后添加完並且畫圖的監控結果:

 

 

2.Linux常用模板
    Linux與Windows監控的內容基本相同:
    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的相關模板
    由於市面上Switch和Router的型號眾多,而不同的型號可能就需要不同的模板,不能像Windows和Linux一樣進行統一,所以當你需要監控Switch和Router的時候,請Google響應的型號的模板,或者在Cacti官方的模板庫中進行查找。查找之后添加的過程都大同小異,這里不再贅述。

 

IV:自定義腳本的添加以及監控                 

    很多時候,我們需要為我們獨有的環境去指定監控內容,那么如何制定呢?就可以通過自己寫腳本的方式進行收集數據。這里我用一個監控QQ在線人數的例子來舉例。

准備工作:
    1.我們需要一個腳本,腳本的語言隨意,只要在Linux的機器上能夠使用運行並且有返回內容。比如我們即將使用的腳本:

  1. #!/bin/bash 
  2. echo "QQ_Now:`curl im.qq.com/online.shtml | grep qqdata | cut -d":" -f 3 | cut -d">" -f 2 | cut -d"<" -f 1`" 

    此腳本運行之后輸出內容為:

 

    這個里面只有最后一行是有用的,其他的為curl的抓取信息。
    2.我們的腳本要放在一個確保Cacti用戶可訪問的位置。常用的地方是:cacti/scripts/*中,那么當腳本准備停當之后,就開始我們的監控工作。

 

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用戶中,進入這個目錄,手動運行一下腳本,查看腳本是否成功執行。

 

摘自:http://www.cnblogs.com/lcword/p/5912622.html 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM