前言
nagios系統(tǒng)可以像zabbix、cacti類軟件一樣叽粹,將收集到的各項監(jiān)控指標性能數(shù)據(jù)以圖形的形式動態(tài)展示出來览效。使監(jiān)控更加直觀化,可進行各項靈活的定制虫几,方便對性能數(shù)據(jù)進行對比分析锤灿。nagios可以用于監(jiān)控數(shù)據(jù)畫圖的插件有多種,這里以pnp4nagios軟件為例進行說明辆脸。
本文所用到系統(tǒng)環(huán)境
OS:CentOS release 6.8 (Final) 2.6.32-642.el6.x86_64
還有一個重要環(huán)境:互聯(lián)網(wǎng)(yum衡招、百度、Google)每强。
各軟件包:
組件 | 軟件包名 |
---|---|
nagios daemon | nagios-4.3.1.tar.gz |
nrpe | nrpe-2.15.tar.gz |
nagios plugin | nagios-plugins-2.2.0.tar.gz |
pnp4nagios | pnp4nagios-0.6.25.tar.gz |
1. 獲取pnp4nagios軟件
筆者是在pnp4nagios的官網(wǎng)上下載的始腾,現(xiàn)將它和nagios其它軟件包一起放在此處百度網(wǎng)盤 密碼:ayhk
2. 安裝pnp4nagios
-
安裝前的準備
筆者使用的是pnp4nagios的0.6.25版本,根據(jù)官網(wǎng)說明安裝它以前需要滿足以下條件:
Perl >= 5.x without additional modules
RRDtool >= 1.x, better 1.2 but not compulsory
Attention: installing RRDtool without a packet manager might lead to missing dejavu fonts. If you see graphs without text then this may be the cause.
PHP >= 5.1.6 for the Webfrontend based on Kohana
Nagios >= 2.x or Icinga
Kohana needs the module “mod_rewrite” to be enabled. For details please have a look at the documentation of your web-server specific to your distribution.
其中perl空执、rrdtool都可以通過yum來進行安裝浪箭,web server apache默認即已包含mod_rewrite
了。需要使用yum安裝的包大致包括以下幾個:
yum install rrdtool rrdtool-perl perl-devel
-
安裝pnp4nagios
先將軟件壓縮包解壓辨绊,然后configure,根據(jù)提示執(zhí)行相應的make操作奶栖,完成安裝過程,相應指令如下:tar xf pnp4nagios-0.6.25 cd pnp4nagios ./configure configure完成以后會出現(xiàn)相應的匯總信息: General Options: Nagios user/group: nagios nagios Install directory: /usr/local/pnp4nagios HTML Dir: /usr/local/pnp4nagios/share Config Dir: /usr/local/pnp4nagios/etc Location of rrdtool binary: /usr/bin/rrdtool Version 1.3.8 RRDs Perl Modules: FOUND (Version 1.3008) RRD Files stored in: /usr/local/pnp4nagios/var/perfdata process_perfdata.pl Logfile: /usr/local/pnp4nagios/var/perfdata.log Perfdata files (NPCD) stored in: /usr/local/pnp4nagios/var/spool Web Interface Options: HTML URL: http://localhost/pnp4nagios Apache Config File: /etc/httpd/conf.d/pnp4nagios.conf
以上配置匯總信息很重要门坷,后面修改nagios.cfg需要用到宣鄙,以及pnp4nagios運行環(huán)境測試也會用到。然后根據(jù)提示信息依次執(zhí)行:
make all
make install
make fullinstall
這里對make fullinstall
進行一下說明默蚌,這一指令其實包含有三個指令:
-
make install-webconf
復制一個名為pnp4nagios.conf的文件到/etc/httpd.conf.d/目錄下冻晤,主要用于從web可以訪問pnp4nagios。 -
make install-config
復制process_perfdata.pl
和npcd的配置文件到/etc/pnp中绸吸,為可選項鼻弧。
3.make install-init
安裝npcd init腳本。
3. 測試pnp4nagios安裝結(jié)果
重啟web服務锦茁,并驗證pnp4nagios運行環(huán)境是否已準備就緒攘轩。
service httpd restart
打開瀏覽器輸入上面匯總信息的HTML URL即:http://localhost/pnp4nagios
。正常情況下會得到如下頁面:
4. 了解pnp4nagios的工作模式
進行pnp4nagios的配置之前码俩,需要先確定要使用pnp4nagios的哪種工作模式度帮,它支持的有sync mode(應該是默認模式)、bulk mode稿存、bulk mode with npcd笨篷、bulk with npcd and npcdmod和gearman mode共5種運行模式甫菠,按照官網(wǎng)的說明,我這里選擇buld mode with npcd冕屯。以下為這種模式的官方說明:
Viewing from Nagios this is the best way of processing because Nagios will not be blocked.
Nagios again uses a temporary file to store the data and executes a command after expiration of a certain time. Instead of immediate processing by process_perfdata.pl the file is moved to a spool directory. As moving a file inside the same filesystem nearly takes no time nagios is able to execute crucial work immediately.
The NPCD daemon (Nagios Performance C Daemon) will monitor the directory for new files and will pass the names to process_perfdata.pl. Processing of performance data is decoupled completely from nagios. NPCD itself is able to start multiple thread for processing the data.
簡單來說這種模式的好處就是它將收集到原始的性能統(tǒng)計數(shù)據(jù)工作和對這些數(shù)據(jù)進行處理然后生成RRD和XML文件的工作分開了,前者由nagios完成拂苹,后者則由專門的守護進程NPCD來完成安聘,提高了nagios的工作效率。
以下為這種模式的工作原理示圖:
5. 配置pnp4nagios及nagios
要想pnp4nagios工作起來必須對pnp4nagios和nagios的配置文件進行修改瓢棒,讓它們能夠聯(lián)動起來浴韭。按照以下步驟進行配置:
- 修改nagios主配置文件 (/usr/local/nagios/etc/nagios.cfg)
- 打開性能數(shù)據(jù)處理開關(guān)
process_performance_data=1 #默認為0
- 修改性能數(shù)據(jù)文件位置
host_perfdata_file=/usr/local/pnp4nagios/var/host-perfdata
service_perfdata_file=/usr/local/pnp4nagios/var/service-perfdata
#記得pnp4nagios安裝時的配置信息匯總信息吧,這里用到了
- 修改性能數(shù)據(jù)文件格式模板
host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIM
ET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$
HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKC
OMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::
$HOSTSTATETYPE$ #內(nèi)容很長脯宿,修改的時候記得寫在一行不要人為分行
host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIM
ET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$
HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKC
OMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::
$HOSTSTATETYPE$ #內(nèi)容很長念颈,修改的時候記得寫在一行不要人為分行
- 設(shè)置性能數(shù)據(jù)文件寫入模式及處理間隔
host_perfdata_file_mode=a
service_perfdata_file_mode=a #默認為即a,append
host_perfdata_file_processing_interval=15 #設(shè)置每15秒處理一次性能數(shù)據(jù)文件
service_perfdata_file_processing_interval=15
- 配置處理這些性能數(shù)據(jù)文件的指令
host_perfdata_file_processing_command=process-host-perfdata-file
service_perfdata_file_processing_command=process-service-perfdata-file
這兩個指令非常關(guān)鍵,它需要在nagios的commands.cfg中定義好连霉,且命令名稱跟此處完全一致榴芳。
-
定義處理文件指令的詳細參數(shù)
在nagios的commands.cfg中配置如下參數(shù):define command{ command_name process-service-perfdata-file command_line /bin/mv /usr/local/pnp4nagios/var/service- perfdata /usr/local/pnp4nagios/var/spool/service-perfdata.$TIMET$ } define command{ command_name process-host-perfdata-file command_line /bin/mv /usr/local/pnp4nagios/var/host- perfdata /usr/local/pnp4nagios/var/spool/host-perfdata.$TIMET$ }
-
配置nagios web上可以調(diào)用pnp4nagios
要實現(xiàn)從nagios web頁面上直接打開pnp4nagios,從而查看其輸出的圖形跺撼,還需要配置很關(guān)鍵的一個參數(shù)action_url
窟感,我選擇將它直接定義在host和service的模板中。在實際工作中有的監(jiān)控項目可能并不需要畫圖出來歉井,可以在定義監(jiān)控時柿祈,在相應的服務中設(shè)置process_perf_data 0
,即不處理此服務的性能數(shù)據(jù)哩至。默認在服務和主機模板中它是設(shè)置為1的躏嚎。
要想看到一個監(jiān)控項目輸出的圖形,必須將process_perf data設(shè)置為1菩貌,同時調(diào)用的有action_url
卢佣。
action_url的配置如下所示,我選擇將它們分別定義在templates.cfg的主機和服務模板中了:action_url /pnp4nagios/index.php/graph? host=$HOSTNAME$&srv=_HOST_ ;針對主機的箭阶,注意寫在一行 action_url /pnp4nagios/index.php/graph? host=$HOSTNAME$&srv=$SERVICEDESC$ ;針對服務的珠漂,注意寫在一行
檢查npcd配置文件
查看/usr/local/pnp4nagios/etc/npcd.cfg
的內(nèi)容,確認其中配置的有無錯誤的地方尾膊,比如使用的用戶是否和nagios的一致為nagios媳危,調(diào)用的process_perfdata.pl
是否是pnp4nagios libexec下的。一般情況下此文件保持默認參數(shù)即可冈敛。設(shè)置npcd服務開機自啟并啟動
service npcd start
chkconfig npcd on
service npcd status #確認一下它是否啟動
-
重載nagios
當naios的配置文件有過改動以后待笑,需要檢查配置文件是否有明顯的語法及邏輯錯誤,檢測方式:
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
檢測無誤后抓谴,重載nagios服務:
service nagios reload
6. 觀察畫圖效果
nagios中添加了action_url
以后暮蹂,web 頁面相應的主機和服務后會多一個小的圖標寞缝,如下:
點擊其中一個圖標可以看到其動態(tài)輸出效果荆陆,如下所示:
7. pnp4nagios的官方文檔
pnp4nagios還支持很多高級功能集侯,如在配置 文件中使用正則表達式,以實現(xiàn)更為復雜的匹配浓体,支持自定義page辈讶,將想要放在一起的主機及服務呈現(xiàn)在一個頁面中,支持數(shù)據(jù)導出贱除。這些在它的官方網(wǎng)站上都有介紹,文中的原理圖也來自pnp4nagios的官網(wǎng)跪腹。