将nagios监控数据可视化


前言
nagios系统可以像zabbix、cacti类软件一样,将收集到的各项监控指标性能数据以图形的形式动态展示出来。使监控更加直观化,可进行各项灵活的定制,方便对性能数据进行对比分析。nagios可以用于监控数据画图的插件有多种,这里以pnp4nagios软件为例进行说明。

本文所用到系统环境
OS:CentOS release 6.8 (Final) 2.6.32-642.el6.x86_64
还有一个重要环境:互联网(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的官网上下载的,现将它和nagios其它软件包一起放在此处百度网盘 密码:ayhk

2. 安装pnp4nagios

  • 安装前的准备
    笔者使用的是pnp4nagios的0.6.25版本,根据官网说明安装它以前需要满足以下条件:
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,根据提示执行相应的make操作,完成安装过程,相应指令如下:

    tar xf pnp4nagios-0.6.25
    cd pnp4nagios
    ./configure
    configure完成以后会出现相应的汇总信息:  
    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运行环境测试也会用到。然后根据提示信息依次执行:

make all
make install
make fullinstall

这里对make fullinstall进行一下说明,这一指令其实包含有三个指令:

  1. make install-webconf
    复制一个名为pnp4nagios.conf的文件到/etc/httpd.conf.d/目录下,主要用于从web可以访问pnp4nagios。
  2. make install-config 复制process_perfdata.pl和npcd的配置文件到/etc/pnp中,为可选项。
    3.make install-init 安装npcd init脚本。

3. 测试pnp4nagios安装结果

重启web服务,并验证pnp4nagios运行环境是否已准备就绪。

service httpd restart

打开浏览器输入上面汇总信息的HTML URL即:http://localhost/pnp4nagios。正常情况下会得到如下页面:

pnp4nagios运行环境测试图1
pnp4nagios运行环境测试图2

4. 了解pnp4nagios的工作模式

进行pnp4nagios的配置之前,需要先确定要使用pnp4nagios的哪种工作模式,它支持的有sync mode(应该是默认模式)、bulk mode、bulk mode with npcd、bulk with npcd and npcdmod和gearman mode共5种运行模式,按照官网的说明,我这里选择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.

简单来说这种模式的好处就是它将收集到原始的性能统计数据工作和对这些数据进行处理然后生成RRD和XML文件的工作分开了,前者由nagios完成,后者则由专门的守护进程NPCD来完成,提高了nagios的工作效率。
以下为这种模式的工作原理示图:

pnp4nagios bulk mode with npcd

5. 配置pnp4nagios及nagios

要想pnp4nagios工作起来必须对pnp4nagios和nagios的配置文件进行修改,让它们能够联动起来。按照以下步骤进行配置:

  • 修改nagios主配置文件 (/usr/local/nagios/etc/nagios.cfg)
  • 打开性能数据处理开关
process_performance_data=1   #默认为0
  • 修改性能数据文件位置
host_perfdata_file=/usr/local/pnp4nagios/var/host-perfdata
service_perfdata_file=/usr/local/pnp4nagios/var/service-perfdata 
#记得pnp4nagios安装时的配置信息汇总信息吧,这里用到了
  • 修改性能数据文件格式模板
host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIM
ET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$
HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKC
OMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::
$HOSTSTATETYPE$   #内容很长,修改的时候记得写在一行不要人为分行  
host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIM
ET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$
HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKC
OMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::
$HOSTSTATETYPE$   #内容很长,修改的时候记得写在一行不要人为分行  
  • 设置性能数据文件写入模式及处理间隔
host_perfdata_file_mode=a
service_perfdata_file_mode=a   #默认为即a,append
host_perfdata_file_processing_interval=15  #设置每15秒处理一次性能数据文件
service_perfdata_file_processing_interval=15
  • 配置处理这些性能数据文件的指令
host_perfdata_file_processing_command=process-host-perfdata-file
service_perfdata_file_processing_command=process-service-perfdata-file  

这两个指令非常关键,它需要在nagios的commands.cfg中定义好,且命令名称跟此处完全一致。

  • 定义处理文件指令的详细参数
    在nagios的commands.cfg中配置如下参数:

    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上可以调用pnp4nagios
    要实现从nagios web页面上直接打开pnp4nagios,从而查看其输出的图形,还需要配置很关键的一个参数 action_url,我选择将它直接定义在host和service的模板中。在实际工作中有的监控项目可能并不需要画图出来,可以在定义监控时,在相应的服务中设置process_perf_data 0,即不处理此服务的性能数据。默认在服务和主机模板中它是设置为1的。
    要想看到一个监控项目输出的图形,必须将process_perf data设置为1,同时调用的有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的内容,确认其中配置的有无错误的地方,比如使用的用户是否和nagios的一致为nagios,调用的process_perfdata.pl是否是pnp4nagios libexec下的。一般情况下此文件保持默认参数即可。

  • 设置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 页面相应的主机和服务后会多一个小的图标,如下:

pnp4nagios图标

点击其中一个图标可以看到其动态输出效果,如下所示:

pnp4nagios效果图

7. pnp4nagios的官方文档

pnp4nagios还支持很多高级功能,如在配置 文件中使用正则表达式,以实现更为复杂的匹配,支持自定义page,将想要放在一起的主机及服务呈现在一个页面中,支持数据导出。这些在它的官方网站上都有介绍,文中的原理图也来自pnp4nagios的官网。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容