Nagios目标

     前段时间在客户那里做项目,晚上一切平安的回去了,第二天还不到7点就打电话,郁闷(平时9点才起来的)说系统登录不上去了,电话也登陆不上去了。郁闷昨天走的时候好好的,已经十分稳定的运行了n久了,怎么突然这样子了那,迷迷糊糊(晚上睡的太晚了,睡觉的时候好像天已经亮了)的起来打开电脑,机械式的插上网线、连上***,先ping下服务器ip地址,我靠不通。不应该啊,又郁闷了下,前端服务器是双机热备啊,怎么会不通那,没办法找人去客户机房。
     起来就和客户网管去了机房,打开机房门。哇塞,一股热浪澎一下子出来了。这时知道了服务器怎么回事了,赶紧开空调、打开机柜门,挺壮观的除了有人用的服务器当机了,其他的服务器全部报警(挺好看的,清一色的ibm服务器)。
     不由得说出一声,有个监控系统就好了,现在研究下nagios这个开源的监控系统,首先谢谢秋香大姐。
       就像yahoo 说的一样学东西要一个目标,看到下图界面算成功了一小半,最主要的是,我们不在电脑旁边是它给与我们告警。

1、web方式如下图  正常状态下,其状态(status)是以蓝色填充并显示一个OK。
 

2、邮件通知,发生故障时,到达设定重试次数和探测间隔时间后发送邮件给管理员或相关人员,报告问题的大致情况如下图:

3、手机短信,这是非常有用和及时的功能了;服务出现故障时只要你带着手机就能知道

这3者是同时进行的:上班时间开个浏览器看页面显示、收取邮件、实时发送手机短信。
 
系统环境,以及准备
 
所需的软件

httpd-2.2.12.tar.gz 
www.apache.org上能下载到
nagios-2.9.tar.gz
nagios-plugins-1.4.9.tar.gz
nrpe-2.12.tar.gz

上面软件可以从http://www.nagios.org/download/网站上下载
 
  启用发送邮件的邮件客户端sendmai服务
启动linux服务器上自带的服务sendmail 服务,测试是否能发送邮件。
#service sendmail restart
#mail –s “内容” < 文件名
# chkconfig --level 2345 sendmail on   #把邮件服务添加到自启动里

建立nagios 、apache 程序运行所用的账号
#useradd  nagios -s /sbin/nologin

开始安装web浏览器apache
开始安装apache
   #tar -zxvf httpd-2.2.12.tar.gz
   #cd httpd-2.2.12
   #./configure --prefix=/usr/local/apache/
   #make
   #make install

启动apache 服务
#/usr/local/apache/bin/apachectl start
在浏览器中输入http://192.168.2.47地址能测试apache 服务是否正确。出现”It Works!”,说明apache服务正常运行。
每次用这么长的路径来启动服务,非常麻烦
#echo "export  PATH=$PATH:/usr/local/apache/bin" >> /etc/profile
#source /etc/profile
 
这次好了再启动apache 时用
#apachectl start就行了简便多了
 修改apache配置文件httpd.conf
修改apache运行用户和组。需要把它改成nagios。添加nagios访问目录(nagios 的安装路径/usr/local/nagios),同时使用http用户验证。把下面的内容追加到httpd.conf文件的末尾:
ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin
<Directory "/usr/local/nagios/sbin">
    Options ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all
    AuthName "Nagios Access"
    AuthType Basic
    AuthUserFile /usr/local/nagios/etc/htpasswd  # //用于此目录访问身份验证的文件
    Require valid-user
</Directory>
 
Alias /nagios /usr/local/nagios/share
<Directory "/usr/local/nagios/share">
    Options None
    AllowOverride None
    Order allow,deny
    Allow from all
    AuthName "Nagios Access"
    AuthType Basic
    AuthUserFile /usr/local/nagios/etc/htpasswd   # //用于此目录访问身份验证的文件
    Require valid-user
</Directory>

这里完成apache的配置,这里不能重启,需要安装完成nagios之后重启
 
开始安装nagios程序
 
程序下载到本地之后通过ssh等其他工具上传到服务器上,开始安装nagios主程序
 
#tar -zxvf nagios-2.9.tar.gz
#cd nagios-2-9
#./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios
#make all
#make install
#make install-commandmode
#make install-config

安装完nagios后,我们可以在安装目录/usr/local/nagios下生成下面的目录:

增加验证用户也就是通过web访问nagios的时候,必须要用这个用户登陆.在这里我们增加用户lee:密码为123456
[root@nogios-server~]#/usr/local/apache2/bin/htpasswd -c /usr/local/nagios/etc/htpasswd lee
New password: (输入123456)
Re-type new password: (再输入一次密码)
Adding password for user test

查看认证文件的内容
[root@nogios-server ~]#cat /usr/local/nagios/etc/htpasswd

lee:OmWGEsBnoGpIc  前半部分是用户名lee,后面是加密后的密码
 
到这里nagios的安装也就基本完成了,你可以通过web来访问
了.http://192.168.2.47/nagios 会弹出对话框要求输入用户名密码,
输入刚刚建立的用户名和密码就能访问到nagios的主页面了,如下图

 
现在点击里面的选项什么都打不开,因为还没有安装完成那,耐心安装吧,继续吧。
 
安装nagios 需要插件,安装完成之后会在nagios/libexec目录下生成nagios 需要的文件
[root@nogios-server ~]# tar -zxvf nagios-plugins-1.4.9.tar.gz
[root@nogios-server ~]# cd nagios-plugins-1.4.9
[root@nogios-server ~]#./configure --prefix=/usr/local/nagios/
[root@nogios-server ~]# make
[root@nogios-server ~]# make install

安装完成之后,目录下多了很多文件,如下图。

这些插件都是nagios需要的插件
 
安装nrpe
1、安装nrpe
#tar zxvf nrpe-2.12.tar.gz
#cd nrpe-2.12
#./configure –prefix=/usr/local/nrpe
#make
#make install
注:如果在其他被监控机安装nrpe,需要添加系统用户nagios.
 
2、复制文件
安装完nrpe后,需要很多nagios的插件,下面把nagios的插件复制过去。
进入到nagios 、libexec目录下
#cd /usr/local/nagios/libexec/
#cp /usr/local/nrpe/libexec/check_nrpe
#cp check_disk  /usr/local/nrpe/libexec
#cp check_load  /usr/local/nrpe/libexec
#cp check_ping  /usr/local/nrpe/libexec
#cp check_procs  /usr/local/nrpe/libexec

安装完成之后 nrpe没有生成配置文件
#mkdir /usr/local/nrpe/etc
#cp sample-config/nrpe.cfg  /usr/local/nrpe/etc

到这里监控机器(nagios-server)上的软件就全部安装完成了,下面就改配置了,下面的就麻烦了耐心慢慢配。
 
配置nagios服务器
 
到/usr/local/nagios/etc/目录下配置nagios的配置文件,ls看下里面有很多配置文件如下图
里面是配置文件的模板,先改下名字
#cp nagios.cfg-sample nagios.cfg  #主配置文件,控制与定于nagios行为
#cp cgi.cfg-sample cgi.cfg           #浏览器调用
#cp commands.cfg-sample commands.cfg #定义如何检查服务、如何发送邮件以及信息
#cp resource.cfg-sample resource.cfg
修改主配置文件nagios.cfg
#cfg_file=/usr/local/nagios/etc/localhost.cfg   #注释或删掉这行
cfg_file=/usr/local/nagios/etc/hosts.cfg     #主机配置文件路径
cfg_file=/usr/local/nagios/etc/hostgroups.cfg  #主机组配置文件路径
cfg_file=/usr/local/nagios/etc/contacts.cfg      #去掉注释联系人配置文件路径
cfg_file=/usr/local/nagios/etc/contactgroups.cfg   #去掉注释,联系组配置文件路径
 cfg_file=/usr/local/nagios/etc/services.cfg       #去掉注释,服务配置文件路径    
 cfg_file=/usr/local/nagios/etc/timeperiods.cfg      #去掉注释,监视时段配置文件路径

 check_external_commands=1  #在web界面下重启nagios、停止主机/服务检查等操作,.默认值是0.
 command_check_interval=10s   #根据自己的情况定这个命令检查时间间隔.默认值是1秒.
 
修改cgi配置文件cgi.cfg.跟修改nagios.cfg一样,修改的地方如下:
   #如有多个用户,中间用逗号隔开
   authorized_for_system_information=lee
   authorized_for_configuration_information=lee
   authorized_for_system_commands=lee
   authorized_for_all_services=lee
   authorized_for_all_hosts= lee
   authorized_for_all_service_commands=lee
   authorized_for_all_host_commands=lee

在这里指定的用户”lee”可以通过浏览器操纵nagios服务的关闭、重启等各种操作
 增加其他的配置文件
1、增加主机配置文件
#vi hosts.cfg
define host {
       host_name                 nagios-server   #监控机的主机名
       alias                      nagios server
       address                    192.168.2.47   #监控机的ip地址
       contact_groups              sagroup
       check_command             check-host-alive   #主机检查使用命令
       max_check_attempts          3      #最大尝试次数
       notification_interval          10       #通知时间间隔
       notification_period           24x7
       notification_options          d,u,r  #d-down, u-unreacheable, r-recovery.
       }
#被监控主机的定义
define host {
       host_name                  mysql
       alias                      mysql
       address                    192.168.2.154
       contact_groups              sagroup
       check_command             check-host-alive
       max_check_attempts          3
       notification_interval          10
       notification_period           24x7
       notification_options          d,u,r
       }

创建联系组contact_group配置文件
 2、定义主机组配置文件hostgroups.cfg
 
    define hostgroup {
      hostgroup_name  sa-servers
      alias            sa servers
      members        nagios-server
      }

  主机组的成员必须是在hosts.cfg里已经定义了的,多个主机成员间用逗号分隔。