3nagios使用php繪制趨勢圖-創(chuàng)新互聯(lián)

Nagios Pnp繪制趨勢圖

軟件需求:

為三都等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及三都網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、三都網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

apache、perl>=5.x、rrdtool>=1.x、php>=4.3、zlib、gd、nagios>2.x、pnp-0.4.14

有關(guān)資料上說的cacti上的圖,好像都是用snmp協(xié)議獲取的數(shù)據(jù)畫出來的。因此,如果監(jiān)測不都是用snmp獲取數(shù)據(jù),也不希望安裝cacti的話,倒是可以用pnp直接在nagios上顯示趨勢圖。個(gè)人認(rèn)為pnp畫趨勢圖一點(diǎn)都不差。

參考資料

http://bbs.chinaunix.net/thread-2311792-1-1.html

http://chenlinux.com/2010/08/13/intro-pnp4nagios/

Rrdtool安裝

參考資料:http://pkgs.repoforge.org/rrdtool/

# rpm -ivh libdbi-0.8.1-2.1.i386.rpm (32位操作系統(tǒng))

# rpm -ivh libdbi-0.8.1-2.1.x86_64.rpm (64位操作系統(tǒng))

或直接用yum:

#yum install libdbi

# rpm -ivh lua-5.1.4-2.el5.rf.x86_64.rpm (64位操作系統(tǒng))

# rpm -ivh lua-5.1.4-2.el5.rf.i386.rpm (32位操作系統(tǒng))

以上兩個(gè)為rrdtoo的依賴包。

以下三個(gè)包要一起安裝否則會報(bào)一些錯誤,如找不到perl(RRDp) 什么的:

# rpm -ivh rrdtool-1.4.7-1.el5.rf.x86_64.rpm rrdtool-devel-1.4.7-1.el5.rf.x86_64.rpm perl-rrdtool-1.4.7-1.el5.rf.x86_64.rpm (64位操作系統(tǒng))

# rpm -ivh perl-rrdtool-1.4.7-1.el5.rf.i386.rpm rrdtool-devel-1.4.7-1.el5.rf.i386.rpm rrdtool-1.4.7-1.el5.rf.i386.rpm (32位操作系統(tǒng))

下載pnp.tar.gz

http://docs.pnp4nagios.org/pnp-0.4/install 可以下載到pnp-0.4.14.tar.gz和pnp4nagios-0.6.21.tar.gz(安裝和配置略有不同)。這里,推薦使用pnp4nagios-0.6.21.tar.gz。

安裝必要包

yum intall php-gd

或者

#rpm -ivh php-gd-5.1.6-32.el5.x86_64.rpm(如果依賴包沒有安裝,請根據(jù)提示到網(wǎng)上下載相應(yīng)的依賴包進(jìn)行安裝)

編譯安裝

參考資料:http://smallfish01.blog.51cto.com/3565/455092

Pnp包安裝

# tar zxvf pnp4nagios-0.6.7.tar.gz
# cd pnp4nagios0.6.7
# ./configure --with-nagios-user=nagios --with-nagios-group=nagcmd
# make all
make install
make install-webconf
make install-config
make install-init

創(chuàng)建默認(rèn)配置文件

以下默認(rèn)的sample例子配置文件,可能并不存在,而是已經(jīng)有默認(rèn)的配置文件了。這種情況可能會導(dǎo)致復(fù)制失敗。不過默認(rèn)配置文件已經(jīng)有了,就可以了。

# cd /usr/local/pnp4nagios/etc
cp misccommands.cfg-sample misccommands.cfg -p
cp nagios.cfg-sample nagios.cfg -p
cp npcd.cfg-sample npcd.cfg -p
cp process_perfdata.cfg-sample process_perfdata.cfg -p
cp rra.cfg-sample rra.cfg -p

cd pages
cp web_traffic.cfg-sample web_traffic.cfg -p
cd ../check_commands
cp check_all_local_disks.cfg-sample check_all_local_disks.cfg -p
cp check_nrpe.cfg-sample check_nrpe.cfg -p
cp check_nwstat.cfg-sample check_nwstat.cfg -p

# 啟動npcd服務(wù)
# service npcd start

修改nagiso配置文件

#修改nagios.cfg
# cd /usr/local/nagios/etc
# vi nagios.cfg
#修改配置為:
process_performance_data=1
host_perfdata_command=process-host-perfdata
service_perfdata_command=process-service-perfdata

#修改 commands.cfg

# cd /usr/local/nagios/etc/objects
# vi commands.cfg
#添加
# 'process-host-perfdata' command definition
define command{
command_name process-host-perfdata
command_line /usr/bin/perl /usr/local/pnp4nagios/libexec/process_perfdata.pl -d HOSTPERFDATA

#后面的-d HOSTPERFDATA很重要!沒有的話就不能產(chǎn)生圖形文件了!
}
# 'process-service-perfdata' command definition
define command{
command_name process-service-perfdata
command_line /usr/bin/perl /usr/local/pnp4nagios/libexec/process_perfdata.pl
}
#修改nagios模板文件。

# templates.cfg
# 在最后添加
define host {
name host-pnp
action_url /pnp4nagios/graph?host=$HOSTNAME$ #顯示主機(jī)所有服務(wù)的圖

#action_url /pnp4nagios/graph?host=$HOSTNAME$&srv=_HOST_ #顯示ping的狀態(tài)圖

process_perf_data 1
register 0
}
define service {
name srv-pnp
action_url /pnp4nagios/graph?host=$HOSTNAME$&srv=$SERVICEDESC$

process_perf_data 1
register 0
}

# 修改主機(jī)配置文件,例如windows.cfg

# cd /usr/local/nagios/etc/objects
# vi windows.cfg
#增加host-pnp,srv-pnp
define host{
use linux-server,host-pnp
host_name Windows Server
alias windows 2003 server
address 1.2.3.4
}

define service{
use generic-service,srv-pnp
host_name windows Server
service_description PING
check_command check_ping!100.0,20%!500.0,60%

其他相關(guān)的define host, define service都要修改。

#驗(yàn)證配置文件,無誤后重啟nagios和httpd 服務(wù)
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

#配置文件驗(yàn)證通過后,重啟服務(wù)

# service nagios restart
# service httpd restart

這里我要特別說明一下,我在配置這個(gè)趨勢圖時(shí),并沒有創(chuàng)建host-pnp和srv-pnp,如果按照上面寫的,則所有的被監(jiān)測的cfg配置文件中,都要在host和service的use中,增加host-pnp或srv-pnp。這太麻煩了。由于所有的被監(jiān)測設(shè)備都是從linux-vod-sw模板和linux-vod-sw繼承的,而且,所有的service都是從generic-service繼承的,因此,我就直接改這個(gè)模板,將action_url和process_perf_data參數(shù)都加在模板中了,這樣就不需要修改每個(gè)監(jiān)測機(jī)器的配置文件了。

# 至此,安裝完成。登錄nagios控制臺,選擇host主機(jī)名旁邊(或者service名旁邊)的趨勢小圖標(biāo),即可看到趨勢圖。如果是第一次使用的話,就有一個(gè)頁面,告訴用戶配置是否全部符合要求,如果全部都正確的話,會要求用戶刪除instal.php,我是直接改名,改名后,再次點(diǎn)擊趨勢小圖標(biāo),就能顯示趨勢圖了。
# cd /usr/local/pnp4nagios/share
# rm install.php

# mv install.php install.php.bak 或者改名也行

在templates.cfg 模板文件中的,新添加的action_url后面還可以加上 class 和 rel 以支持鼠標(biāo)移上去后就能顯示彈出的趨勢圖:

action_url /pnp4nagios/graph?host=$HOSTNAME$'class='tips' rel='/pnp4nagios/popup?host=$HOSTNAME$&srv=_HOST_

action_url /pnp4nagios/graph?host=$HOSTNAME$&srv=$SERVICEDESC$'class='tips' rel='/pnp4nagios/popup?host=$HOSTNAME$&srv=$SERVICEDESC$

注意這里的引號和空格。另外,服務(wù)器主機(jī)的彈出圖的腳本中最后加了&srv=_HOST_,表示只顯示主機(jī)的ping包。否則所有的圖顯示出來比較要命。因此,在配置了這個(gè)功能后,主機(jī)的趨勢圖配置中,最好是加上“&srv=_HOST_”,這兩項(xiàng)配置的截圖為:

Host配置:

3 nagios 使用php繪制趨勢圖

Service配置:

3 nagios 使用php繪制趨勢圖

要實(shí)現(xiàn)彈出的圖還需要拷貝status-header.ssi到/usr/local/nagios/share/ssi/目錄下面來。

#cp /root/new/pnp4nagios-0.6.21/contrib/ssi/status-header.ssi /usr/local/nagios/share/ssi

# chown -R nagios.nagios /usr/local/nagios/share/ssi

# ll /usr/local/nagios/share/ssi

-rw-r--r-- 1 nagios nagios 357 Sep 5 15:18 status-header.ssi

#

# service nagios restart
# service httpd restart

配置完成重啟nagios和httpd服務(wù)后,鼠標(biāo)移到趨勢小圖標(biāo)上面,就能顯示出彈出的圖形了。如果還不能顯示,有可能是ie的問題,請自行查證?;蛘邔②厔輬Durl中的graph改成popup,看看是否能顯示出圖形。如果可以顯示的話,應(yīng)該是ie瀏覽器的問題。

3 nagios 使用php繪制趨勢圖

問題解答

以下問題是我在安裝pnp-0.4.14.tar.gz版本中出現(xiàn)的問題,記錄下解決方法。

如果是pnp4nagios-0.6.21.tar.gz版本的話,在第一次點(diǎn)擊趨勢圖小圖標(biāo)時(shí),顯示的頁面中會有驗(yàn)證信息,比如有個(gè)rpm包沒有安裝等提示信息。只有所有的包驗(yàn)證都通過,則一般情況下,趨勢圖就能出來。

重啟nagios和httpd后,如果不能畫出圖形,并報(bào)以下錯誤:

3 nagios 使用php繪制趨勢圖

則使用yum intall php-gd安裝后重啟httpd服務(wù)。

如果問題還未解決,則使用如下命令查看:

# php -m|grep -i gd

該命令成功的返回字符為gd。我在安裝一個(gè)地方的監(jiān)測系統(tǒng)時(shí),報(bào)了:

3 nagios 使用php繪制趨勢圖

執(zhí)行# php -v也報(bào)錯,用ie打開 http://.../test.php也沒有顯示gd的一項(xiàng)。

后來發(fā)現(xiàn)gd.so文件不在/usr/lib/php/modules/下,而是在/usr/lib64/php/modules/中,將lib64下的文件復(fù)制到lib下就不會出現(xiàn)第二個(gè)錯誤了。對于第一個(gè)錯誤,將另外一地系統(tǒng)的dbase.so文件覆蓋掉這個(gè)文件后,問題解決。

這個(gè)問題可能是由于在安裝過程中,即安裝了32位的rpm包,又安裝了64位的rpm包引起。

這里提一下test.php文件,這個(gè)文件是測試php功能的,在安裝cacti的資料中都會提到這個(gè)測試來驗(yàn)證是否支持json擴(kuò)展。創(chuàng)建完這個(gè)文件后,需要重啟下httpd服務(wù)。文件內(nèi)容為:

vi /var/www/html/test.php

<?php
phpinfo();
phpinfo(INFO_GENERAL);
phpinfo(1);
?>

如果又報(bào)了以下錯誤:

3 nagios 使用php繪制趨勢圖

檢查下vi /usr/local/nagios/etc/nagios.cfg

process_performance_data=1參數(shù)值是否為1

host_perfdata_command=process-host-perfdata

service_perfdata_command=process-service-perfdata

是否打開。并且監(jiān)測腳本中是否增加了“process_perf_data 1”。

進(jìn)程數(shù)process不能出圖的解決

參考資料:

http://www.suiyiwen.com/question/4173

http://blog.chinaunix.net/uid-25266990-id-3437195.html

默認(rèn)安裝的插件check_procs沒有輸出性能數(shù)據(jù),可以通過修改源代碼的方式,解決了這個(gè)問題。

一具體實(shí)現(xiàn)方式

1 修改nagios-plugins-1.4.15\plugins\check_procs.c文件

找到 main (int argc, char **argv) 函數(shù),添加新的變量 pref:

char *perf;

perf = strdup("");

2 函數(shù)最后return result; 之前的 printf ("\n"); 修改為:

asprintf(&perf, "%s", perfdata ("processes", procs, "",

TRUE, wmax,

TRUE, cmax,

TRUE, 0,

FALSE, 0));

printf ("|%s\n",perf);

3 重新編譯源代碼,將新生成的check_procs替換掉老的文件

這樣,PHP終于可以出進(jìn)程數(shù)process的圖了。

二實(shí)現(xiàn)原理

PNP出圖的數(shù)據(jù)來自腳本在系統(tǒng)打印出來的字符串,而Nagios源碼提供的check_procs腳本系統(tǒng)輸出字符串不符合數(shù)據(jù)格式規(guī)范(沒有包含性能數(shù)據(jù)),所以就無法出圖了。

在源碼中加上性能數(shù)據(jù)的輸出,這樣就可以出圖了。

三 nagios性能數(shù)據(jù)格式

例:cpu_user:OK-0% cpu_system:OK-0% cpu_idle:WARNING-99>70% | cpu_user=0%;120;90; cpu_system=0%;100;70; cpu_idle=99%;100;70;

其中性能數(shù)據(jù)為|后面的斜體部分,格式如下:

‘label’=value[UOM];[warn];[crit];[min];[max]

注意事項(xiàng):

1.空格分割標(biāo)簽/值對 例如cpu_user=0%;100;90; cpu_system=0%;100;70; cpu_idle=99%;100;70;

2.label可以包含任何字符

3.單引號可省略,如果label中使用空格、等號和單引號,則需要需要單引號把label括起來。例如’a ‘b’ = c’=0%;100;90;

4.標(biāo)簽可以為任意長度,但最好少于19個(gè)字符并且唯一,(RRD有相關(guān)方面的限制),并且需要注意NRPE的返回值的限制(譯者:好像是4K限制)

5.兩個(gè)單引號為指定的轉(zhuǎn)義字符?

6.warn, crit, min or max 可以為空(比如,如果沒有定義閥值,大最小值則不適用)并且最后的分號可以省略

7.如果UOM為%,則不需要大最小值

8.value, min and max只能為負(fù)號“-” “0到9” 和小數(shù)點(diǎn)“.” 并且單位必須統(tǒng)一 例如:cpu_user=0.5%;99.9;-9;

9.warn and crit必須在某個(gè)區(qū)間格式,參見2.5章。單位也必須統(tǒng)一

10.UOM必須為以下其中之一

1.如果未指定,默認(rèn)為數(shù)字(整數(shù)和浮點(diǎn)數(shù))(比如用戶數(shù),進(jìn)程數(shù),負(fù)載等)

2. s – 秒 (可以為納秒us或毫秒ms) cpu_user=0s;100;90; cpu_system=0us;100;70; cpu_idle=0ms;100;70;

3. % – 百分號 cpu_user=0%;100;90; cpu_system=0%;100;70; cpu_idle=99%;100;70;

4. B – 字節(jié)(可可以是KB ,MB TB)cpu_user=0KB;100;90; cpu_system=0MB;100;70; cpu_idle=0B;100;70;

5. c – 一個(gè)計(jì)數(shù)器 (比如網(wǎng)卡的流量)cpu_user=10c;100;90;

Windows監(jiān)測及Pnp繪圖

Nagios監(jiān)測windows的那個(gè)默認(rèn)的cfg中的幾項(xiàng)中,繪制的Pnp不太符合要求,比如內(nèi)存監(jiān)測的數(shù)據(jù)為虛擬內(nèi)存。其他自定義的服務(wù)、進(jìn)程等由于輸出的信息,不符合Pnp制圖要求,因此,都不能繪制趨勢圖。

對NSClient++提供的nrpe協(xié)議進(jìn)行測試,發(fā)現(xiàn)大多數(shù)輸入的信息符合Pnp制圖要求,因此,可通過nrpe的監(jiān)測項(xiàng)來進(jìn)行繪圖。

要使NSClient++支持nrpe協(xié)議,需要對配置文件進(jìn)行些修改。配置文件為C:\Program Files\NSClient++\nsclient.ini,該文件需要增加以下幾項(xiàng),以支持nrpe的監(jiān)測:

; Section for NRPE (NRPEListener.dll) (check_nrpe) protocol options.

[/settings/NRPE/server]

command_timeout=60

allow nasty characters = true

use ssl=1

socket timeout=30

performance data=1

allow arguments=true

; Section for NSCA passive check module.

[/settings/NSCA/client]

; Target definition for: default

[/settings/NSCA/client/targets/default]

; Section for NSClient (NSClientServer.dll) (check_nt) protocol options.

[/settings/NSClient/server]

; Section for system checks and system settings

[/settings/check/system/windows]

; Confiure which services has to be in which state

[/settings/check/system/windows/service mapping]

; Configure crash handling properties.

[/settings/crash]

; Section for the EventLog Checker (CheckEventLog.dll).

[/settings/eventlog]

; A set of options to configure the real time checks

[/settings/eventlog/real-time]

; A set of filters to use in real-time mode

[/settings/eventlog/real-time/filters]

; Section for external scripts configuration options (CheckExternalScripts).

[/settings/external scripts]

; A list of aliases available. An alias is an internal command that has been "wrapped" (to add arguments). Be careful so you don't create loops (ie check_loop=check_a, check_a=check_loop)

[/settings/external scripts/alias]

; A list of scripts available to run from the CheckExternalScripts module. Syntax is: <command>=<script> <arguments>

[/settings/external scripts/scripts]

allow arguments=true

check_proc=scripts\\check_winprocess.exe

check_ping=scripts\\check_ping.bat 192.168.0.53

check_cmd=scripts\\check_winprocess.exe --filter "p_w_picpathname eq CMD.EXE" --compare ne --warn 1 --critical 1

check_winprocess=scripts\\check_winprocess.exe --warn 100 --critical 300

需要check_winprocess.exe程序支持,可到其官網(wǎng)下載并解壓到C:\Program Files\NSClient++\scripts下。但這個(gè)程序似乎也有問題,不太好用。

使用NSClient自帶的一些監(jiān)測項(xiàng),具體使用方法參考:

http://www.nsclient.org/nscp/wiki/NRPEClient

http://www.nsclient.org/nscp/

以下列舉一二:

首先執(zhí)行:

# ./check_nrpe -H 192.168.0.53

I (0,4,1,101 2013-05-18) seem to be doing fine...

如果有以上輸出信息,則說明nrpe可正常使用。

本人原先安裝的是NSCP-0.4.1.101-Win32.msi ,以上顯示的輸出信息正常。而如果安裝最新版本NSCP-0.4.2.17-Win32.msi,則顯示的信息不正常,以下的所有的監(jiān)測都無法正常??赡茏钚掳姹居衎ug。重新安裝老版本就沒問題。

# ./check_nrpe -H 192.168.0.53

CHECK_NRPE: No output returned from daemon. //這里顯示的信息不正常

#/check_nrpe -H 192.168.0.53 -c CheckProcState -a ShowAll explorer.exe=started winzip.exe=stopped

CHECK_NRPE: No output returned from daemon.

內(nèi)存監(jiān)測

http://www.nsclient.org/nscp/wiki/CheckSystem/checkMem

check_nrpe -H IP -p 5666 -c CheckMEM -a MaxWarn=80% MaxCrit=90% ShowAll type=physical type=page type=pagedtype=virtual

type有三項(xiàng),可在一條語句中一起監(jiān)測,或者分開監(jiān)測,如:

#./check_nrpe -H 192.168.0.53 -c CheckMEM -a MaxWarn=80% MaxCrit=90% ShowAll type=physical type=page type=virtual

CPU監(jiān)測

http://www.nsclient.org/nscp/wiki/CheckSystem/checkCPU

#./check_nrpe -H 192.168.0.53 -c CheckCPU -a warn=80 crit=90 time=20m time=10s time=4

UpTime監(jiān)測

http://www.nsclient.org/nscp/wiki/CheckSystem/checkUpTime

#./check_nrpe -H 192.168.0.53 -c CheckUpTime -a MinWarn=1d MinCrit=12h

進(jìn)程監(jiān)測

http://www.nsclient.org/nscp/wiki/CheckSystem/checkProcState

#./check_nrpe -H 192.168.0.53 -c CheckProcState -a ShowAll explorer.exe=started winzip.exe=stopped

服務(wù)監(jiān)測

http://www.nsclient.org/nscp/wiki/CheckSystem/checkServiceState

#./check_nrpe -H 192.168.0.53 -c CheckServiceState -a ShowAll nscp=started WebClient=stopped

不過,服務(wù)監(jiān)測的輸出數(shù)據(jù)不符合Pnp制圖要求。

Counter監(jiān)測

http://www.nsclient.org/nscp/wiki/CheckSystem/checkCounter

#./check_nrpe -H 192.168.0.53 -c CheckCounter -a "Counter:mutex=\\Objects\\Mutexes" ShowAll MaxWarn=500 MaxCrit=1000

#./check_nrpe -H 192.168.0.53 -c CheckCounter -a "Counter:proc=\\Processor(_total)\\% Processor Time" ShowAll MaxWarn=50 MaxCrit=80

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

本文名稱:3nagios使用php繪制趨勢圖-創(chuàng)新互聯(lián)
URL標(biāo)題:http://www.muchs.cn/article44/coipee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、服務(wù)器托管、企業(yè)網(wǎng)站制作外貿(mào)建站、網(wǎng)站制作、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)