天天看點

Cacti完全使用手冊

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

本文不包含任何cacti和nagios的安裝工作,如需安裝,請移步:

本文所有監控項均使用snmp監控。

    cacti的常用伺服器的畫圖大部分都是使用模闆的形式做的,而cacti安裝好之後本身自帶了一部分模闆,這些模闆雖然可用,但是支援的項目太少,于是我們要尋求更多的模闆以及更優化的内容。

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

    一個cacti的模闆一般有兩部分組成。一部分是xml模闆檔案,另一部分是xml的資料收集檔案,雖然這兩種檔案都是xml格式的,但是你可以很顯而易見的就能分出它們的不同。因為它們的檔案大小一點都不相似。

    舉個簡單的例子:

Cacti完全使用手冊

    *  大小大于10kb的,那就是xml模闆檔案。

    *  大小小于10kb的,那就是xml資料收集檔案。

xml模闆檔案是要在cacti的web頁面的console頁籤内import templates項進行添加:

Cacti完全使用手冊

    而xml資料收集檔案,則是要放在linux上cacti的安裝目錄的cacti/resource/snmp_queries中:

Cacti完全使用手冊

2:如何在cacti上添加一個新主機并監控相關的内容:(以添加linux主機為例)

1.建立畫圖

a. 在cacti的web頁面console->import templates導入響應的xml模闆檔案。

b. 在linux上cacti/resource/snmp_queries中放入模闆相關的xml資料收集檔案。并確定屬主和屬組均為cacti。

c. 點選console->devices,打開裝置管理頁面。

d. 點選右上角的add,添加一個新的機器

Cacti完全使用手冊

e. 當主機的資訊填好之後,點選create

f. 此時你的頁面左上角應該顯示:save successful,并且已經顯示出了主機資訊和snmp資訊,如果snmp資訊顯示 snmp error,請檢視最後的問題綜述。

g. 這時我們就可以添加相應的監控項了,在頁面最下方的associated graph templates中添加圖形模闆,在associated data queries中添加資料模闆。

Cacti完全使用手冊

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下加入了我們新建立的主機。

1.windows常用模闆

    windows一般所需要監控的基本内容有:

    1.    cpu use

    2.    memory use

    3.    disk size

    4.    interface traffic

    為了解決基本的監控項,我們需要以下模闆。

    使用a模闆來監控windows的cpu項目

    使用b模闆來監控網絡,硬碟,記憶體。 

    最終,添加完相關模闆,在建立windows主機之後,在devices->your windows host ->頁面下方正确添加的各種templates如下:

Cacti完全使用手冊

    最後添加完并且畫圖的監控結果:

Cacti完全使用手冊

2.linux常用模闆

    linux與windows監控的内容基本相同:

    2.    load average

    3.    memory usage

    4.    swap usage

    5.    disk i/o

    6.    disk size

    7.    interface traffic

    為了解決linux監控内容,我們使用以下模闆:

    最終,添加完相關模闆,在建立linux主機之後,在devices->your linux host ->頁面下方正确添加的各種templates如下:

Cacti完全使用手冊
Cacti完全使用手冊

3.switch && router的相關模闆

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

準備工作:

    1.我們需要一個腳本,腳本的語言随意,隻要在linux的機器上能夠使用運作并且有傳回内容。比如我們即将使用的腳本:

#!/bin/bash 

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

    此腳本運作之後輸出内容為:

Cacti完全使用手冊

    這個裡面隻有最後一行是有用的,其他的為curl的抓取資訊。

    2.我們的腳本要放在一個確定cacti使用者可通路的位置。常用的地方是:cacti/scripts/*中,那麼當腳本準備停當之後,就開始我們的監控工作。

1.建立資料輸入方式

    1.    在console-->點選data input methods

    2.    點選右上角的add,添加一個新的資料擷取方式

Cacti完全使用手冊

    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.    在新出現的資訊面闆中輸入相關内容

Cacti完全使用手冊

    5.    點選create,此時左上角會出現save successful

    6.    注意系統自動給生成的rrd檔案路徑,確定裡面不會出現連續兩個反斜線的路徑資訊。如果出現,請手動修改為一個反斜線。如:<path_rra>/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,添加畫圖規則。

Cacti完全使用手冊

    8.    再次點選graph items中的add,這次添加的是資料的展示,展示目前值。

Cacti完全使用手冊

    9.    設定好後點選create建立這個項目,然後按照這個方法,分别建立最大值,最小值,平均值的展示内容。

Cacti完全使用手冊

4.将自定義好的圖形,加入到graphs面闆

    1.    在cacti web界面graph trees中,選擇相應的列(或者系統預設的default tree)。

    2.    進去tree之後,點選右上角的add,添加一個新的顯示項。

    3.    在tree item type中選擇graph,然後在下面的graph中選擇我們剛才建立的圖像。點選create。

    4.    此時,再進入graphs界面,就可以看到在default tree下已經出現了我們新建立的圖像。

1.填完drivers資訊之後顯示紅色的snmp error

Cacti完全使用手冊

    這是由于被監控機的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:比如

Cacti完全使用手冊

    這裡面是rrd tool 告訴的我們為什麼它無法畫圖,我們可以看到我目前例子的沒有畫圖的原因是316.rrd這個檔案不存在,說明在建立的時候rrd沒有正确的建立出這個檔案,這就有可能是所用的模闆有問題了。

    在這裡,這是一個很好的檢視為什麼沒有畫出圖的地方,沒有畫出的圖rrd tool會一一的告訴我們,我們隻需要根據它說的來修正,直到rrd tool says: ok

3.圖什麼的都有,但是資料都是n/a,這是要鬧哪樣?

Cacti完全使用手冊

    這個的解決辦法其實跟無法畫圖的解決一樣,就是我們去看資料的debug日志。

    進入data sources,在host中選擇沒有資料的host,然後在下面的清單中選擇沒有資料的那個圖。進入資料設定界面,然後點選右上角的“turn on data source debug mode”,然後去分析它的報錯。

4.在給主機添加data query的監控項的時候發現裡面沒有擷取到資料。

Cacti完全使用手冊

    這時候,如果它擷取不到資料,我們就無法給它畫圖。因為在給它建立的圖的界面上顯示沒有内容。

    這時候可以直接點選上圖中的debugging下的相關内容,直接打開debug檢視狀态。

Cacti完全使用手冊

    這時就可以看到回報出得資訊,比如上圖,發現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使用者中,進入這個目錄,手動運作一下腳本,檢視腳本是否成功執行。

<a href="http://foreveryan.blog.51cto.com/3508502/775558"></a>

繼續閱讀