linux运维总结十七:Nagios监控系统

一、简介:

  Nagios 是一款企业级开源免费的监控工具,该工具可以监控应用服务器,交换机路由器等网络设备,并在服务或设备 发生异常时发出报警信息。与Cacti不同是,Nagios重点专注是运行服务器上的服务是否正常。而不会像Cacti一样生成 图形,Nagios关注点在于保证服务正常为运行,并且 在服务发生问题时提供报警机制。Nagios强大而灵活的监控预警机制可以帮助企业在出现严重故障前把问题解决,报警信息可以通过邮件或短信发送给管理员。让管理员实时掌握服务器运行状态。部署Nagios系统除了需要安装主程序,还需要安装相关插件,Nagios是整个监控平台的主程序,Nagios-plugins是必选的插件程序。另外 ,官方网站还提供了一些可选的附中插件。其中,NRPE插件用来监控远程Linux服务器主机资源,NSCLlient++ 监控windows主机,NDOUtils插件需要结合数据库系统将Nagios进程当前数据和历史数据写入数据库。Nagios可以监控常见HTTP,POP3,SMTP,FTP,SSH,PING等服务,也可以监控主机的CPU,磁盘等主机资源。如果这些标准的插件无法满足企业中特殊的监控需求,还可以开发自己监控插件实现特殊的监控功能。

1、Nagios监控应用案例

  与前面类似,部署一台Nagios服务器用于监控其他服务上服务与系统资源是否运行正常,管理员可以通过任意一台办公电脑连接Nagios服务器查看Web页面,管理监控平台。Nagios监控拓扑。在 Nagios监控主机上需要安装HTTPD,Nagios,Nagios-plugins,NRPE软件包,其中 ,NRPE 主要用于监控远程主机资源。

  我们需要通过Web页面形式来查看并管理整个Nagios监控平台,所以首先需要正确地配置,Apache HTTP Sserver 服务。本节重点在于监控。

  安装Nagios 主程序时,源码包软件可以从sourceforge.net网站下载。安装前需要为nagios创建帐户与组,这样在配置Nagios软件时就可以使用--with-nagios-user和--with-nagios-group指定以普通帐号的身份运行该软件。最后需要通过多个make install 安装部署不用监控配置文件与目录:

wget http://jaist.dl.sourceforge.net/project/nagios/nagios-3.x/nagios-3.5.0/nagios-3.5.0.tar.gz

[root@puppet tmp]# groupadd nagios
[root@puppet tmp]# useradd -g nagios nagios
[root@puppet tmp]# tar -xzf nagios-3.5.0.tar.gz -C /usr/src
[root@puppet tmp]# cd /usr/src/nagios/
[root@puppet nagios]#./configure --with-nagios-user=nagios --with-nagios-group=nagios

[root@puppet nagios]make all

[root@puppet nagios]make install

[root@puppet nagios]make install-init

[root@puppet nagios]make install-commandmode

[root@puppet nagios]make install-config

   由于nagios最终将以Web形式进行管理与监控,安装过程中使用make install-webconf命令将生成 一个Web配置文件,install-webconf添加Apache附加配置文件/etc/httpd/conf.d/nagios.conf,该文件使管理员可以通过访问Web管理与维护Nagios监控系统,安装Ngios插件:

[root@puppet nagios]# make install-webconf

  Nagios特色之一就是其拥有众多强大插件,读者可以根据自己实际需求有选择地安装部署这些插件,插件的具体功能介绍可以参考 nagios官方网站,本书案例中将安装 nagios-plugins 和 nrpe两个插件软件包。

wget http://nchc.dl.sourceforge.net/project/nagiosplug/nagiosplug/1.4.16/nagios-plugins-1.4.16.tar.gz

[root@puppet tmp]# tar -xzf nagios-plugins-1.4.13.tar.gz  -C /usr/src/

[root@puppet tmp]# cd /usr/src/nagios-plugins-1.4.13/

[root@puppet nagios-plugins-1.4.13]# ./configure --prefix=/usr/local/nagios/

[root@puppet nagios-plugins-1.4.13]#make

[root@puppet nagios-plugins-1.4.13]#make install

wget http://nchc.dl.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.14/nrpe-2.14.tar.gz

[root@puppet tmp]# tar -xzf nrpe-2.14.tar.gz -C /usr/src/

[root@puppet tmp]# cd /usr/src/nrpe-2.14/

[root@puppet nrpe-2.14]# ./configure

[root@puppet nrpe-2.14]#make all

[root@puppet nrpe-2.14]# make install-plugin

[root@puppet nrpe-2.14]#  make install-daemon

[root@puppet nrpe-2.14]#  make install-daemon-config

[root@puppet nrpe-2.14]# chown -R nagios.nagios /usr/local/nagios/
[root@puppet nrpe-2.14]# setenforce 0
[root@puppet nrpe-2.14]# sed 's/=enforcing/=permissive/' /etc/sysconfig/selinux

安装Nagios时已经复制了一份nagios.conf文件到Apache 配置文件/etc/httpd/conf.d/目录下,用于设定访问权限。下面根据实际需要创建帐户信息文件,系统会提示输入帐户密码:

[root@puppet nrpe-2.14]# htpasswd -c /usr/local/nagios/etc/htpasswd.users tomcat
New password:
Re-type new password:
Adding password for user tomcat

 

[root@puppet nrpe-2.14]# /etc/init.d/httpd start
Starting httpd: httpd: apr_sockaddr_info_get() failed for puppet.demain.com
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
[ OK ]
[root@puppet nrpe-2.14]# /etc/init.d/nagios start
Starting nagios: done.
[root@puppet nrpe-2.14]# chkconfig --add nagios
[root@puppet nrpe-2.14]# chkconfig nagios on

 

 

 

 

 2、修改nagios配置文件

nagios配置文件比较多,主要配置文件名称与描述信息,所有配置文件都位于/usr/local/nagios/etc目录及objects子目录。

 

 

 

 下面是依次修改nagios所需的监控配置文件,以满足本例的需求,配置文件中被修改的设置会使用粗体字表示,很多配置文件不需要修改就直接使用。

  修改主配置文件。首先,需要修改是nagios 主配置文件nagios.cfg,在该文件中使用cfg_file配置项加载其他配置文件,因为我们需要监控两台主机设备 ,为了方便管理,我们将为两台监控主机创建不同的配置文件,所以在该配置文件中需要加载这些用户自己创建的配置文件。本例将创建名为 web1.cfg监控配置文件,而这两个文件需要

 在nagios主配置文件中使用cfg_file配置项加载这两个监控配置文件。

[root@puppet nrpe-2.14]# vi /usr/local/nagios/etc/nagios.cfg 

 

   修改CGI配置文件(cgi.cfg),以下为需要修改的内容,添加tomcat帐户允许使用CGI程序,因为nagios的很多功能是调用 CGI程序,所以需要将访问Web页面帐户加入进来。

[root@puppet ~]# vi /usr/local/nagios/etc/cgi.cfg

 

   修改命令配置文件(commands.cfg),该文件定义具体的命令实现方式。如发送报警邮件具体使用什么工具,邮件内容格式定义。

 [root@puppet ~]# vi /usr/local/nagios/etc/objects/commands.cfg 

 

#定义命令,命令名称为notify-host-by-email,该命令的作用是当主机发生问题时通过mail
#命令发送报错信息给联系人配置文件中定义的联系人电子邮箱
define command{
        command_name    notify-host-by-email
        command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
        }
#定义命令,命令名称为notify-service-by-email,该命令的作用是当服务发送问题时通过
#mail命令发送报错信息给联系人配置文件中定义的联系人电子邮箱
define command{
        command_name    notify-service-by-email
        command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$
        }
#定义命令check-host-alive,用于ping检查指定主机是否存活
define command{
        command_name    check-host-alive
        command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5
        }
… …其余部分省略… …
#以下内容需要手动添加,用于进行远程主机监控,需要安装NRPE软件包
define command{
        command_name check_nrpe
        command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

  命令配置文件内容比较多,文件中定义了本机及远程资源与服务进行检查 的命令,以及当系统资源与服务发生错误时及时 通过报警命令发送邮件或短信给管理员。该文件默认的报警方式是通过mail命令投递错误邮件给指定管理员,使用mail命令发送邮件需要提前配置postfix邮件服务器。

   修改联系人配置文件(contacts.cfg),该文件用于定义当监控发现设备 或服务出现故障时需要的联络人及联系方式。

 [root@puppet ~]# vi /usr/local/nagios/etc/objects/contacts.cfg 

 修改时间定义配置文件,文件名为timepreiods.cfg,用于定义报警时间周期

 [root@puppet ~]# vi /usr/local/nagios/etc/objects/timeperiods.cfg 

 

 修改监控本机配置文件(localhost.cfg),该文件用于设置如何 监控本机服务器资源 

 [root@puppet ~]# vi /usr/local/nagios/etc/objects/localhost.cfg 

 修改模板配置文件(templates.cfg),该文件主要定义一些其他配置文件需要调用定义,根据自己的时间需要修改报警通知,报警方式(notify-host-by-mail将调用commands.cfg配置文件中定义的命令发送邮件报警)

 [root@puppet ~]# vi /usr/local/nagios/etc/objects/templates.cfg 

 修改NRPE配置文件(nrpe.cfg),创建用于监控远程主机所需要的命令。

 [root@puppet ~]# vi /usr/local/nagios/etc/nrpe.cfg 

 创建远程监控配置文件web1.cfg,用户监控远程服务器系统资源与服务,该文件要手动创建,可以用localhost.cfg作为参考 模板。下面为web1.cfg文件全文,

 [root@puppet ~]# vi /usr/local/nagios/etc/objects/web1.cfg

define host{
        use                       linux-server 
        host_name                 web1
        alias                   web1.example.com
        address                    192.168.0.104
        }
define hostgroup{
        hostgroup_name          webs
        alias                     Linux Servers
        members                 web1
        }
define service{
        use                     generic-service
        host_name              web1
        service_description    PING
check_command                check_ping!100.0,20%!500.0,60%
notifications_enabled        1
        }
define service{
        use                     generic-service
        host_name               web1
        service_description     Sys_Load
check_command                check_nrpe!check_load
notifications_enabled        1
        }
define service{
        use                     generic-service
        host_name               web1
        service_description     Current Users
check_command                check_nrpe!check_users
notifications_enabled        1
        }
define service{
    use                        generic-service 
    host_name                web1
    service_description        Total Processes
check_command                check_nrpe!check_total_procs
notifications_enabled        1
        }
define service{
    use                         generic-service  
    host_name                   web1
    service_description         SSH
check_command                check_ssh
notifications_enabled        1
        }
define service{
    use                         generic-service   
    host_name                   web1
    service_description        HTTP
check_command                check_http
notifications_enabled        1
        }

 

[root@puppet ~]# /etc/init.d/nagios restart

提示:因为Nagios配置文件比较多所以经常当修改完配置文件后,Nagios服务无法启动情况,此时利用Nagios提供一个检查排错工具可以快速定位问题点:

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

 

3、安装被监控主机软件(web1所需软件包)

  将下面这些操作步骤分别应用到web1和web2两台主机,远程监控时需要被监控端安装nagios-plugin与nrpe软件包,下面仅以web1主机为例

[root@agent ~]# yum -y install openssl openssl-devel

[root@agent ~]# groupadd nagios

[root@agent ~]# useradd -g nagios -s /sbin/nologin nagios

[root@agent tmp]# tar -xzf nagios-plugins-1.4.16.tar.gz -C /usr/src/

[root@agent tmp]# cd /usr/src/nagios-plugins-1.4.16/

[root@agent nagios-plugins-1.4.16]# ./configure

[root@agent nagios-plugins-1.4.16]# make

[root@agent nagios-plugins-1.4.16]# make  install

[root@agent nagios-plugins-1.4.16]# chown -R nagios.nagios /usr/local/nagios

[root@agent tmp]# wget http://nchc.dl.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.14/nrpe-2.14.tar.gz

[root@agent tmp]# tar -xzf nrpe-2.14.tar.gz -C /usr/src/

[root@agent tmp]# cd /usr/src/nrpe-2.14/

[root@agent nrpe-2.14]# ./configure

[root@agent nrpe-2.14]# make all

[root@agent nrpe-2.14]# make install-plugin

[root@agent nrpe-2.14]# make install-daemon

[root@agent nrpe-2.14]# make install-daemon-config

 

4、修改客户端NRPE配置文件

[root@agent nrpe-2.14]# vi /usr/local/nagios/etc/nrpe.cfg 

#NRPE远程监控所需的具体监控指令
allowed_hosts=127.0.0.1,192.168.0.10
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200 
command[check_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 10%
…其余部分省略…

 

[root@agent nrpe-2.14]# /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

[root@agent nrpe-2.14]# echo "/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d" >> /etc/rc.local

[root@agent nrpe-2.14]# netstat -nutlp | grep 5666

 

 5、验收:

  管理员在Nagios主机上通过check_nrpe检测被监控端相关性能参数,单独使用check_nrpe 命令可以检测被监控端NRPE版本号

 [root@agent nrpe-2.14]# /usr/local/nagios/libexec/check_nrpe -H 127.0.0.1

 

如果NRPE完全没有问题了,此时管理员可以通过客户端浏览器访问:

 

 ————————————————————————————————————————————————————————————————

[root@puppet ~]# vi /usr/local/apache2/conf/httpd.conf

 

posted @ 2017-01-05 15:14  杨坚  阅读(184)  评论(0编辑  收藏  举报