CentOS 7.0环境下安装配置nagios4.0.8+pnp4nagios教程
第一部分:Nagios介绍
Nagios是一款开源的电脑系统和网络监控工具,能有效监控Windows、Linux和Unix的主机状态,交换机、路由器等网络设备以及打印机等。在主机或服务状态异常是发出邮件或短信报警,及时通知网络运维人员,在状态恢复后发出正常的邮件或短信。
Nagios的主要功能分为两个方面:网络服务监控和主机资源监控。网络服务监控主要有:SMTP、POP3、HTTP、ICMP、SNMP、FTP、SSH等,主机资源监控主要有内存使用率、CPU负载、磁盘使用率、服务状态、进程信息以及用户自己开发的检查服务。另外,Nagios能够搭配多种插件扩展Nagios功能,能够定义网络主机层次,支持性能分析图表,能够及时告警,自动日志循环,支持冗余监控。
Nagios的功能是监控主机和服务,但是自身并不包括这部分功能,所有的监控、检测功能都是通过各种插件来完成的。Nagios提供了很多插件,利用这些插件可以方便地监控很多服务状态。
启动Nagios后,它会周期性的自动调用插件区检测服务状态,同时Nagios会维持一个队列,所有插件返回的状态信息都进入队列,Nagios每次都从对手开始读取信息,并进行处理后,把状态结果通过web显示出来。
Nagios可以识别4种状态返回信息,即0(OK)表示状态正常,用绿色表示、1(WARNING)表示出现警告,用黄色表示、2(CRITICAL)表示出现非常严重的错误,用红色表示、3(UNKNOWN)表示未知错误,用棕色表示。Nagios根据插件返回的值,判断监控对象的状态,并通过web显示出来,便于管理员及时发现问题。
知道Nagios是如何通过插件来管理服务器对象后,现在开始研究它是如何管理远端服务器对象的。Nagios系统提供了一个插件NRPE,Nagios通过周期性的运行它来获得远端服务器的各种状态信息。它们之间的关系如图所示:
Nagios通过NRPE来远端管理服务
1、 Nagios执行安装在它里面的check_nrpe插件,来告诉check_nrpe去检测哪些服务;
2、 通过SSL,check_nrpe连接远程服务器上的NRPEdaemon;
3、 NRPE运行本地的各种插件去检测本地的服务和状态(check_disk,……);
4、 NRPE把检测的结果传给监控机的check_nrpe,check_nrpe再把结果送到Nagios状态队列中;
5、 Nagios依次读取队列中的信息,再把结果显示出来。
第二部分:安装环境的搭建
Nagios内核仅有的要求就是运行在能够访问网络的Linux操作系统,并且装有C编译器。然而在实际工作中,我们要使用到Nagios内核的CGI,所以还需要在Linux操作系统上搭建LAMP环境。本教程所使用的操作系统为CentOS 7.0 ,IP地址为172.16.151.140,主要使用到的软件有Apache、PHP、Nagios、Nagios-plugins、NRPE、RRDtool、PHP4nagios等。
我们将安装有Nagioscore的计算机或服务器称为监控机,把我们需要对其进行监控的计算机或服务器称为被监控机。我们在监控机上安装Nagios core、Nagios-plugins等软件,对监控的数据做处理,并且提供web界面查看和管理。当然也可以对监控机本身的信息进行监控。在被监控机上安装Nagios-plugins和NRPE等软件,根据监控机的请求执行监控,然后将结果传给监控机。
2.1 安装环境的准备
首先升级CentOS操作系统
#yum –y update //升级所有包,改变软件设置和系统设置,系统版本内核都升级
#yum –y upgrade //升级所有包,不改变软件设置和系统设置,系统版本升级,内核不升级。
2.2 配置防火墙
CentOS7.0操作系统默认使用的是firewall作为防火墙,这里改为iptables防火墙。
2.2.1关闭firewall
#systemctl stop firewalld.service //停止firewall
#systemctl disable firewalld.service //禁止firewall开机启动
2.2.2安装iptables防火墙
#yum install iptables-services //安装iptables防火墙
#vi /etc/sysconfig/iptables //编辑防火墙配置文件
#systemctl restart iptables.service //最后重启防火墙使配置生效
#systemctl enable iptables.service //设置防火墙开机启动
2.2.3关闭SELINUX
#vi /etc/selinux/config //编辑selinux配置文件
将SELINUX=enforcing 修改为SELINUX=disabled,将SELINUXTYPE=targeted注释掉,保存退出。
#setenforce 0 //使selinux配置立即生效
重启操作系统。
在CentOS 6.5操作系统上关于防火墙的配置如下:
#chkconfig--level 35 iptables off
# vi/etc/selinux/config
将SELINUX=enforcing修改为:SELINUX=disabled,保存退出。
2.3在CentOS 7.0操作系统上搭建LAMP环境
2.3.1安装Apache
#yum –y install httpd
#systemctl start httpd.service //启动Apache
#systemctl enable httpd.service //设置Apache开机启动
(#systemctlstop httpd.service //停止apache)
(#systemctlrestart httpd.service //重启apache)
在浏览器中键入http://localhost或http://ip,会出现下面的界面,说明Apache安装成功。
在CentOS 6.5操作系统上安装完Apache后执行
#chkconfighttpd on // 开机自启动
#servicehttpd start //启动httpd服务
# yum-y install httpd-manual mod_ssl mod_perl mod_auth_mysql //安装Apache一些扩展组件
打开浏览器,在地址栏中输入http://localhost或http://ip。会看到Apache的测试页面。
2.3.2安装数据库
CentOS7.0中,已经使用MariaDB替代了MySQL数据库。
#yum install mariadb mariadb-server //安装MariaDB,键入Y
#systemctl start mariadb.service //启动MariaDB
#systemctl enable mariadb.service //设置开机启动
(#systemctlstop mariadb.service //停止MariaDB)
(#systemctlrestart mariadb.service //重启MariaDB)
#cp /usr/share/mysql/my-huge.cnf /etc/my.cnf //拷贝配置文件(注意:如果在/etc目录下面默认有一个my.cnf,直接覆盖即可)
为root账户设置密码。
#mysql_secure_installation
最后出现:Thanks for using MariaDB!
MariaDB密码配置完成,重新启动MariaDB.
#systemctl restart mariadb.service //重启MariaDB
在CentOS 6.5操作系统安装MySQL数据库软件
#yum–y install mysql mysql-server mysql-devel
#chkconfigmysqld on
#servicemysqld start
#/usr/bin/mysql_secure_installation
#netstat–tulpn | grep –i mysql
2.3.3安装PHP
安装PHP
#yum install php //安装PHP,键入y
安装PHP组件,使PHP支持MariaDB
#yum install php-mysql php-gd libjpeg*php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-bcmath php-mhash
#systemctl restart mariadb.service //重启MariaDB
#systemctl restart httpd.service //重启apache
在CentOS 6.5上安装PHP的过程如下:
#yum–y install php php-mysql
#yum–y install gd php-gd gd-devel php-xml php-common php-mbstring php-ldap php-pearphp-xmlrpc php-imap
#servicehttpd restart
2.3.4配置Apache和PHP
Apache配置
#vi /etc/httpd/conf/httpd.conf //编辑 Apache的配置文件
ServerSignature On //添加,在错误页中显示Apache的版本,Off为不显示
Options Indexes FollowSymLinks //修改为:Options IncludesExecCGI FollowSymLinks (允许服务器执行CGI及SSL,禁止列出目录)
AllowOverride None //修改为:AllowOverrideAll (允许.htaccess)
AddHandler cgi-script .cgi //修改为:AddHandlercgi-script .cgi .pl (允许扩展名为.pl的CGI脚本运行)
AddDefaultCharset UTF-8 //修改为:AddDefaultCharsetGB2312 (添加GB2312为默认编码)
DirectoryIndex index.html //修改为:DirectoryIndexindex.html index.htm Default.html Default.htm index.php(设置默认首页文件,增加index.php)
MaxKeepAliveRequests 500 //添加MaxKeepAliveRequests500 (增加同时连接数)
保存退出。
#systemctl restart httpd.service //重启apache
#rm -f /etc/httpd/conf.d/welcome.conf/var/www/error/noindex.html //删除默认测试页
PHP配置
#vi /etc/php.ini //编辑PHP配置文件
#date.timezone =PRC #把前面的分号去掉,改为date.timezone = PRC
#disable_functions=
//列出PHP可以禁用的函数,如果某些程序需要用到这个函数,可以删除,取消禁用。
expose_php = Off #禁止显示php版本的信息
short_open_tag =ON #支持php短标签
open_basedir =.:/tmp/ #设置表示允许访问当前目录(即PHP脚本文件所在之目录)和/tmp/目录
保存退出
#systemctl restartmariadb.service //重启MariaDB
#systemctl restarthttpd.service //重启Apache
2.3.5测试LAMP环境
#cd /var/www/html/
#vi index.php
<?php
phpinfo();
?>
保存退出
打开浏览器,在地址栏中键入http://localhost或http://ip。会出现如图所示相关信息。
注意:检查PHP信息中时候是否和MySQL连接成功。
注意:Apache默认的程序目录是/var/www/html
最后进行权限设置:#chown apache.apache -R /var/www/html
第三部分:安装Nagios core和Nagios-plugins
(1)安装必备工具:httpd、php、gcc、glibc、glibc-common、gd、gd-devel。由于在上一部分中已经装了httpd、php、glibc、glibc-common,所以在这里还要安装gcc、gd、gd-devel。
#yum install gcc
#yum install gd gd-devel
(2)创建nagios用户
#/usr/sbin/useradd -m Nagios
#passwd Nagios
(3)增加nagcmd用户组
#/usr/sbin/groupadd nagcmd
#/usr/sbin/usermod -a -G nagcmd Nagios
#/usr/sbin/usermod -a -G nagcmd apache
(4)安装Nagioscore
#tar -zxvf nagios-4.0.8.tar.gz
#cd nagios-4.0.8
#./configure --prefix=/usr/local/nagios--with-command-group=nagcmd --enable-nanosleep --enable-event-broker--enable-embedded
#make all
#make install
#make install-init
#make install-config
#make install-commandmode
#make install-webconf
(5)添加联系人邮箱
#vi/usr/local/nagios/etc/objects/contacts.cfg
(6)为Nagios软件添加账户和密码
#htpasswd -c/usr/local/nagios/etc/htpasswd.users nagiosadmin
(7)重启httpd服务
#Service httpd restart
(8)安装nagios-plugins
#tar -zxvf nagios-plugins-2.0.3.tar.gz
#./configure --with-nagios-user=nagios --with-nagios-group=Nagios –with-openssl=/usr/bin/openssl –enable-perl-module
#make
#make install
(9)将Nagios添加到系统服务中
#chkconfig --add nagios
#chkconfig nagios on //设置nagios的启动等级为on
#/usr/local/nagios/bin/nagios -v/usr/local/nagios/etc/nagios.cfg
(10)启动Nagios之前,检验Nagios配置文件,如果没有错去,则启动Nagios
#service nagios start
打开浏览器,在地址栏中输入httpd://localhost/nagios或者 http://ip/nagios,会出现如图所示界面,则Nagios基本服务安装完成。
第四部分:安装PNP4nagios
4.1 PNP4nagios软件依赖性
l Perl>=5.x,不需要其他额外的模块
l RRDtool>=1.x,1.2版本更好,但是并不强制使用该版本
l PHP>=5.1.6 基于Kohana的web前端的需要
l Nagios>=2.x或者是Icigna
l Kohana需要弃用“mod_rewrite”模块
在安装PNP4nagios之前需要检查安装环境是否满足上述条件。
注意:通过php提供的phpinfo()函数查看环境配置,通过Ctrl+F查找到“LoadedModules”,其中列出了所有apache2handler已经开启的模块,如果里面包括“mod_rewrite”,则已经支持,不再需要继续设置。如果没有开启“mod_rewrite”,则打开您的apache安装目录“/etc/httpd/conf/”下的 httpd.conf 文件,通过Ctrl+F查找到“LoadModule rewrite_module”,将前面的”#”号删除即可。如果没有查找到,则到“LoadModule”区域,在最后一行加入“LoadModule rewrite_module modules/mod_rewrite.so”(必选独占一行),然后重启apache服务器即可。
4.2 安装RRDtool
检查操作系统中是否已经安装cgilib-0.5.tar.gz、libart_lgpl-devel、pango-devel、cairo-devel,如果没有,则执行以下操作:
#tarzxvf cgilib-0.5.tar.gz
#cdcgilib-0.5
#make
#cplibcgi.a /usr/local/lib
# cpcgi.h /usr/include
安装libart_lgpl-devel包
#yum –yinstall libart_lgpl-devel
安装pango-develcairo-devel
# yum –yinstall pango-devel* cairo-devel*
安装完成之后就可以安装RRDtool
#tar–zxvf rrdtool-1.4.5.tar.gz
#cdrrdtool-1.4.5
#./configure -–prefix=/usr/local/rrdtool-1.4.5
在这一步,如果出现如图所属错误:
提示缺少libxml2,(I found acopy of pkgconfig ,but there is no libxml-2.0.pc file around.)
执行 yum –y installlibxml2-devel,然后在执行#./configure –prefix=/usr/local/rrdtool-1.4.5。
#make
#makeinstall
当出现如下错误时:
执行yum installperl-ExtUtils-CBuilder或者yum install perl-ExtUtils-MakeMaker后再重新编译,或者执行yuminstall perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker。
4.3 安装PNP4nagios
#tar–zxvf pnp4nagios-0.6.24.tar.gz
#cdpnp4nagios-0.6.24
#./configure–prefix=/usr/local/pnp4nagios --with-rrdtool=/usr/local/rrdtool-1.4.5/bin/rrdtool --with-perl_lib_path=/usr/local/rrdtool-1.4.5/lib/perl/5.16.3/x86_64-linux-thread-multi/
#makeall
#makefullinstall
至此 ,pnp4nagios安装完成
在安装过程中如果出现如下图所示的错误提示,则执行:#yum install perl-Time-HiRes。然后再编译安装。
4.4 配置pnp4nagios
(1)查看pnp4nagios的目录结构
注意:在pnp4nagios的子目录var中并没有host-perfdata、host-perfdata-PID-*、service-perfdata、host-perfdata-PID-*,所以需要手工创建host-perfdata和service-perfdata。
修改host-perfdata和service-perfdata的属主和属组
补充:也可以不创建host-perfdata和service-perfdata,系统会自动创建。
(2)查看相关文件
查看pnp4nagios的Apache配置文件:/etc/httpd/conf.d/pnp4nagios.conf,注意如图所示的部分:
将其修改为:
补充:不修改也可以
查看PNP4nagios的启动脚本
#more/etc/init.d/npcd
注意查看:
查看PNP4nagios的配置文件:
#more /usr/local/pnp4nagios/etc/npcd.cfg
(4)结合PNP4nagios的工作模式进行配置
PNP4nagios支持5中工作模式:Synchronous模式、Bulk模式、使用NPCD的Bulk模式、使用npcdmod的Bulk模式、Gearman模式,具体细节请查看相关资料。
使用PNP4nagios,需要对Nagios的以下四个方面进行配置:
l 修改nagios.cfg文件,启用处理性能数据分析
l 修改command..cfg文件,添加host和service性能数据处理命令
l 修改templates.cfg文件,添加host和service的模板定义
l 修改相应的host和service定义添加templates.cfg文件中定义的相应模板
在此以Bulk模式下的配置为例:
首先,编译/usr/local/Nagios/etc/Nagios.cfg文件,在该文件中添加如下配置:
其次,编译/usr/local/Nagios/etc/objects/commands.cfg文件,添加以下配置:
第三,在/usr/local/Nagios/etc/objects/templates.cfg中添加定义host和service模板
最后,在需要查看图像的host和service定义中添加第三步定义的模板:
配置完成之后对nagios的配置文件进行校验,确认无误后重新启动nagios和httpd。
访问nagios的web接口 ,如图所示:
单击这些“流量”图表会出现如下情况:
根据最后部分的提示,将文件/usr/local/pnp4nagios/share/install.php重命名或删除,校验nagios配置文件后,重启nagios和httpd,将会出现如下图像:
至此PNP4nagios安装成功。
(5)将性能图表集成到nagios的web页面中
第一步,将contrib/ssi目录下的status-header.ssi拷贝到/usr/local/Nagios/share/ssi/下,不添加可执行权限。
第二步,更改相关的host和service模板设置
第三步,校验nagios的配置文件,确认无误后,重启nagios和httpd。访问nagios的web页面,会显示如下图像:
至此,完成将性能图表添加到nagios的web页面的步骤。