NRPE默认端口号:5666 Nagios运行在服务端 监控 1,收集信息,对监控主机,服务等进行检测,记录相关信息 2,图形表现 3,邮件(短信,微信等)报警 4,开发接口(写程序自定义监控) 开源的监控软件 mrtg ntop cacti nagios zabbix Ganglia centreon 监控宝 360监控 阿里云监控 等 ============================================================================= nagios www.nagios.org Nagios Core --主监控引擎和基本web管理接口 Nagios Core Plugins --监控命令包 Nagios Core Frontends --类似皮肤 Nagios Core Addons --其它的project(支持其它各种功能的额外项目) 准备一台虚拟机开始安装nagios(桥接网络) 安装前准备: 1,主机名 2,关闭firewalld,selinux 3,关闭NetworkManager,并配置静态ip 4,配置本地yum,epel源,163源 5,时间同步 安装步骤: 1,搭建rpm版lamp,不需要mysql(源码版lamp也可以,但nginx不行,因为后面nagios的web子配置文件里的语法都是apache的语法) # yum install httpd httpd-devel gd gd-devel php 2,安装nagios # yum install nagios\* 安装完后确认用户 # id nagios uid=988(nagios) gid=983(nagios) groups=983(nagios) # id apache uid=48(apache) gid=48(apache) groups=48(apache),983(nagios) apache子配置文件路径 # /etc/httpd/conf.d/nagios.conf 主配置文件路径 # /etc/nagios/nagios.cfg 子配置文件路径 # ls /etc/nagios/objects/ commands.cfg localhost.cfg switch.cfg timeperiods.cfg contacts.cfg printer.cfg templates.cfg windows.cfg plugins(监控命令)路径,目录下有很多check开头的命令 # ls /usr/lib64/nagios/plugins/ 3,设置http访问nagios的验证用户和密码 # htpasswd /etc/nagios/passwd nagiosadmin New password: Re-type new password: Updating password for user nagiosadmin # nagios -v /etc/nagios/nagios.cfg --检查配置文件正确性 # systemctl restart httpd # systemctl restart nagios # systemctl enable httpd # systemctl enable nagios # systemctl status httpd # systemctl status nagios 使用firefox访问: 访问路径http://IP/nagios 用户 nagiosadmin nagios server ---------- client ============================================================================= 现在查看web界面,默认只监控了localhost,并监控了其8个服务 一些小操作: 1,如果http服务为黄色,是警告,则需要把网站家目录里加一个主页进去(家目录为空,他就会警告)。 但需要等它下一次check才会OK。如果要手动check,可以点http,再右边点Re-schedule the next check of this service去强制check,就OK了 echo haha > /var/www/html/index.html 2,默认http和ssh是关闭通知的,是因为在localhost.cfg里这两个服务有一句 notifications_enabled 0。 也可以手动打开,点进去,再右边点enabled notifications for this service. 如果要永久打开这两个服务的通知,那么就修改下面文件里的notifications_enabled 0为1;或者直接删除notifications_enabled 0,因为默认通知是打开的. vim /etc/nagios/objects/localhost.cfg 3,关闭ssh服务,刷新web界面,还是没有critical. 点击ssh,可以看到下一次计划的check时间。如果不等的话,在右边点Re-schedule the next check of this service强制check,再刷新就critical ============================================================================= 关于nagios配置文件之间的联系讲解示例 # vim /etc/nagios/nagios.cfg cfg_file=/etc/nagios/objects/localhost.cfg # vim /etc/nagios/objects/localhost.cfg define host{ use linux-server --模版 host_name localhost --主机名 alias localhost --主机别名 address 127.0.0.1 --被监控机器的IP } define hostgroup{ hostgroup_name linux-servers alias Linux Servers members localhost --linux Servers组现在只有localhost这一个成员 } --下面是8个默认定义的服务,我以监控磁盘利用率的这一段为例 define service{ use local-service --模版,在templates.cfg 里定义的 host_name localhost --主机名,调用的是同配置文件里define host里定义的host_name service_description Root Partition --描述,会在web界面显示的一个标题 check_command check_local_disk!20%!10%!/ --检测利用率的命令,free空间小于20%就报警,小于10就critcal警告 } # vim /etc/nagios/objects/templates.cfg define host{ name linux-server use generic-host --linux主机模版也使用了一个叫generic-host的模版,也在templates.cfg里 check_period 24x7 --在timeperiods.cfg 里定义的时间段 check_interval 5 retry_interval 1 max_check_attempts 10 check_command check-host-alive --在commands.cfg 里定义的命令 notification_period workhours --通知时间在timeperiods.cfg里定义的 notification_interval 120 --通知间隔 notification_options d,u,r --通知选项 contact_groups admins --通知组,在contacts.cfg 里定义 register 0 --不注册,表示这只是一个模版,被调用,不会被nagios进程认为就是一台主机 } # vim /etc/nagios/objects/commands.cfg define command{ command_name check-host-alive command_line $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5 } --命令都在libexec下,用--help去查 # /usr/lib64/nagios/plugins/check_ping --help ============================================================================= 问题: 如何监控本地的/boot分区 使用80%警告,使用90% critical define service{ use local-service host_name localhost service_description Boot Partition check_command check_local_disk!20%!10%!/boot } 问题: 如何监控本机zombie进程 5个警告 10个 critical define service{ use local-service ; Name of service template to use host_name localhost service_description Zombie Total Processes check_command check_local_procs!5!10!Z } 例:如何增加监控本机的ftp服务 思路步骤: 1,看/usr/lib64/nagios/plugins/下是否有检测ftp的命令,如果没有,自己开发 2,查看相关检测命令的参数文档,按照需求定义你的监控方法,并加入到command.cfg里 3,在localhost.cfg里定义这个服务,并使用第二步定义的命令,并传入值 # vim /etc/nagios/objects/commands.cfg --下面一段默认就有,不需要加,直接改一下 define command{ command_name check_ftp command_line $USER1$/check_ftp -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ } # vim /etc/nagios/objects/localhost.cfg --加上下面一段 define service{ use local-service host_name localhost service_description FTP check_command check_ftp!1!3 } # /etc/init.d/nagios restart 练习: 1,如果本机ftp服务为监听2121端口,应该如何监控 # vim /etc/vsftpd/vsftpd.conf listen_port=2121 --加上这一句 # /etc/init.d/vsftpd restart # netstat -ntlup |grep ftp # vim /etc/nagios/objects/localhost.cfg ---加下面一段 define service{ use local-service host_name localhost service_description FTP --标题改成FTP check_command check_ftp_2121!1!3!2121 --命令我这里是没有的,在command.cfg里默认有一个check_ftp,没有 --check_ftp_2121这个,所以要手动去加;!为参数分隔符,1是第一个参数,3是第二个参数,2121是第三个参数;它们对应于我下面定义的-w -c -p } # vim /etc/nagios/objects/commands.cfg define command{ command_name check_ftp_2121 command_line $USER1$/check_ftp -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p $ARG3$ } --直接使用监控命令去手工check一下,OK的 # /usr/lib64/nagios/plugins/check_ftp -w 1 -c 3 -p 2121 FTP OK - 0.004 second response time on port 2121 [220-############################# 220-#]|time=0.00389s;1.000000;3.000000;0.000000;10.000000 # systemctl restart nagios 练习: 监控本机的mysql # vim /etc/nagios/objects/localhost.cfg define service{ use local-service host_name localhost service_description MYSQL check_command check_mysql!root!123 } # vim /etc/nagios/objects/commands.cfg define command{ command_name check_mysql command_line $USER1$/check_mysql -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ --第一个参数对应上面的root,第二个对应密码123 } --手动check一下mysql,OK # /usr/lib64/nagios/plugins/check_mysql -u root -p123 Uptime: 189 Threads: 1 Questions: 5 Slow queries: 0 Opens: 12 Flush tables: 1 Open tables: 6 Queries per second avg: 0.026 # systemctl restart nagios 练习: 加一个本机监控的service,监控机器运行时间,运行了超过365天就warning,超过1000天就critical 答案: # vim /etc/nagios/objects/commands.cfg define command{ command_name check_local_uptime command_line $USER1$/check_uptime -w $ARG1$ -c $ARG2$ -u $ARG3$ } # vim /etc/nagios/objects/localhost.cfg define service{ use local-service host_name localhost service_description UPTIME check_command check_local_uptime!365!1000!days } # systemctl restart nagios ============================================================================================= nagios server ----》 nagios client 10.1.1.2 10.1.1.3 我们把监控的服务分为公共和私有 公共(public):如ssh,http,ftp,mysql等。监控本地或远程的公共服务,都可以直接配置 私有(private):如load,users,disk usage等。监控本地私有服务直接配置就好,监控远程私有服务,需要服务和被监控端安装nrpe 例:监控远程服务器的普通服务(公共服务)。如ssh,http,ftp,mysql等 如:我的被监控端IP为10.1.1.3 1.在nagios服务器的主配置文件里加上10.1.1.3的主机配置文件 # vim /etc/nagios/nagios.cfg cfg_file=/etc/nagios/objects/10.1.1.3.cfg 2,创建这个10.1.1.3.cfg # vim /etc/nagios/objects/10.1.1.3.cfg define host{ use linux-server host_name 10.1.1.3 --主机名,最好/etc/hosts里对应好IP,我这里没有做,就直接写IP alias 10.1.1.3 --显示到web上的名字 address 10.1.1.3 --实际被监控主机IP } define hostgroup{ hostgroup_name remote linux-servers --这里我定义了一个新组,不能和localhost.cfg里的组同名,会冲突 alias remote Linux Servers members 10.1.1.3 } --下面是公共服务,这里我只写了四个,你可以自行增加 define service{ use local-service host_name 10.1.1.3 service_description PING check_command check_ping!100.0,20%!500.0,60% } define service{ use local-service host_name 10.1.1.3 service_description SSH check_command check_ssh } define service{ use local-service host_name 10.1.1.3 service_description HTTP check_command check_http } define service{ use local-service host_name 10.1.1.3 service_description FTP check_command check_ftp!1!3 } # nagios -v /etc/nagios/nagios.cfg # systemctl restart nagios ========================================================================== 例:监控远程的私有服务 10.1.1.2 10.1.1.3 nagios监控端 被监控linux check_disk check_nrpe --------- check_nrpe check_swap SSL传输 check_load等 第一大步:nagios监控端上的操作 1,确认有如下的命令,如果没有,则yum install nagios-plugins-nrpe /usr/lib64/nagios/plugins/check_nrpe 2,增加check_nrpe命令到commands.conf文件里 # vim /etc/nagios/objects/commands.cfg define command{ command_name check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ } --c参数后接command, 也就说check_nrpe可以调用别的check命令 3,在nagios服务器上对10.1.1.3的配置文件增加远程私有服务 # vim /etc/nagios/objects/10.1.1.3.cfg define service{ use local-service host_name 10.1.1.3 service_description Current Users check_command check_nrpe!check_remote_users } --check_remote_users就是check_nrpe的C参数要调用的命令,此命令在nagios服务器上的commands.cfg里是不存在,它会在后面的步骤中加到被监控端 # systemctl restart nagios 4,用下面的命令做测试,但现在是会报对方5666端口拒绝(因为被监控端还没有安装配置) # /usr/lib64/nagios/plugins/check_nrpe -H 10.1.1.3 -c check_remote_users connect to address 10.1.1.3 port 5666: Connection refused connect to host 10.1.1.3 port 5666: Connection refused 第二大步:nagios被监控端上的操作 1,安装nrpe和其它监控命令包(需要本地,centos163,epel源) # yum install nrpe nagios-plugins-users 2,修改nrpe主配置文件 # vim /etc/nagios/nrpe.cfg allowed_hosts=10.1.1.2 --把默认的127.0.0.1改成nagios服务器的ip command[check_remote_users]=/usr/lib64/nagios/plugins/check_users -w 5 -c 10 --修改或增加这一行,主要是定义一个叫check_remote_users的命令(和服务器那边的配置对应) 3,启动服务,并检查5666端口是否开启 # systemctl restart nrpe # systemctl status nrpe # systemctl enable nrpe # lsof -i:5666 第三大步:回到nagios服务器端测试 再次使用下面的命令,就可以监控到远程的实际登录用户数了 # /usr/lib64/nagios/plugins/check_nrpe -H 10.1.1.3 -c check_remote_users USERS WARNING - 9 users currently logged in |users=9;5;10;0 最后,清firefox缓存,在firefox查看远程监控也正确了 ============================================================================= 练习:监控远程/分区,/boot分区,swap,cpu load等 ============================================================================= 邮件报警验证: 1,确认你至少有一个service为crital状态 2,保证nagios服务器能上公网,还有确认有mail命令了 3,# vim /etc/nagios/objects/contacts.cfg email [email protected]126.com --改成你的一个公网测试邮箱 4,# systemctl restart nagios 如果你想做成免费手机短信通知,可以使用类似139邮箱这种(有邮件到达就短信通知的功能)的邮箱 现在有智能手机就方便多了,直接报警邮件发给外部一个邮箱,然后在你的手机上下载对应邮箱的app软件就ok了 现在nagios官方直接都有手机客户端管理软件 ============================================================================= nagios图表插件一: nagiosgraph-1.4.4.tar.gz --此软件包最后的版本是2011年出的,目前在centos7测试过不兼容 以下这份文档是在rhel6.5上成功的文件(仅做参考) tar xf nagiosgraph-1.4.4.tar.gz -C /usr/src cd /usr/src/nagiosgraph-1.4.4 [[email protected] nagiosgraph-1.4.4]# ./install.pl --check-prereq checking required PERL modules Carp...1.11 CGI...3.51 Data::Dumper...2.124 File::Basename...2.77 File::Find...1.14 MIME::Base64...3.08 POSIX...1.17 RRDs... ***FAIL*** --没有rrd,就算你在rhel6上yum install *rrd* 再来测试也是fail Time::HiRes...1.9721 checking optional PERL modules GD...fail --没有gd,yum install *gd* 也不能搞定 checking nagios installation found nagios at /usr/local/nagios/bin/nagios checking web server installation found apache at /usr/sbin/httpd 安装gd tar xf libgd-2.1.0.tar.gz -C /usr/src/ cd /usr/src/libgd-2.1.0/ ./configure ;make ;make install echo /usr/local/lib >> /etc/ld.so.conf ldconfig tar xf GD-2.56.tar.gz -C /usr/src/ cd /usr/src/GD-2.56/ perl Build.PL ./Build ./Build install ldconfig 安装rrdtool # tar xf rrdtool-1.4.8.tar.gz -C /usr/src/ # cd /usr/src/rrdtool-1.4.8/ # ./configure ;make ;make install # echo /opt/rrdtool-1.4.8/lib > /etc/ld.so.conf.d/rrdtools.conf # ldconfig # cd /usr/src/rrdtool-1.4.8/bindings/perl-shared # make clean # perl Makefile.PL && make && make install # cd /usr/src/nagiosgraph-1.4.4/ --再次用下面的命令检测就都OK了 [r[email protected] nagiosgraph-1.4.4]# ./install.pl --check-prereq checking required PERL modules Carp...1.11 CGI...3.51 Data::Dumper...2.124 File::Basename...2.77 File::Find...1.14 MIME::Base64...3.08 POSIX...1.17 RRDs...1.4008 Time::HiRes...1.9721 checking optional PERL modules GD...2.56 checking nagios installation found nagios at /usr/local/nagios/bin/nagios checking web server installation found apache at /usr/sbin/httpd ------------ 参考下面这份文档 http://www.linuxfunda.com/2013/04/02/steps-to-configure-nagiosgraph-with-nagios-core/ 开始安装 1, [[email protected] nagiosgraph-1.4.4]# ./install.pl --install checking required PERL modules Carp...1.11 CGI...3.51 Data::Dumper...2.124 File::Basename...2.77 File::Find...1.14 MIME::Base64...3.08 POSIX...1.17 RRDs...1.4008 Time::HiRes...1.9721 checking optional PERL modules GD...2.53 checking nagios installation found nagios at /usr/local/nagios/bin/nagios checking web server installation found apache at /usr/sbin/httpd Destination directory (prefix)? [/usr/local/nagiosgraph] Location of configuration files (etc-dir)? [/usr/local/nagiosgraph/etc] Location of executables? [/usr/local/nagiosgraph/bin] Location of CGI scripts? [/usr/local/nagiosgraph/cgi] Location of documentation (doc-dir)? [/usr/local/nagiosgraph/doc] Location of examples? [/usr/local/nagiosgraph/examples] Location of CSS and javascript files? [/usr/local/nagiosgraph/share] Location of utilities? [/usr/local/nagiosgraph/util] Location of state files (var-dir)? [/usr/local/nagiosgraph/var] Location of RRD files? [/usr/local/nagiosgraph/var/rrd] Location of log files (log-dir)? [/usr/local/nagiosgraph/var] Path of log file? [/usr/local/nagiosgraph/var/nagiosgraph.log] Path of CGI log file? [/usr/local/nagiosgraph/var/nagiosgraph-cgi.log] URL of CGI scripts? [/nagiosgraph/cgi-bin] URL of CSS file? [/nagiosgraph/nagiosgraph.css] URL of JavaScript file? [/nagiosgraph/nagiosgraph.js] Path of Nagios performance data file? [/tmp/perfdata.log] URL of Nagios CGI scripts? [/nagios/cgi-bin] username or userid of Nagios user? [nagios] username or userid of web server user? [apache] Modify the Nagios configuration? [n] Modify the Apache configuration? [n] configuration: ng_layout standalone ng_prefix /usr/local/nagiosgraph ng_etc_dir /usr/local/nagiosgraph/etc ng_bin_dir /usr/local/nagiosgraph/bin ng_cgi_dir /usr/local/nagiosgraph/cgi ng_doc_dir /usr/local/nagiosgraph/doc ng_examples_dir /usr/local/nagiosgraph/examples ng_www_dir /usr/local/nagiosgraph/share ng_util_dir /usr/local/nagiosgraph/util ng_var_dir /usr/local/nagiosgraph/var ng_rrd_dir /usr/local/nagiosgraph/var/rrd ng_log_dir /usr/local/nagiosgraph/var ng_log_file /usr/local/nagiosgraph/var/nagiosgraph.log ng_cgilog_file /usr/local/nagiosgraph/var/nagiosgraph-cgi.log ng_url /nagiosgraph ng_cgi_url /nagiosgraph/cgi-bin ng_css_url /nagiosgraph/nagiosgraph.css ng_js_url /nagiosgraph/nagiosgraph.js nagios_cgi_url /nagios/cgi-bin nagios_perfdata_file /tmp/perfdata.log nagios_user nagios www_user apache modify_nagios_config n nagios_config_file nagios_commands_file modify_apache_config n apache_config_dir apache_config_file Continue with this configuration? [y] ............. 2, # vim /usr/local/nagios/etc/nagios.cfg --最后加上下面一段 process_performance_data=1 service_perfdata_file=/tmp/perfdata.log service_perfdata_file_template=$LASTSERVICECHECK$||$HOSTNAME$||$SERVICEDESC$||$SERVICEOUTPUT$||$SERVICEPERFDATA$ service_perfdata_file_mode=a service_perfdata_file_processing_interval=30 service_perfdata_file_processing_command=process-service-perfdata-for-nagiosgraph 3, # vim /usr/local/nagios/etc/objects/commands.cfg --加上这一段,定义此命令 define command { command_name process-service-perfdata-for-nagiosgraph command_line /usr/local/nagiosgraph/bin/insert.pl } 4, # vim /etc/httpd/conf/httpd.conf --在你的apache里include这个文件 Include /usr/local/nagiosgraph/etc/nagiosgraph-apache.conf # /etc/init.d/httpd restart # /etc/init.d/nagios restart 5, http://10.1.1.8/nagiosgraph/cgi-bin/showconfig.cgi --用此页面查看信息 # vim /usr/local/nagios/etc/objects/templates.cfg --加上下面的模版 define service { name nagiosgraph action_url /nagiosgraph/cgi-bin/show.cgi?host=$HOSTNAME$&service=$SERVICEDESC$ register 0 } 6, # vim /usr/local/nagios/etc/objects/localhost.cfg --在你所有的要加图形的监控主机里的服务的use后加上nagiosgraph模版,如下 define service{ use local-service,nagiosgraph host_name localhost service_description PING check_command check_ping!100.0,20%!500.0,60% } 7, # /etc/init.d/nagios restart 最后到你的http://10.1.1.8/nagios/下去查看,会发现只要加了nagiosgraph模版的被监控服务会多了一个图标,按图标就会产生图 ============================================================================= nagios图表插件二: pnp4nagios 第一步:目前版本都是最新版,我这里使用的是源码版(rpm版也可以,课后有兴趣去尝试一下) # rpm -qa |grep pnp4 pnp4nagios-0.6.25-1.el7.x86_64 # rpm -e --nodeps pnp4nagios-0.6.25-1.el7.x86_64 warning: /etc/httpd/conf.d/pnp4nagios.conf saved as /etc/httpd/conf.d/pnp4nagios.conf.rpmsave 第二步:解压源码版pnp4nagios(软件包我共享在笔记目录/program/nagios_soft/下) # tar xf pnp4nagios-0.6.25.tar.gz -C /usr/src/ # cd /usr/src/pnp4nagios-head/ # ./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.4.8 RRDs Perl Modules: FOUND (Version 1.4008) 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 # make all # make install # make install-webconf --安装/etc/httpd/conf.d/pnp4nagios.conf文件 # make install-config --安装了一些配置文件模版到/usr/local/pnp4nagios/etc/目录下 # make install-init --安装BULK Mode with NPCD需要的服务脚本 第三步:配置nagios主配置文件 # vim /etc/nagios/nagios.cfg process_performance_data=1 --找到这行,把0改为1;并在此文件最后的空白地方,复制粘贴下面的一段 # service performance data service_perfdata_file=/usr/local/pnp4nagios/var/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 # # host performance data starting with Nagios 3.0 # host_perfdata_file=/usr/local/pnp4nagios/var/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 第四步:定义命令,在commands.cfg子配置文件里最后空白地方复制粘贴下面的一段 # vim /etc/nagios/objects/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$ } 第五步:启动npcd(我们现在使用的是bulk模式和npcd,一共五种模式,具体参考官档说明) # systemctl start npcd # chkconfig npcd on 第六步:定义模版,在templates.cfg子配置文件里最后空白地方复制粘贴下面的一段 # vim /etc/nagios/objects/templates.cfg define host { name hosts-pnp register 0 action_url /pnp4nagios/graph?host=$HOSTNAME$&srv=_HOST_ } define service { name service-pnp register 0 action_url /pnp4nagios/graph?host=$HOSTNAME$&srv=$SERVICEDESC$ } 第七步:apache的子配置文件修改(因为这个源码版对应的语法为apache2.2,而我们centos7.3上用的是apache2.4,所以需要改一下;还有就是我们的nagios使用的是rpm版,所以验证文件路径也改一下) # vim /etc/httpd/conf.d/pnp4nagios.conf Require all granted --把Order allow,deny\nAllow from all这两行删除,换成这句 AuthUserFile /etc/nagios/passwd --验证文件路径也改成这个 # systemctl restart httpd # systemctl enable httpd 第八步:把所有需要加图表功能的hosts和services加上图表需要的templates(hosts-pnp和service-php) # vim /etc/nagios/objects/localhost.cfg # vim /etc/nagios/objects/10.1.1.3.cfg --这两个配置里的hosts和services都可以加,效果如下示例: define host{ use linux-server,hosts-pnp --如这里加上hosts-pnp模版 host_name localhost alias localhost address 127.0.0.1 } define service{ use local-service,service-pnp --如这里加上service-pnp模版 service_description PING check_command check_ping!100.0,20%!500.0,60% } # nagios -v /etc/nagios/nagios.cfg # systemctl restart nagios 第九步:使用firefox访问测试 访问后,加了图表模版的hosts或services会有一个明显的图表图标,点进去,第一次会提示删除下面文件,删除后再点进去就ok了 # rm -rf /usr/local/pnp4nagios/share/install.php