# 一、简介 Nagios 监控的原理我这里不再做过多介绍,我们使用最快速的方法安装 Nagios 监控以及配置可视化界面。 为了演示方便,我这里就准备一台阿里云的机器,系统安装的 CentOS 7.9。  # 二、安装 安装方法超级简单,我们不按照官方所说,因为 yum 仓库里面已经都把软件包给我们做好了,依赖也是可以解决的,可以说是最快速的方法安装。我们直接使用一条命令即可。 ```bash yum install pnp4nagios -y ``` ## 启动服务 一条命令监控服务 nagios 就安装好了,非常简单,下面我们启动服务查看一下。 ```bash systemctl start httpd systemctl start nagios ``` 然后访问` http://YOUR_SERVER_IP/nagios`,默认的账号密码都是 nagiosadmin,如果要修改密码,修改文件`/etc/nagios/passwd`。  可以看到监控到本机了,监控数据还在收集中,主机和服务的数据都是状态数据,默认监控数据写入到 /var/log/nagios/nagios.log 文件中。 目前主要是状态数据,并不能进行作图显示,下面我们为其配置可视化界面。 # 三、配置 PNP ## Bulk Mode with NPCD 我们查看一下 pnp4nagios 的配置文件,里面有两个我们会用到的,一个是 nagios.cfg,一个是 misccommands.cfg。 ```bash [root@wangzan-test ~]# ll /etc/pnp4nagios/ total 84 -rw-r--r-- 1 root root 29383 Jun 8 2015 background.pdf drwxr-xr-x 2 root root 4096 Jun 29 22:41 check_commands drwxr-xr-x 2 root root 4096 Jun 8 2015 config.d -rw-r--r-- 1 root root 9595 Jun 8 2015 config.php -rw-r--r-- 1 root root 1290 Jun 8 2015 misccommands.cfg -rw-r--r-- 1 root root 1655 Jun 8 2015 nagios.cfg -rw-r--r-- 1 root root 4134 Jun 8 2015 npcd.cfg drwxr-xr-x 2 root root 4096 Jun 29 22:41 pages -rw-r--r-- 1 root root 1112 Jun 8 2015 pnp4nagios_release -rw-r----- 1 root nagios 2463 Jun 8 2015 process_perfdata.cfg -rw-r--r-- 1 root root 651 Jun 8 2015 rra.cfg ``` 查看一下 nagios.cfg,里面有三种模式可选,我们选择 Bulk Mode with NPCD 这种模式,这种模式性能相对来说比较好,其他模式详细介绍请查看文档: https://docs.pnp4nagios.org/pnp-0.6/config#bulk_mode_with_npcd  ```bash # # Bulk / NPCD mode # process_performance_data=1 # *** the template definition differs from the one in the original nagios.cfg # service_perfdata_file=/var/log/pnp4nagios/service-perfdata service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$ service_perfdata_file_mode=a service_perfdata_file_processing_interval=15 service_perfdata_file_processing_command=process-service-perfdata-file # *** the template definition differs from the one in the original nagios.cfg # host_perfdata_file=/var/log/pnp4nagios/host-perfdata host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$ host_perfdata_file_mode=a host_perfdata_file_processing_interval=15 host_perfdata_file_processing_command=process-host-perfdata-file ``` 我们把上面的配置文件写入到 nagios 的配置文件 nagios.cfg 里面,`process_performance_data` 这一项默认是没有开启的,我们开启就行,下面的几项直接添加就行,默认是注释掉的。 这部分参数的意思是,Nagios 要处理这些性能指标数据,把数据写入到文件,通过上图,类似于其中的 Spool File。 我们查看一下 misccommands.cfg 这个配置文件,同样找到 Bulk with NPCD mode 这个模式的配置方法。 ```json # # Bulk with NPCD mode # #define command { # command_name process-service-perfdata-file # command_line /bin/mv /var/log/pnp4nagios/service-perfdata /var/spool/pnp4nagios/service-perfdata.$TIMET$ #} #define command { # command_name process-host-perfdata-file # command_line /bin/mv /var/log/pnp4nagios/host-perfdata /var/spool/pnp4nagios/host-perfdata.$TIMET$ #} ``` 我们把这部分内容添加到文件 /etc/nagios/objects/commands.cfg 末尾中,并取消其注释。 添加完成之后,我们启动 NPCD 服务,这样服务就可以去这个 Spool Directory 里面去处理数据。 ```bash systemctl restart nagios systemctl restart npcd ``` ## 验证 PNP4Nagios 如果生成下面数据,证明运行正常。 ```bash [root@wangzan-test pnp4nagios]# ll /var/lib/pnp4nagios/localhost/ total 1900 -rw-rw-r-- 1 nagios nagios 768224 Jun 29 23:06 PING.rrd -rw-rw-r-- 1 nagios nagios 2589 Jun 29 23:06 PING.xml -rw-rw-r-- 1 nagios nagios 384952 Jun 29 23:06 Root_Partition.rrd -rw-rw-r-- 1 nagios nagios 1973 Jun 29 23:06 Root_Partition.xml -rw-rw-r-- 1 nagios nagios 384952 Jun 29 23:07 SSH.rrd -rw-rw-r-- 1 nagios nagios 1887 Jun 29 23:07 SSH.xml -rw-rw-r-- 1 nagios nagios 384952 Jun 29 23:06 Swap_Usage.rrd -rw-rw-r-- 1 nagios nagios 1915 Jun 29 23:06 Swap_Usage.xml ``` 那我们查看一下 PNP4Nagios 的 web 界面展示。 浏览器访问 IP/pnp4nagios,效果和 CACTI 这个监控软件的效果差不多。  现在刚刚收集数据,指标还不是很多,图像还没有完全生成出来。 ## 和 Nagios web 集成 目前我们是通过单独的一个 URL 访问的展示页面,那如果通过点击 Nagios 一个个指标查看其状态值呢? > PNP4Nagios can also be integrated into the Nagios Core web interface, this is quite useful however it does require some changes to your Nagios object definitions. > > Nagios Core uses the **action_url** directive in object definitions to provide an icon/link when viewing host or service objects in the web interface. 我们首先在 /etc/nagios/objects/templates.cfg 定义一下使用 pnp 的 host 和 service。把下面两个定义添加到 templates.cfg 的最后端。 ```json define host { name host-pnp action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_ register 0 } define service { name service-pnp action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$ register 0 } ``` 为了让其他的 template 也可以使用刚刚定义的 host 和 serivce,我们使用 use 这个参数,来修改存在的两个 template,每个定义添加一条 use 即可,类似如下: ```json define host{ name generic-host ; The name of this host template use host-pnpdefine service{ name generic-service ; The 'name' of this service template use service-pnp ``` 修改完成之后,重启 nagios 服务,然后我们再查看页面,就可以看到前面都多了一个趋势图的小图标。  点击相应的服务。  支持 Nagios 监控的可视图我们已经配置好了,关于其他监控配置,请查看官方文档。 参考文档:https://support.nagios.com/kb/article/nagios-core-performance-graphs-using-pnp4nagios-801.html # 欢迎大家扫码关注,获取更多信息 