3 nagios 使用php绘制趋势图

发布时间:2020-03-29 01:52:56

来源:51CTO

阅读:1013

作者:sandish

Nagios Pnp绘制趋势图

软件需求:

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

有关资料上说的cacti上的图,好像都是用snmp协议获取的数据画出来的。因此,如果监测不都是用snmp获取数据,也不希望安装cacti的话,倒是可以用pnp直接在nagios上显示趋势图。个人认为pnp画趋势图一点都不差。

参考资料

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位操作系统)

# rpm -ivh libdbi-0.8.1-2.1.x86_64.rpm (64位操作系统)

或直接用yum:

#yum install libdbi

# rpm -ivh lua-5.1.4-2.el5.rf.x86_64.rpm (64位操作系统)

# rpm -ivh lua-5.1.4-2.el5.rf.i386.rpm (32位操作系统)

以上两个为rrdtoo的依赖包。

以下三个包要一起安装否则会报一些错误,如找不到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位操作系统)

# 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位操作系统)

下载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(如果依赖包没有安装,请根据提示到网上下载相应的依赖包进行安装)

编译安装

参考资料: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

创建默认配置文件

以下默认的sample例子配置文件,可能并不存在,而是已经有默认的配置文件了。这种情况可能会导致复制失败。不过默认配置文件已经有了,就可以了。

# 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服务

# 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很重要!没有的话就不能产生图形文件了!

}

# '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$ #显示主机所有服务的图

#action_url /pnp4nagios/graph?host=$HOSTNAME$&srv=_HOST_ #显示ping的状态图

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

}

# 修改主机配置文件,例如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%

其他相关的define host, define service都要修改。

#验证配置文件,无误后重启nagios和httpd 服务

# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

#配置文件验证通过后,重启服务

# service nagios restart

# service httpd restart

这里我要特别说明一下,我在配置这个趋势图时,并没有创建host-pnp和srv-pnp,如果按照上面写的,则所有的被监测的cfg配置文件中,都要在host和service的use中,增加host-pnp或srv-pnp。这太麻烦了。由于所有的被监测设备都是从linux-vod-sw模板和linux-vod-sw继承的,而且,所有的service都是从generic-service继承的,因此,我就直接改这个模板,将action_url和process_perf_data参数都加在模板中了,这样就不需要修改每个监测机器的配置文件了。

# 至此,安装完成。登录nagios控制台,选择host主机名旁边(或者service名旁边)的趋势小图标,即可看到趋势图。如果是第一次使用的话,就有一个页面,告诉用户配置是否全部符合要求,如果全部都正确的话,会要求用户删除instal.php,我是直接改名,改名后,再次点击趋势小图标,就能显示趋势图了。

# cd /usr/local/pnp4nagios/share

# rm install.php

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

在templates.cfg 模板文件中的,新添加的action_url后面还可以加上 class 和 rel 以支持鼠标移上去后就能显示弹出的趋势图:

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$

注意这里的引号和空格。另外,服务器主机的弹出图的脚本中最后加了&srv=_HOST_,表示只显示主机的ping包。否则所有的图显示出来比较要命。因此,在配置了这个功能后,主机的趋势图配置中,最好是加上“&srv=_HOST_”,这两项配置的截图为:

Host配置:

Service配置:

要实现弹出的图还需要拷贝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服务后,鼠标移到趋势小图标上面,就能显示出弹出的图形了。如果还不能显示,有可能是ie的问题,请自行查证。或者将趋势图url中的graph改成popup,看看是否能显示出图形。如果可以显示的话,应该是ie浏览器的问题。

问题解答

以下问题是我在安装pnp-0.4.14.tar.gz版本中出现的问题,记录下解决方法。

如果是pnp4nagios-0.6.21.tar.gz版本的话,在第一次点击趋势图小图标时,显示的页面中会有验证信息,比如有个rpm包没有安装等提示信息。只有所有的包验证都通过,则一般情况下,趋势图就能出来。

重启nagios和httpd后,如果不能画出图形,并报以下错误:

则使用yum intall php-gd安装后重启httpd服务。

如果问题还未解决,则使用如下命令查看:

# php -m|grep -i gd

该命令成功的返回字符为gd。我在安装一个地方的监测系统时,报了:

执行# php -v也报错,用ie打开 http://.../test.php也没有显示gd的一项。

后来发现gd.so文件不在/usr/lib/php/modules/下,而是在/usr/lib64/php/modules/中,将lib64下的文件复制到lib下就不会出现第二个错误了。对于第一个错误,将另外一地系统的dbase.so文件覆盖掉这个文件后,问题解决。

这个问题可能是由于在安装过程中,即安装了32位的rpm包,又安装了64位的rpm包引起。

这里提一下test.php文件,这个文件是测试php功能的,在安装cacti的资料中都会提到这个测试来验证是否支持json扩展。创建完这个文件后,需要重启下httpd服务。文件内容为:

vi /var/www/html/test.php

phpinfo();

phpinfo(INFO_GENERAL);

phpinfo(1);

?>

如果又报了以下错误:

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

process_performance_data=1参数值是否为1

host_perfdata_command=process-host-perfdata

service_perfdata_command=process-service-perfdata

是否打开。并且监测脚本中是否增加了“process_perf_data 1”。

进程数process不能出图的解决

参考资料:

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

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

默认安装的插件check_procs没有输出性能数据,可以通过修改源代码的方式,解决了这个问题。

一具体实现方式:

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

找到 main (int argc, char **argv) 函数,添加新的变量 pref:

char *perf;

perf = strdup("");

2 函数最后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终于可以出进程数process的图了。

二实现原理

PNP出图的数据来自脚本在系统打印出来的字符串,而Nagios源码提供的check_procs脚本系统输出字符串不符合数据格式规范(没有包含性能数据),所以就无法出图了。

在源码中加上性能数据的输出,这样就可以出图了。

三nagios性能数据格式

例: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;

其中性能数据为|后面的斜体部分,格式如下:

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

注意事项:

1.空格分割标签/值对 例如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.标签可以为任意长度,但最好少于19个字符并且唯一,(RRD有相关方面的限制),并且需要注意NRPE的返回值的限制(译者:好像是4K限制)

5.两个单引号为指定的转义字符?

6.warn, crit, min or max 可以为空(比如,如果没有定义阀值,最大最小值则不适用)并且最后的分号可以省略

7.如果UOM为%,则不需要最大最小值

8.value, min and max只能为负号“-” “0到9” 和小数点“.” 并且单位必须统一 例如:cpu_user=0.5%;99.9;-9;

9.warn and crit必须在某个区间格式,参见2.5章。单位也必须统一

10.UOM必须为以下其中之一

1.如果未指定,默认为数字(整数和浮点数)(比如用户数,进程数,负载等)

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 – 字节(可可以是KB ,MB TB)cpu_user=0KB;100;90; cpu_system=0MB;100;70; cpu_idle=0B;100;70;

5. c – 一个计数器 (比如网卡的流量)cpu_user=10c;100;90;

Windows监测及Pnp绘图

Nagios监测windows的那个默认的cfg中的几项中,绘制的Pnp不太符合要求,比如内存监测的数据为虚拟内存。其他自定义的服务、进程等由于输出的信息,不符合Pnp制图要求,因此,都不能绘制趋势图。

对NSClient++提供的nrpe协议进行测试,发现大多数输入的信息符合Pnp制图要求,因此,可通过nrpe的监测项来进行绘图。

要使NSClient++支持nrpe协议,需要对配置文件进行些修改。配置文件为C:\Program Files\NSClient++\nsclient.ini,该文件需要增加以下几项,以支持nrpe的监测:

; 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: =

[/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程序支持,可到其官网下载并解压到C:\Program Files\NSClient++\scripts下。但这个程序似乎也有问题,不太好用。

使用NSClient自带的一些监测项,具体使用方法参考:

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

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

以下列举一二:

首先执行:

# ./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,则显示的信息不正常,以下的所有的监测都无法正常。可能最新版本有bug。重新安装老版本就没问题。

# ./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.

内存监测

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有三项,可在一条语句中一起监测,或者分开监测,如:

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

CPU监测

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监测

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

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

进程监测

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

服务监测

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

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

不过,服务监测的输出数据不符合Pnp制图要求。

Counter监测

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

nagios php升级,3 nagios 使用php绘制趋势图相关推荐

  1. python分析数据走势图_python绘制趋势图的示例

    import matplotlib.pyplot as plt #plt用于显示图片 import matplotlib.image as mping #mping用于读取图片 import date ...

  2. Excel应该这么玩——7、我是预言家:绘制趋势图

    让我们先看一个场景:你是公司销售部的员工,你手里有公司最近几年的销售额相关的数据,经理希望你预测下个月的销售额.盯着一堆数据,你或许会想到画一张XY坐标图,然后将每个月份的销售额标定为一个坐标.但是下 ...

  3. 使用highcharts绘制趋势图

    先上图 难点在于,两种数据使用不同的表现形式,一种是column,一种是spline(平滑曲线) /** * 绘制趋势图 * id HTML Canvas 的ID * title 标题 * subti ...

  4. python的发展趋势图_用Python绘制趋势图

    我在数据帧中有以下数据:+----------------------+--------------+-------------------+ | Physician Profile Id | Pro ...

  5. 为你的股票绘制趋势图

    手里有一点点公司的股票, 拿不准在什么时机抛售, 程序员也没时间天天盯着看,不如动手写个小程序, 把股票趋势每天早上发到邮箱里,用 python 的 pandas, matplotlib 写起来很容易 ...

  6. nagios数据 mysql_读取NAGIOS数据库至MYSQL

    --By shine 1,首先需要安装ndoutils以将nagios的数据能导入到mysql数据库中. 兼容问题:ndo2 1.4b9 换成了 1.4b7就解决没数据问题了. 确认DBD-mysql ...

  7. nagios监控linux主机,Nagios监控平台之二:nrpe监控远程Linux主机 | 旺旺知识库

    Nagios系列文章: Nagios监控平台之二:nrpe监控远程Linux主机 监控监控linux本地主机时,我们可以直接更改配置文件进行监控,如果需要监控的主机与nagios不在同一机器上,即监控 ...

  8. Nagios(八)—— Nagios Web 端管理工具Nagiosql

    NagiosQL 是专为 nagios 设计的 web 图形化管理应用,主要作用就是操作数据库和配置文件,其中包括将配置文件的信息写到数据库中,在数据库中修改 Nagios的监控配置信息,并将数据库中 ...

  9. nagios二次开发(四)---nagios监控原理和nagios架构简介

    nagios监控原理 下面根据上面摘自网络的原理图对nagios的监控原理进行一下简单的说明: 1.nagios通过nsca进行被动监控.那么什么是被动监控呢?被动监测:就是指由被监测的服务器主动上传 ...

最新文章

  1. 接近WinHEC 2008
  2. 使用SpringBoot开启微服务之旅
  3. codevs 1472 体检
  4. vc关于dialog绘图闪屏和多层覆盖的处理方法
  5. 模拟计算机病毒效果 js,用户登录模拟效果(原生js实现)
  6. POJ 1422 Air Raid (最小路径覆盖)
  7. mac 安装nodejs_阿里开源——用于前端和nodejs的轻量级任务管理和构建工具Dawn
  8. JAVA入门级教学之(构造方法)
  9. Google 与微软的浏览器之争
  10. php 置多条cookie,php 在cookie存储多个的简单示例
  11. office 论文 页码_还在花钱找人排版?这份最全攻略,让你论文一次过!
  12. java1.7环境_java1.7环境变量设置
  13. 兆能Z82机顶盒-卡刷-刷机固件
  14. 计算机二级Python第二弹课后题来袭!冲冲冲!!!
  15. 苹果id退出后数据还在吗_答疑你的手机连接WiFi后,会关闭移动数据吗?
  16. Day13-寻觅踪迹
  17. 什么是vr直播?新上线APP 3分钟开启vr直播大秀
  18. IC圈的世界杯 | 论芯片设计的胜利十一人
  19. Invalid header signature; read 0x3C0A0D0A0DBFBBEF, expected 0xE11AB1A1E011CFD0
  20. 入职华为od一个月的感受

热门文章

  1. Guided Filter对三维点云降噪
  2. C语言 time 函数使用
  3. 少数民族高考成绩查询2021,2021少数民族高考加分政策
  4. flask + mysql 校园报修微信小程序系统开发
  5. OTT营销之风正盛,商家到底该怎么投?
  6. 【HaaS Python硬件积木】AS608指纹识别模块 打造指纹门禁 开门有手就行
  7. 运维新手必备的10个基本Linux命令
  8. 2021 ICPC Asia Regionals Online Contest (II) Problem G. Limit
  9. 几种常见算法的Python实现
  10. wps软件打不开共享超链接_wps版本word超链接无法打开指定文件