Ubuntu上快速搭建Nagios监控

Nagios是经常使用的系统监控工具,提供了不少基本服务的监控脚本,如HTTP,MYSQL等,同时具备不错的可扩展性,本身可定制针对特定参数的监控脚本以及报警的方式。但Nagios的配置至关复杂,本文总结了我最近在Ubuntu Server上搭建Nagios的过程,以方便你们未来更加快速的安装搭建监控系统。mysql

Nagios安装

安装分为nagios server和被监控端两部分。nagios server提供web界面,报警配置;被监控端须要安装nagios nrpe服务,负责与server通讯本机的监控状况。
1) Nagios Server的安装:
默认状况下,nagios会使用apache2做为本身的web server。本着快速的原则,在server上运行:
sudo apt-get install apache2 nagios3 nagios-nrpe-plugin

nagios-nrpe-plugin用于与被监控机器上的nrpe服务通讯;
安装过程当中,会提示输入nagsio web管理员的密码,nagios web的登陆账号和密码是nagiosadmin/<安装时设定的密码>;也能够修改/etc/nagios3/htpasswd.users来改变用户、密码。
安装完成后,在/etc/apache2/conf.d下会创建nagios3.conf,这是关于nagios web的配置。访问http://<apache2 Server Address>/nagios3便可看到nagios的主页。
若是想在网页上看nagios的doc,请安装:
sudo apt-get install nagios3-doc
若是想使用Nginx做为WEB SERVER,请Google "Nagios Nginx"。

2)被监控机器上,运行:
sudo apt-get install nagios-nrpe-server

无论是nagios server仍是被监控机器,默认的监控脚本配置会安装在/etc/nagios-plugin/config下,监控脚本都在/usr/lib/nagios/plugins下。

Nagios配置

1)Nagios Server:
Nagios里须要配置的Object主要分Host, Service, Contact等;
其主配置是/etc/nagios3/nagios.cfg,通常不用怎么修改;

脚本配置

脚本的配置是/etc/nagios3/commands.cfg,这里面经常修改notify-host-by-email;notify-service-by-email,一般会修改发email的命令,我改为了用sendEmail(apt-get install sendEmail)发email:
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$" | /usr/bin/sendEmail -f <from@xxx.xx> -t <to@xxx.xx> -u "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" -s <SMTP_SERVER> -xu <EMAIL_USER_NAME> -xp <EMAIL_USER_PASSWORD>
        }

也可增长一些用短信报警的命令,具体可Google "Nagios短信报警"。
另外须要查看的脚本配置位于/etc/nagios-plugin/config下,好比check_nrpe.cfg:
# this command runs a program $ARG1$ with arguments $ARG2$
define command {
        command_name    check_nrpe
        command_line    /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -a $ARG2$
}

# this command runs a program $ARG1$ with no arguments
define command {
        command_name    check_nrpe_1arg
        command_line    /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

分别配置了带一个参数和带两个参数的nrpe命令,command name是check_nrpe_1arg的命令带一个参数,command name是check_nrpe的带两个参数。好比我配置的脚本想查看目标机上的load,command line就需配置成check_nrpe_1arg!check_load,该命令会调用nrpe server上的check_load命令。
想查看check_http/check_ping/check_mysql的详细,对应的请查看http.cfg/ping.cfg/mysql.cfg里是怎么配置的。通常都是调用/usr/lib/nagios/plugins下的脚本,这些脚本都是可执行的,加"-- help"可查看该脚本的具体用法。如:
/usr/lib/nagios/plugins/check_http --help

可输出check_http的使用说明。

配置的组成结构

在/etc/nagios3/conf.d下有一组配置,该配置的结构为:
1) contacts_nagios2.cfg: 配置联系人,可配置报警的命令等,通常我会在这里修改了联系人的email;
2) generic-service_nagios2.cfg和generic-host_nagios2.cfg配置,generic-host/generic-service的一些配置,这样你配置的host/service只要配上use generic-host/use generic-service就能继承相应的配置。扩展的配置放在extinfo_nagios2.cfg里,时间段配置在timeperiods_nagios2.cfg里,这几个文件我都没有修改。
3) hostgroups_nagios2.cfg里配置host的分组,实际上它的主要做用是给host进行分类;
4)最重要的是services_nagios2.cfg,这里配置了需监视的service,每一个service可指定针对哪类host有效。如:
define service {
        hostgroup_name                  http-servers         
service_description             HTTP
        check_command                   check_http
        use                             generic-service
        notification_interval           0 ; set > 0 if you want to be renotified
}

比较合理的配置方法是,在service_nagios2.cfg里为每类server配置service,而后在hosts.cfg和hostgroup_nagios2.cfg,配置相应的server和该server的类别。这样,在server地址或server上的服务发生变化的状况下,只须要修改host.cfg和hostgroup_nagios2.cfg便可。

被监控机器的配置

配置文件是/etc/nagios/nrpe.cfg。主要配置项有:
#server_address=127.0.0.1

默认是只有本机才能访问,多IP地址的状况下也不知道用的哪一个IP,一般状况下会配成内网的地址;
allowed_hosts=127.0.0.1

允许访问nrpe的机器,多个主机用','分隔,注意不要留空格,“127.0.0.1, 192.168.1.12”是不工做的,必须是"127.0.0.1,192.168.1.12";
nrpe里的自定义command,如:
command[check_users]=/usr/lib/nagios/plugins/check_users -w 5 -c 10
command[check_load]=/usr/lib/nagios/plugins/check_load -w 15,10,5 -c 30,25,20
command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/hda1

这样在nagios server上可经过/usr/lib/nagios/plugins/check_nrpe -H <被监控机器> -c check_load来调用被监控机上的check_load;又参见/etc/nagios-plugin/config/check_nrpe.cfg,须要配置的command line应为check_nrpe_1arg!check_load。我就是在这里写成了check_nrpe!check_load致使服务unknown的。

后继

按以上步骤,大概20分钟后就能够搭起一个最基本的监控系统。完成后可经过nagios的web查看各个host和service,观看详细的运行状况,包括下次监控脚本运行时间等等。若是须要细致的配置,如配置检查间隔等,请查看nagios的官方文档。(nagios主页位于http://nagios.org)
若是须要扩展监控脚本,需本身写一个脚本,返回值为0, 1, 2时分别表明Normal,Warning,Critical的状态,而后在nrpe里配好command便可。
我还碰到过一个报警命令配错了,系统在一次报警失败后,遇到新的须要报警的时候,没有再次报警的问题。Google了一下,多是Nagios Cache的问题,清下cache就行。
rm /var/cache/nagios3/*
相关文章
相关标签/搜索