企業服務器對於企業業務持續性意義重大,系統管理員須要密切關注企業服務器以確保一切正常運行。當發現問題的時候,他們須要知道問題開始出現時的情況,所以調查能夠重點放在問題出現的時候,這就意味着按期記錄信息以及快速分析信息數據是很必要的,本文將介紹幾個web界面的服務器檢測工具。php
每一個工具都略有不一樣的側重點,因此咱們將逐一分析這些工具以幫助你選出適合安裝在你的機器上的工具。這些工具執行統計記錄所使用的語言和設計模式均可能影響其效率,例如,collectd是用C語言寫的並做爲守護進程(daemon)在運行,所以collectd不須要建立任何新進程來收集系統信息。其餘收集程序多是用Perl寫的,可能你的磁盤緩存中包含Perl翻譯器以及收集程序使用的全部Perl模塊,系統須要按期產生一個或者多個新程序來收集系統信息。前端
RRDtoolnode
這些咱們將要分析的工具常常會使用其餘工具,例如RRDtool就包括存儲時間序列數據工具以及圖表工具。mysql
RRDtool工具側重於存儲新的時間序列數據,所以不會對磁盤子系統有很大影響,你可能會以爲這沒什麼大不了的。若是你只是每隔5-10秒鐘獲取幾個值,將它們附加在文件的末尾,在服務器上都不可以明顯被察覺,而後你可能會開始監測CPU(負荷、值、核心――每一個核心多達16個值)、內存(交換、緩存大小――另外5個值)、磁盤中的剩餘空間(20個值?)以及從UPS收集的數據(10個值)。即便不考慮網絡流量,每隔10秒鐘你均可以從系統中記錄50個值。linux
RRDtool可以將這些值以4KB的大小寫入磁盤中,而不是4字節或者8字節,所以系統不須要在每一個記錄間隔都運行工做。若是其餘工具想要全部的數據,能夠進行刷新輸出緩存,以確保RRDtool緩存的全部數據都被存儲入磁盤中。因爲數據每次都是以4KB大小寫入,就不須要老是將數據置於緩存中,只有再次執行分析或者使用RRDtool圖表命令時纔會啓用。web
因爲系統監測工具常常會寫入文件,你可能會對存儲這些文件的區域進行優化。對於常規spinning disk,文件系統搜尋比按順序讀取不少塊更具效率,當Linux內核只須要讀取一個塊時其餘序列塊也會進入緩存區以供備用。由於RRDtool文件常常被寫入單個磁盤塊,你最好關閉readahead的分區進程,你也能夠利用util-linux-ng的blockdev程序將區塊readahead值縮小爲兩個磁盤塊(使用這樣的命令:setra 16 /dev/sdX)。關閉時間更新並對文件系統使用writeback模式,RAID一樣也將有助於提升性能。sql
collectd數據庫
Colletd是專爲反覆收集系統信息而開發的,而tarball包含分析這些信息的web界面,開發者表示該界面是一個極小的界面示例,那些想要找尋可以分析collectd收集的信息的web界面的人能夠考慮使用其餘工具(如Cacti)。apache
Debian Etch和Fedora9都附有collectd安裝包,openSUSE還提供一鍵安裝collected。該程序是用C語言寫入的,而且做爲守護進程運行,這使該程序可以在短間隔內記錄信息而不會對系統產生較大影響。設計模式
當你安裝collectd包的時候你可能還會想嘗試插件包,collectd的重要優點在於可以經過插件支持檢測各類各樣的系統信息,例如數據庫、UPSes、通常系統參數、NFS和其餘服務器性能參數。不過,安裝插件安裝包不是件易事。對於openSUSE,你只須要安裝插件完整包便可,而Fedora9( 4.4.x版本)則沒有PostgreSQL插件,Debian、 openSUSE和Fedora中都不包含網絡USP工具(NUT)插件。
解決插件問題的最簡單的辦法就是從源代碼開始創建collectd,配置你想要的插件。一些一般沒有被置於安裝包中而你可能感興趣的插件包括NUT、netlink、 postgresql以及iptables。安裝collectd遵循以下步驟:配置;生成;sudo產生安裝進程,可是若是你指定要編制某些插件的時候,你的配置命令可能會很長。安裝程序以及我選擇的插件都列在下面的命令中,我使用了contrib目錄中的init.d啓動文件,並更改了一些路徑,由於我使用的是私人副原本保證collectd安裝在單一目錄樹進行。另外,我還複製了iproute2以便在Fedora9的libnetlink庫中使用。
$ cd ./collectd-4.5.1 $ ./configure --prefix=/usr/local/collectd \ --with-perl-bindings=INSTALLDIRS=vendor \ --without-libiptc --disable-ascent --disable-static \ --enable-postgresql --enable-mysql --enable-sensors \ --enable-email --enable-apache --enable-perl \ --enable-unixsock --enable-ipmi --enable-cpu --enable-nut \ --enable-xmms --enable-notify_email --enable-notify_desktop \ --disable-ipmi --with-libnetlink=/usr/local/collectd/iproute2-2.6.26 $ make ... $ sudo make install $ su # install -m 700 contrib/fedora/init.d-collectd /etc/init.d/collectd # vi /etc/init.d/collectd ... CONFIG=/usr/local/collectd/etc/collectd.conf ... daemon /usr/local/collectd/sbin/collectd -C "$CONFIG" # chkconfig collectd on |
在你啓動collectd前,先看看etc/collectd.conf以確保你想要的插件及其選項可以被啓用。該配置文件在LoadPlugin行(指定collectd的哪些插件須要使用)定義了幾個通用的選項。每一個插件的配置是在...範圍內完成的,你也應該檢查配置文件是否啓用了rrdtool插件以及DataDir參數設置到現有的目錄中,該目錄中存儲着可變數據。.
當你檢查完插件啓用狀況以及選項狀況後,就能夠經過運行服務collectd狀態啓動collectd。
要想查看collectd收集的信息,你須要安裝web界面或者其餘程序(如Cacti),如下命令的執行須要安裝collectd提供的基本的CGI教本,截圖顯示了運行腳本的狀況。
# yum install rrdtool-perl # cp contrib/collection.conf /etc/ # vi /etc/collection.conf datadir: "/var/lib/collectd/rrd/" libdir: "/usr/local/collectd/lib/collectd/" # cp collection.cgi /var/www/cgi-bin/ # chgrp apache /var/www/cgi-bin/collection.cgi |
若是你想要在KDE桌面查看collectd數據,能夠試試kcollectd,你也能夠將生成的RRDtool文件與Cacti整合,雖然安裝過程很是繁瑣。
部署了collectd就能夠開始執行系統監測了,而collectd所提供的web界面純粹只能做爲演示示例使用。做爲C語言編寫的守護進程,collectd也能夠做爲系統中最小進程運行。
Cacti
collectd側重於數據收集,而Cacti則可以提供很好的web前端來查閱系統信息;collectd做爲守護進程運行並可以在不佔用進程的狀況下每隔10秒收集信息,而Cacti每隔5分鐘運行一個PHP教原本收集信息(二者的時間間隔都是默認的而且可以進行配置)。默認值的不一樣說明每一個工具對收集系統信息的頻率的認識不一樣。Cacti被附在Etch、Fedora 九、以及openSUSE 11的安裝包中。
安裝好Cacti後,若是安裝包並無爲你創建數據庫,那麼當你試圖訪問http://localhost/cacti的時候可能會出現如下錯誤。Cacti網站有詳細說明幫助你創建MySQL數據庫並將Cacti配置鏈接。
致命問題:沒法鏈接到「本地」MySQL服務器,請確保你在 「include/config.php」中指定了一個有效的MySQL數據庫。
當你首次在web瀏覽器中鏈接到Cacti安裝程序時,會有嚮導幫助你完成配置。Cacti會提供不一樣工具、SNMP設置和PHP二進制的路徑,並會詢問你現有的rrdtool版本。
收集了路徑和版本信息後,Cacti會要求你使用默認用戶名和密碼登陸,登陸後須要當即更改管理員用戶的密碼。
首先看到的畫面是控制檯按鈕,在窗口的主要區域爲你提供了三個選項:建立設備、建立圖表和查看圖表。點擊圖表按鈕你會看到已有的圖表:內存使用量、平均負荷、登陸用戶和進程,截圖展現的是這些圖表。
Cacti的附加信息收集腳本可以讓你擴展Cacti能夠監測的信息,例如,能夠幫助你收集負責和USP設備輸入輸出電壓信息等。
在這些工具中,Cacti提供了最實用和漂亮的web界面,可以讓你選擇顯示圖表的預先時間間隔設置,一樣也能明確指定你想查看的開始和結束時間內的信息,Cacti是惟一可以讓你指定一個自定義時間範圍來顯示圖表的工具。
Monitorix
Monitorix使用三個圖表讓你對系統信息一目瞭然:中央左邊的圖表提供信息概覽和右邊兩個較小的圖表提供相關細節信息。Monitorix包含一個Perl守護進程,可以收集系統的統計信息,還包含一個CGI網絡界面使你能夠分析數據。
在Fedora、openSUSE或者Debian中沒有Monitorix安裝包,Monitorix下載頁面提供 noarch RPM文件以及tarball(供non-Red Hat/Fedora基礎版本使用)若是你在Debian爲基礎的系統上安裝,在monitorix-1.2.1 tarball中有一個 install.sh文件可以將文件複製到正確的路徑,以及un_install.sh文件可以幫助你刪除Monitorix。你須要爲RRDtool安裝Perl綁定程序(Fedora 9中的爲rrdtool-perl,Debian中的爲librrds-perl,openSUSE 11中的rrdtool)以便使用Monitorix。
在正確的位置安裝好文件後,不論是經過安裝RPM文件仍是運行install.sh,你均可以開始運行服務monitorix啓動來收集信息了,你應該也可以訪問 http://localhost/monitorix/來選擇圖表(或者指明查看全部圖表)。
Monitorix並不包含插件系統可是內置支持監控CPU、進程、內存、文本切換、溫度、風扇速度、磁盤IO、網絡流量、需求服務如POP3和HTTP、中斷行爲和鏈接到SSH和Samba的用戶數量。截圖顯示的是Monitorix的每日圖表
你能夠經過編輯/etc/monitorix.conf文件來配置Monitorix,而該文件其實是一個Perl腳本, MNT_LIST選項容許你指定對多達7個文件系統進行監控。REFRESH_RATE設置設定了在查看Monitorix圖表時設定了web瀏覽器多少秒鐘內自動刷新其內容,你一樣可使用Monitorix來監測不少設備,而只須要設置MULTIHOST="Y"並將SERV_LIST中你想要監控的服務器列出來便可,以下列命令所示。或者你也可使用PC_LIST和 PC_IP選項列出整個子網來進行監控。
MULTIHOST="Y" our @SERV_LIST=("server number one", "http://192.168.1.10", "server number two", http://192.168.1.11); |
圖板組成中左邊的主圖和右邊兩個較小的圖使Monitorix可以在相對緊湊的空間裏顯示至關多的相關信息,畫面中,負荷被顯示在左邊的大圖中,而積極進程數量和內存分配則顯示在右邊較小的圖中。往下看,圖版還顯示了網絡服務需求,該圖板的主圖表顯示了不少服務,POP3和WWW做爲較小圖表排在右邊。惋惜的使,POP3的選擇彷佛被硬編碼在monitorix.cgi的line 2566上,而SERVU2明確地在使用POP3,所以若是你想要監控IMAP郵件服務會是個問題。
Monitorix 易於安裝和運行,而且它地三圖表界面可以更好地查看系統狀況。不過美中不足地是,有些程序仍然被硬編碼到CGI腳本中,因此修改web界面會受到限制,另外不少安裝包中都不附有Monitorix也會減小不少用戶。
Munin
Munin 明確其功能主要爲收集和分析功能,這能夠幫助你收集多個服務器信息並在一箇中央服務器上分析全部收集到的信息,Munin安裝包也被附在不少系統中,使其安裝和更新都至關簡單。
Munin是用Perl編寫的,有不少插件功能,支持Unix操做系統的多種版本,還有可搜索的插件網站。
Debian Etch和Fedora9都附有munin安裝包,openSUSE11還提供一鍵安裝,該程序提供兩種軟件包:munin-node,包含全部監控功能,而munin安裝包支持從運行munin-node的設備上收集信息,並經過web界面將其圖表化。若是你有不少設備,你可能會在大部分設備上安裝munin-node而在某一設備上安裝munin 以分析全部收集到的數據。
munin-node的主要配置文件/etc/munin/munin-node.conf可讓你定義日誌文件存放的位置,哪些用戶能夠運行監控守護進程,守護緊湊能夠鏈接到哪些地址和端口,哪些主機能夠鏈接到地址和端口如下載收集到的數據,在默認狀況下,只容許本地主機鏈接到munin-node。
你能夠經過我的配置/etc/munin/plugin-conf.d文件配置插件,Fedora的 Munin-node附有約36個插件來監測系統和設備信息。
當你訪問http://localhost/munin時,Munin會顯示一張概覽圖向你展現全部鏈接到的節點,包括到節點的具體功能,如磁盤、網絡、NFS和進程。點擊節點名稱會顯示兩行的圖表,每一行都會在左邊顯示每日統計信息,右邊顯示每週統計信息,點擊這些圖表可以提供顯示某日、某月的詳細信息頁面。在這項細節信息頁面的底部,顯示的是關於數據的更加詳細的信息,包括不規則活動通知等。
想要知道系統或者服務天天或者每週的運行狀況,Munin是最佳選擇。不過,它的web界面不能提供數據鑽取。
Munin的插件網站是至關出色的,在你下載前能夠看到不少插件的示例圖,而插件網站的缺點就是搜索界面不是很完善。
Munin的主要優勢就是它可以同時提供收集信息和分析信息的功能,這樣你就無需在每一個節點上安裝一個web服務器,而且詳細信息頁面底部的附加信息可以幫助你獲取一些重要數據的統計信息。
結語
這四個應用程序中, Cacti可以提供最好的web界面,讓你預先設定顯示圖表的時間間隔,一樣也能顯示你所感興趣的明確起始時間間隔內的圖表。相比之下,collectd則側重於監控系統,而其提供的web界面也只能供最基本用途。鑑於收集數據和分析數據能夠看成單獨的功能,若是將collectd和Cacti結合使用的話,效果將很不錯。不過,將Cacti安裝到使用collectd生成的文件會是一個冗長的容易出錯的過程。Monitorix和Munin都很易於安裝,並可以提供快速的概覽圖,Monitorix的三圖表分行圖表顯示可以爲你提供更好的對系統運行狀況的概覽。
哪種更加適合你哪?若是你花費大量的時間進行分析數據,或者你計劃讓非管理員查看系通通計信息,Cacti會是你的最佳選擇工具;若是你向在承重負荷的系統上收集信息,能夠考慮使用collectd,由於它對系統運行的影響最小;若是你須要監控小部分類似的設備,Munin能夠幫助你使用不一樣程序包從不少節點收集信息;若是你有一臺服務器並想迅速查看系統狀況,Cacti和Monitorix都值得你考慮。