用Munin監(jiān)控Linux服務(wù)器性能
監(jiān)控LINUX主機的性能是一個很復(fù)雜的操作,它有賴于命令行工具和集中數(shù)據(jù)。分析可能會很困難,需要大量的數(shù)據(jù)來建立相互關(guān)系從而得出結(jié)論。好在我們可以用一些現(xiàn)有工具來搭建這個過程的模型,讓數(shù)據(jù)分析變得相對容易一些。接下來我們能看到其中的一個工具,它叫做Munin(代表記憶,是奧丁神的一只烏鴉的名字)。
Munin是通過客戶端-服務(wù)器架構(gòu)收集數(shù)據(jù)并將其圖形化的工具。Munin允許你跟蹤你的主機的運行記錄,就是所謂的‘節(jié)點’,然后將它們發(fā)送到中央服務(wù)器,隨后你就能在這里以圖像形式展示它們。以下你可以看到一個用Munin圖形界面顯示磁盤IO信息的例子:
Munin可以通過安裝包快速簡易地安裝到大多數(shù)Linux系統(tǒng)上。在紅帽和Ubuntu/Debian上你都需要Munin,munin-node和munin-common安裝包(這個組合假設(shè)你還需要監(jiān)控服務(wù)器的情況),以紅帽為例:
$ yum install munin munin-common munin-node
Munin安裝將它的配置文件放在目錄/etc/munin下。讓我們就從配置munin服務(wù)器開始吧。主要的服務(wù)器配置文件是munin.conf,它控制服務(wù)器的設(shè)置和每個節(jié)點的配置信息。在大多數(shù)情況下用默認(rèn)設(shè)置就可以了,但是其它幾個選項你也應(yīng)該知道:dbdir、htmldir、logdir 和rundir。
Dbdir設(shè)置決定munin把收集到的RRD格式的統(tǒng)計數(shù)據(jù)放在哪個目錄下,在紅帽和ubuntu系統(tǒng)中默認(rèn)的是放在/var/lib/munin這個目錄下。
Htmldir設(shè)置控制munin輸出數(shù)據(jù)的位置,它是以html文件來顯示圖形界面的。在紅帽系統(tǒng)中默認(rèn)的是放在/var/www/html/munin目錄下,而在ubuntu中的是放在/var/cache/munin/www目錄下。這個目錄正是我們一般為網(wǎng)頁服務(wù)器服務(wù)時所采用的目錄,例如Apache。***的操作辦法之一就是運用Apache虛擬主機,創(chuàng)建一個虛擬主機可以用來圖形化顯示我們的節(jié)點狀態(tài):
<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName munin.example.com DocumentRoot /var/www/html/munin <Directory /> Options FollowSymLinks AllowOverride None </Directory> LogLevel notice CustomLog /var/log/apache2/munin.access.log combined ErrorLog /var/log/apache2/munin.error.log ServerSignature On </VirtualHost>
Logdir和rundir設(shè)置控制munin的日志文件和pid文件放置位置。
***,我們也必須在munin.conf文件中定義所有將向服務(wù)器發(fā)送報告的節(jié)點主機,命令是:
[hostname.example.com] address 10.0.0.1 use_node_name yes [hostname2.example.com] address 10.0.0.2 use_node_name yes
括號中是每個節(jié)點的名字,后面是它的IP地址,use_node_name命令控制munin命名節(jié)點的方式,如果后面跟的參數(shù)為yes就是用括號中的值來命名,如果是no則將執(zhí)行一個DNS查詢。另外,你可以用includedir選項來命名一個單獨的目錄,munin將在這里加載所有的文件,例如:
includedir /etc/munin/munin-conf.d/
我經(jīng)常用puppet導(dǎo)出資源來管理munin配置,首先在每個puppet客戶端上創(chuàng)建一個獨立的文件,然后用munin在這個文件中加載節(jié)點信息。
到這一步,服務(wù)器就已經(jīng)配置好了,接下來我們需要配置節(jié)點。將munin-node包安裝在每個節(jié)點并且配置/etc/munin目錄下的munin-node.conf文件。大多數(shù)配置信息都不需要改變,但是你需要更改allow選項,它控制哪一個主機能訪問munin和檢索統(tǒng)計。我們用IP地址來配置munin服務(wù)器,例如:
allow ^10\.0\.0\.100$
正如你看到的,IP地址必須用perl常用格式來輸入。如果你的munin服務(wù)器不只一臺,那么你可以用多行允許命令來定義它們。
每個munin節(jié)點都用tcp端口4949來和munin服務(wù)器通訊,所以你必須確保這個端口在主機防火墻上是打開的,并且在節(jié)點和服務(wù)器中間環(huán)節(jié)的任何一個防火墻上都允許數(shù)據(jù)通過。你可以在munin-node.conf文件中的port選項來定義這個端口號。
除了基本設(shè)置外,我們還需要指示節(jié)點哪些數(shù)據(jù)是需要收集的。Munin采用插件程序的架構(gòu)方式來定義監(jiān)控內(nèi)容。例如,有專門監(jiān)控CPU的插件,還有監(jiān)控負(fù)載、內(nèi)存和其它內(nèi)容的各種插件。Munin的所有插件清單可以在/etc/munin/plugins目錄下找到,它們以鏈接到插件的sym-links形式顯示。添加一個插件到munin的過程就是將插件文件的鏈接寫入到/etc/munin/plugins目錄下。如果插件需要某個配置,例如定義運行插件要求的用戶,你都可以在目錄/etc/munin/plugins.conf.d下找到該配置文件。
munin默認(rèn)包含很豐富的內(nèi)容,你可能不需要改變初始的基本設(shè)置,因為它們已經(jīng)提供了足夠的采集數(shù)據(jù)。Munin還提供大量有用的插件,你還能在社區(qū)中找到許多別人交流的插件。你可以用你熟悉的語言很容易開發(fā)出新的插件來。
***,我們通過運行munin-node init腳本來啟動munin服務(wù)器和節(jié)點。
$ sudo /etc/init.d/munin-node start
這樣就能開始munin監(jiān)控并收集需要的數(shù)據(jù),munin控制將周期性地查看每個節(jié)點的數(shù)據(jù)然后將其上傳到munin服務(wù)器上。接著就可以通過munin控制上的網(wǎng)頁服務(wù)來查看結(jié)果數(shù)據(jù)了。
所有的內(nèi)容就是這些了。現(xiàn)在你可以用圖形界面查看你的服務(wù)器的行為狀態(tài),并且可以探測到性能趨勢和可能發(fā)生的問題。如果你覺得munin不適合你,也可以考慮使用另一個叫做collected的工具,它和munin比較相似,用C語言編寫,它提供的功能可能比munin更加完善。它要求安裝額外的軟件來獲取這些功能,但也是一個不錯的可供參考的平臺。
【編輯推薦】