Chinaunix首页 | 论坛 | 博客
  • 博客访问: 539746
  • 博文数量: 120
  • 博客积分: 3991
  • 博客等级: 中校
  • 技术积分: 1113
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-31 15:57
文章分类

全部博文(120)

文章存档

2011年(3)

2010年(6)

2009年(111)

我的朋友

分类: 系统运维

2009-10-16 16:04:12

 Nagios 监控利器之神

 (一)
    俗话说:工欲善其事,必先利其器.要做好系统管理,使自己的工作更轻松更有效的话,一个好的监控工具是必不可少的了.在这里我向大家推荐一款我使用了4年多的、功能强大、可灵活定制的开源监控利器---nagios。
首先,我们来看实际工作中需要监控的对象有哪些?在这里我总结出2种类型的监控对象:网络服务监控及主机资源监控。网络服务监控可包括主机存活检查、web服务监控、ftp服务监控、数据库服务监控、自定义服务监控等;主机资源监控可包括系统负载、当前ip链接数、磁盘空间使用情况、当前进程数以及自定义的资源监控等。
 其次,我们再来看nagios监控的表现形式。监控的主要目的是当监控的对象发生故障或资源紧张时及时通知相关人员,以便问题得到迅速的处理。追求的效果就是"在老板和客户发现问题之前得到及时、有效的通知",假定故障通知来自老板,我想大家都不会很愉快的。Nagios为了方便我们的管理工作,提供了至少3种表现手段:
  1、web方式,即通过浏览器观看被监控的对象;如正常状态下,其状态(status)是以蓝色填充并显示一个OK。
  2、邮件通知,发生故障时,到达设定重试次数和探测间隔时间后发送邮件给管理员或相关人员,报告问题的大致情况。
  3、手机短信,这是非常有用和及时的功能了;晚上熟睡中,再也没可能看web页面或查阅邮件,可以一旦发生故障,手机短信却能把你随时唤醒。
  一般情况下,这3者是同时进行的:上班时间开个浏览器看页面显示、打开邮件程序定时收取邮件、手机24小时在线。
  最后,我们以一个实际场景来展示nagios的强大功能,希望对大家的系统管理工作有所帮助。
  场景描述

 为了描述问题方便,我们假定有5个服务器要监控(web服务器、数据库服务器、邮件服务器、nfs文件共享服务器),需要对几个服务器的服务进行监控,同时监控每个服务器的资源使用情况,包括负载情况、磁盘分区使用情况、总进程数、当前ip连接数这个4个项目(当 然你也可以自己写脚本监控更多的资源对象)。这些服务器除了系统管理员而外,还有其他用户(如程序员)对各自的服务器进行维护;当发生故障的时候,维护网 站的程序员能收到报警邮件和报警短信,而管理数据库管理员则无需收到这些报警,同时维护程序的用户可以以自己的帐号登陆监控服务器,通过web方式察看自 己所管服务器的状态(只能看自己的而看不到别人管辖服务器的状态)。

  通过上面的描述,我们可以整理出下面的表格:
  机器名称
  角色
  可查看状态及接受报警信息的用户
  所需工具
  Nagios服务器
  监控端
  系统管理员(SA)
  Apache、nagios、nagios plugin、sendmail、perl等
  邮件服务器
  被监控端
  系统管理员、邮件管理员
  Nrpe、nagios plugin、自定义脚本等
  数据库服务器
  被监控端
  系统管理员、dba
  Nrpe、nagios plugin、自定义脚本等
  Web服务器
  被监控端
  系统管理员、webmaster
  Nrpe、nagios plugin、自定义脚本等
  Nfs共享服务器
  被监控端
  系统管理员
  Nrpe、nagios plugin、自定义脚本等
  缓存服务器(squid)
  被监控端
  系统管理员、webmaster
  Nrpe、nagios plugin、自定义脚本等
  配置好nagios和被监控机器后,其在浏览器里的基本输出与下图类似:
运维监控连载:开源监控利器nagios实战全解
  Nagios服务器的自我监控实现

   要实现资源和服务两个方面的监控,需要配置服务器端(nagios server)及被监控端(NRPE-nagios remote plugin executor).为了能顺利地、有条理的部署nagios监控平台,一个好的工作风格是在nagios server自身实现服务和资源的监控,然后再在其他监控端部署nrpe,从nagios server端用check_nrpe测试通过后,再在nagios server配置文件中逐一增加监控项目。当然如果只是监控服务而不监控主机资源,则被监控端不做任何nrpe的安装。为了方便初学者更容易上手和成功, 我们就从简单的步骤开始。

  自我监控实现:配置邮件发送功能
  因为报警邮件发送给用户邮箱后,监控系统本身没有必要接受别的邮件服务器发送的邮件,因此只需要使用服务器本身自带的sendmail来发送报警信息即可。用sendmail的另外一个目的就是简便。

   如果系统是redhat 或 centos ,只需执行 service sendmail start 启动守护进程,然后再用dns服务器给它一个合法的域名(即A记录),马上就可以用mail命令来发送测试邮件到你的某个电子邮箱里了。收到测试邮件,就 说明邮件系统配置结束,是不是很容易呢?这里给一个发送邮件的例子:

  mail  -s "This is sery's nagios test mail" sery@163.com < install.log
  自我监控实现:测试短信发送

   正常情况下,没有任何服务器能向手机发送短消息的,要到达这个目的,得花钱购买短信服务(也有些人运用飞信一类的方式来达到这个目的,个人觉得对于运营 网站不是太靠谱)。要是在几年前,自己申请短信通道还是有可能的,2005年以后似乎门槛提高了很多。当你付费成功后,短信服务商会给你提供入口及加密关 键字;然后我们自己写个脚本就可以发送短信。以下是我的服务器用perl写的脚本:

#!/usr/bin/perl -w
use strict;
use LWP::Simple;
use URI::Escape;
use Digest::MD5;

my ($mobile, $content) = @ARGV;
my $log_control = 1;
my $key = 'Ysdbyhd6T';
my $souce_content = substr($mobile, 0, 8) . substr($mobile, -10, 10) . $key;
my $md5 = Digest::MD5->new;
$md5->add($souce_content);
my $result_conent = uc($md5->hexdigest);

my $url = "([-BVG'0&Mobile=$mobile&Content=$content&Keyword=$result_conent";
my $result = get $url;
if($log_control) {
my $fh;
open($fh, '>> /var/log/sms.log') or die "can't open log: $!";
print $fh join(' ', time, $result, "n");
close $fh;
}

  (以上脚本有宇捷提供)
  说明:
  1、my $key = 'Ysdbyhd6T'' 短信服务商给的验证关键字。
  2、my $url="….."  短信服务商给的用户名、密码以及短信服务商的访问接口(url)全包括在这里了。

   我们把这个文件放在目录 /usr/local/bin/ 下面,把它命名为 sms_send.pl ,用命令 chomod +x /usr/local/bin/sms.pl 给与它执行权限。这个脚本在各种各样的unix、linux下都可以正常工作,nagios报警短信发送就是靠它了。如果读者也打算拿这个脚本发送短信的 话,只要改一下key值和url值就可以直接使用。

  接下来就是验证是否可以发送短信,执行命令行 /usr/local/bin/sms.pl 13300108888  "It is a test" ,回车后数秒钟,你的手机应该能收到带有内容"It is a test"的短信息。为了保证短信服务的可靠性,我做了一个策略:每天下午6点定时给我发一个通知短信;告诉我短信发送是正常的,也是该下班回家了。做 法:执行 crontab -e 然后输入行 00 18 * * * /usr/local/bin/sms.pl 13300108888  "It is Ok" 。

(二)
  Apache应该是我们最常用的部署了,它可以被弄得很复杂,但在nagios 这个平台上,我们只需要简单的功能即可,为了验证用户,我们稍微加一点修改就行了。这样做也是为了体现"越简单越容易的思想"。做得简单,以后重新部署或恢复就越迅速、越没压力[1]。
  (一) 安装apache

  tar zxvf httpd-2.2.8.tar.gz
  cd httpd-2.2.8
  ./configure  --prefix=/usr/local/apache    #仅仅需要这么一个选项
  make
  make install

  (二) 检查apache是否被正确的安装
 1、执行 /usr/local/apache/bin/apachectl -t 检查apache的配置文件语法是否正确。未经更改的apache配置文件语法显然是正确无误的,当我们对配置文件httpd.conf 或其包含的文件作了更改的时候,最好先运行一下这个命令,它的错误输出能迅速定位配置文件哪里出现了错误。

   2、执行命令行 /usr/local/apache/bin/apachectl start 启动apache守护进程,在别的机器的浏览器里输入这个服务器的ip地址,看是否可以正常浏览apache的默认页面-通常是一个"IT works!"。为了方便以后维护apache 更方便些,我们可以修改环境变量文件/etc/profile,在文件的末尾追加行 "export  PATH=$PATH:/usr/local/apache/bin ",保存后执行 source /etc/profile 使其修改立即生效,这样我们以后执行apache 启动之类的命令就不必输很长一串路径,直接输入 apachectl start 就可以了。

  (三)修改apache配置文件httpd.conf
   1、修改apache运行用户和组。默认是daemon,需要把它改成nagios。这样它才能有权限访问我们安装的nagios目录,执行相关的cgi命令,如通过浏览器界面关闭nagios、停止某个故障对象发送报警信息等。
 2、添加nagios访问目录(nagios 的安装路径/usr/local/nagios),同时使用http用户验证。把下面的内容追加到httpd.conf文件的末尾:

       ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin
      
         AuthType Basic
         Options ExecCGI
         AllowOverride None
         Order allow,deny
         Allow from all
         AuthName "Nagios Access"
         AuthUserFile /usr/local/nagios/etc/htpasswd 
         Require valid-user
      

  
      Alias /nagios /usr/local/nagios/share
         
        AuthType Basic
        Options None
        AllowOverride None
        Order allow,deny
        Allow from all
        AuthName "nagios Access"
        AuthUserFile /usr/local/nagios/etc/htpasswd 
        Require valid-user
     

   照这样一种方式修改配置文件,保证不会把配置文件改得一塌糊涂,我相信大部分初学者都有把文件修改后而不知道文件本身的原貌。到这步配置文件虽然修改好 了,但还不能通过语法检查,因为有2个与之相关联的东西还不存在,他们是用户和组nagios及apache的验证用户文件/usr/local /nagios/etc/htpasswd . 在后续操作中完成这任务后,再验证不迟。

 (一) 添加帐户,以用来运行Nagios。当然也可以用root运行,但出于安全考虑而使用普通帐号来运行,并且不给这个账号分配shell登录权限.
  1、 linux增加帐号的操作为 useradd nagios -s /sbin/nologin 添加帐号就自动生成同名组 nagios。
  2、 freebsd增加帐号的操作为 pw groupadd nagios ; pw useradd nagios -g nagios -s /sbin/nologin.
  注意:不要给nagios用户设置密码。
 (二) 安装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-init , make install-commandmode ,make install-config 这几个命令。我们选取其中的两个来执行:

  make install-commandmode
  make install-config

 跟一般的gnu源码软件安装相比,nagios的安装多了几个步骤(一般的软件运行到make install就算安装完了)。当然也可以连这两步都不执行,用手工赋予目录或文件权限,再手动创建配置文件,其效果完全相同。安装完nagios后,我们可以在安装目录/usr/local/nagios下生成下面的目录:
  bin Nagios执行程序所在目录,这个目录只有一个文件nagios
  etc Nagios配置文件位置,初始安装完后,只有几个*.cfg-sample文件
  sbin Nagios Cgi文件所在目录,也就是执行外部命令所需文件所在的目录
  share Nagios网页文件所在的目录
  var Nagios日志文件、spid 等文件所在的目录
  (三) 安装nagios插件

   没有插件,nagios将什么作用也没有,插件也是nagios扩展功能的强大武器,除了下载常用的插件外,我们还可以根据实际要求编写自己的插件。 Nagios的插件nagios-plugins-1.4.9在上可以找到,接着我们用wget下载它。注意:插件与 nagios之间的版本关联不大,不一定非得用nagios-plugins-1.4.9这个版本。下载完成后,安装它是很简单的:先执行配置 ./configure -prefix=/usr/local/nagios ,接着编译安装 make ; make install即可。这里需要说明一下的是在配置过程指定的安装路径是/usr/local/nagios,而不是/usr/local/nagios-plus,安装完成后,将在目录/usr/local/nagios生成目录libexec(里面有很多文件),这正是nagios所需要的。

运维监控Nagios连载3:部署、配置Nagios服务
  (四) 配置nagios
  配置是nagios最复杂的部分,让我们耐心一些,逐个处理,配置成功也不是什么难事。刚安装完成的nagios,其配置文件的目录是/usr/local/nagios/etc,下图是其etc目录的文件:

   先把这些文件改名,如 cgi.cfg-sample改成cgi.cfg ,用命令cp cgi.cfg-sample cgi.cfg …依样把余下的几个*.cfg-sample都复制成*.cfg文件。从nagios2.6版开始,不用修改配置文件localhost.cfg就可以直 接运行../bin/nagios -v nagios.cfg验证程序是否能正常运行(nagios2.5及以前版本的最小运行的配置文件是minimal.cfg,但需要修改这个文件多处才能 验证成功)。当然,我们不能指望这个最小的配置文件能够满足实际的需求,因此,需要对现有的配置文件进行修改,其次增加自定义的一些配置文件。通过复制这 些自带的模板文件,我们可以得出几个主要的配置文件,我们可以把它归类为:

运维监控Nagios连载3:部署、配置Nagios服务
  类型名
  包含文件
  作用
  备注
  主配置文件
  nagios.cfg
  定义和控制nagios行为
  需要修改
  Cgi配置文件
  cgi.cfg
  浏览器执行诸如重启nagios服务等
  修要修改
  宏定义文件
  Resource.cfg
  定义插件路径
  不需修改
  命令定义文件
  Commands.cfg
  定义怎么发送短信、邮件等
  需要修改
  其他文件
  contactgroups.cfg,
  contacts.cfg,hostgroups.cfg,hosts.cfg,services.cfg
  监控对象配置文件,如主机配置文件、联系人配置文件等
  主配置文件包含,手动创建
  依照这个表格,我们逐一配置之。
  1、修改主配置文件nagios.cfg.基于方便维护的原则,把各个配置目标单独放在文件中,如联系人信息在contacts.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   

     #在web界面下重启nagios、停止主机/服务检查等操作,.默认值是0.
     check_external_commands=1 
     #根据自己的情况定这个命令检查时间间隔.默认值是1秒.
  command_check_interval=10s 

  2、修改cgi配置文件cgi.cfg.跟修改nagios.cfg一样,只贴出被修改之处:

     #如有多个用户,中间用逗号隔开
     authorized_for_system_information=sery
     authorized_for_configuration_information=sery
     authorized_for_system_commands=sery 
     authorized_for_all_services=sery
     authorized_for_all_hosts=nagiosadmin,sery
     authorized_for_all_service_commands=sery
     authorized_for_all_host_commands=sery

  在这里指定的用户"sery"可以通过浏览器操纵nagios服务的关闭、重启等各种操作。
  3、修改commands.cfg配置文件
  这个文件已经包含了发送邮件报警的部分,因此只需要再把短信报警的部分加上就可以了

     ###### host-notify-by-sms command definition
     define command{
          command_name    host-notify-by-sms
       command_line /usr/local/bin/sms.pl $CONTACTPAGER$         "$NOTIFICATIONTYPE$ alert - Host $HOSTNAME$ is $HOSTSTATE$"
          }
     ###### service-notify-by-sms command definition
     define command{
          command_name    service-notify-by-sms
       command_line    /usr/local/bin/sms.pl $CONTACTPAGER$    "$NOTIFICATIONTYPE$: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$"
          }

   第一个块定义主机报警的内容,即主机发生死机、恢复等情况发送手机短信报警,其接受者和发送内容由"$..$"定义的宏来决定。第二个块定义服务报警内 容,即监控的服务或监控的主机资源发生故障时发送手机报警短信。Nagios规定,如果探测到被监控的主机停机或不可达,它就不再探测这个停机主机上的服 务。通俗地一点理解:主机都停了,当然服务也跟着停了!另外一个需要注意的地方是命令行(command_line)路径一定要用全路径,这里调用的命令 就是我们在全面编写的那个脚本sms.pl。

  3、 新增其他配置文件

  在主配置文件nagios.cfg中,我们注释 了行 cfg_file=/usr/local/nagios/etc/localhost.cfg ,而使用若干单独的配置文件来定义各种对象,这样可以获得维护方便、书写规范等诸多方面的好处。这些单独的配置文件不是自然存在的,我们需要手工创建并添 加内容。当然,一开始我们并不是很清楚怎么往这些文件里添加内容,只好回过头去看官方文档,天啦,太分散了,尽然不知道怎么着手了!怎么办?打开文件 localhost.cfg-sample,心里基本上就有数了:无非是把这个文件拆分开来,形成多个文件嘛!下面我按新添一个主机进入监控的较优方式添 加这些配置文件(当然也可以有其它的顺序,这并不影响监控的效果)。好了,我们先把nagios服务器本身给监控上,这些监控包括:主机存活、web服务 监控、磁盘空间监控、负载监控、进程数监控、ip连接数监控。

  (1)、定义主机配置文件hosts.cfg

         define host {
         host_name                 nagios-server
         alias                      nagios server
         address                    59.26.240.63
         contact_groups              sagroup
         check_command             check-host-alive
         max_check_attempts          5
         notification_interval          10   
         notification_period           24x7
         notification_options          d,u,r
         }

  说明:
  ● 联系组contact_group没有建立,需在后面的步骤完成。
  ● 主机检查命令行一般选择检查主机存活check-host-alive。
  ● 最大尝试次数最好不要设置为"1",一般3-4次比较合理。
  ● 通知时间间隔notification_interval 根据自己实际情况设定,它的单位是分钟。
  ● 通知选项notification_options 几个值的意思是 d-down,u-unreacheable,r-recovery.
  (2)、定义主机组配置文件hostgroups.cfg

        define hostgroup {
        hostgroup_name  sa-servers
        alias            sa servers
        members        nagios-server
        }

  说明:
  ● 这个配置文件不是必须的,为了在浏览器里方便归类及察看状态,可以添加这个文件。
  ● 主机组的成员必须是在hosts.cfg里已经定义了的,多个主机成员间用逗号分隔。
  (3)、定义联系人配置文件contacts.cfg

       define contact {
       contact_name         sery
       alias                system administrator
       service_notification_period    24x7
       host_notification_period       24x7
       service_notification_options   w,u,c,r
       host_notification_options       d,u,r
       service_notification_commands service-notify-by-email,service-notify-by-sms
       host_notification_commands     host-notify-by-email,host-notify-by-sms
       email                          sery@163.com
       pager                          13301000018
       }

  说明:
  ● 服务通知选项 w-warning,u-unknown,c-critical,r-recovery.
  ● 主机通知选项 d-down,u-unreacheable,r-recovery。
  ● 服务通知命令行及服务通知命令行在配置文件commands.cfg中得到定义,如果有报警发生,则邮件和手机短信一起发送给相关人,即下两行定义的email,pager.
  ● 收报警信息的邮件和手机,一个人如有2个手机,手机号之间有逗号分隔,邮件也如此。
   ● 如果这里定义的用户需要通过浏览器察看他所负责的服务器监控状态的话,还需要     用apache的工具htpasswd增加同名帐号。
  (4)、定义联系组配置文件contactgroups.cfg

        define contactgroup {
        contactgroup_name    sagroup 
        alias                system administrator group
        members             sery 
        }

  说明:
  ● 当有多个人行使同样的职责时,定义成组是非常有用的。
  ● 多个成员之间用逗号分隔。
  ● 成员必须在联系人配置文件(contacts.cfg)已经定义。
  (5)、定义服务配置文件 services.cfg

      define service {
          host_name        nagios-server 
          service_description   check-host-alive
          check_period          24x7
          max_check_attempts    4
          normal_check_interval 3
          retry_check_interval  2
          contact_groups        sagroup 
          notification_interval   10
          notification_period     24x7
          notification_options    w,u,c,r
          check_command           check-host-alive 
          }
  define service {
          host_name             nagios-server
          service_description   check_tcp 80
          check_period          24x7
          max_check_attempts    4
          normal_check_interval 3
          retry_check_interval  2
          contact_groups        sagroup
          notification_interval   10
          notification_period     24x7
          notification_options    w,u,c,r
          check_command      check_tcp!80
          }
      define service{
          host_name               nagios-server
          service_description     check-disk
          check_command           check_nrpe!check_df
          max_check_attempts      4
          normal_check_interval   3
          retry_check_interval    2
          check_period            24x7
          notification_interval   10
          notification_period     24x7
          notification_options    w,u,c,r
          contact_groups          sagroup
          }
  define service{
          host_name               nagios-server
          service_description     check-load
          check_command           check_nrpe!check_load
          max_check_attempts      4
          normal_check_interval   3
          retry_check_interval    2
          check_period            24x7
          notification_interval   10
          notification_period     24x7
          notification_options    w,u,c,r
          contact_groups          sagroup
          }
  define service{
          host_name               nagios-server
          service_description     total_procs
          check_command           check_nrpe!check_total_procs
          max_check_attempts      4
          normal_check_interval   3
          retry_check_interval    2
          check_period            24x7
          notification_interval   10
          notification_period     24x7
          notification_options    w,u,c,r
          contact_groups          sagroup
          } 

  说明:
  ● 主机名 host_name,必须是主机配置文件hosts.cfg中定义的主机。
  ● 检查用的命令 check_command,在命令配置文件中定义或在nrpe配置文件中有定义。
  ● 最大重试次数 max_check_attempts 一般设置为3-4次比较好,这样不会因为网络闪断片刻而发生误报。
  ● 检查间隔和重试检查间隔的单位是分钟。
  ● 通知间隔指探测到故障以后,每隔多少时间发送一次报警信息。 它的单位是分钟。
  ● 通知选项跟服务定义配置文件相同。
  ● 联系组contact_groups由配置文件contactgroup.cfg定义。
  ● 检查主机资源需要安装和配置nrpe,这个过程在后面完成。
  五、部署nrpe
  (一)安装nrpe

    tar zxvf nrpe-2.8.1.tar.gz
    cd nrpe-2.8.1
   ./configure -prefix=/usr/local/nrpe
    make
    make install

  注:如果在其他被监控机安装nrpe,需要添加系统用户nagios.
  (二)复制文件

   安装完nrpe后,在安装目录/usr/local/nrpe/libexec只有一个文件check_nrpe,而在nagios插件目录,却缺少这 个文件,因此需要把这个文件复制到nagios插件目录;同样,因为nrpe需要调用的诸如check_disk等插件在自己的目录没有,可是这些文件确 是nagios插件所存在的,所以也需要从nagios目录复制一份过来。我们把复制过程列举出来:

     cp /usr/local/nrpe/libexec/check_nrpe  /usr/local/nagios/libexec
     cp /usr/local/nagios/libexec/check_disk  /usr/local/nrpe/libexec
     cp /usr/local/nagios/libexec/check_load  /usr/local/nrpe/libexec
     cp /usr/local/nagios/libexec/check_ping  /usr/local/nrpe/libexec
     cp /usr/local/nagios/libexec/check_procs  /usr/local/nrpe/libexec

  (三)配置nrpe
  安装完nrpe以后,在安装目录并没有可用的配置文件,但我们只需把解压目录的样例文件复制到安装目录,然后修改这个文件.
  1、 mkdir /usr/local/nrpe/etc
  2、 cp sample-config/nrpe.cfg  /usr/local/nrpe/etc
  3、 修改配置文件/usr/local/nrpe/etc/nrpe.cfg.该过的地方用粗体显示:

     pid_file=/var/run/nrpe.pid
     server_port=5666
    
      #以单独的守护进程运行
     server_address=59.26.240.63
    
     nrpe_user=nagios
     nrpe_group=nagios

     allowed_hosts=127.0.0.1,59.26.240.63
  
     dont_blame_nrpe=0

     debug=0

     command_timeout=60
     connection_timeout=300

     # The following examples use hardcoded command arguments...

     command[check_users]=/usr/local/nrpe/libexec/check_users -w 5 -c 10
     command[check_load]=/usr/local/nrpe/libexec/check_load -w 15,10,5 -c 30,25,20
     #command[check_hda1]=/usr/local/nrpe/libexec/check_disk -w 20 -c 10 -p /dev/hda1
     command[check_df]=/usr/local/nrpe/libexec/check_disk -w 20 -c 10
     command[check_zombie_procs]=/usr/local/nrpe/libexec/check_procs -w 5 -c 10 -s Z
     command[check_total_procs]=/usr/local/nrpe/libexec/check_procs -w 150 -c 200
     command[check_ips]=/usr/local/nrpe/libexec/ip_conn.sh 8000 10000

  说明:
  ● allowed_hosts=127.0.0.1,59.26.240.63 必须允许nagios监控服务器可以访问。

   ● command[check_df]=/usr/local/nrpe/libexec/check_disk -w 20 -c 10 检查整个服务器的磁盘利用率;如果是freebsd系统,因为其/dev分区为100%,需要排除这个分区,因此其命令行应该为 "command[check_df]=/usr/local/nrpe/libexec/check_disk -x /dev -w 20 -c 10"。

  ● command[check_ips]=/usr/local/nrpe/libexec/ip_conn.sh 8000 10000 ip连接数,ip_conn.sh脚本需要自己写,下面给出脚本的内容:

    #!/bin/sh
  #if [ $# -ne 2 ]
  #then
  #  echo "Usage:$0 -w num1 -c num2"
  #exit 3
  #fi

  ip_conns=`netstat -an | grep tcp | grep EST | wc -l`

   if [ $ip_conns -lt $1 ]
     then
     echo "OK -connect counts is $ip_conns"
     exit 0
   fi

   if [ $ip_conns -gt $1 -a $ip_conns -lt $2 ]
     then
     echo "Warning -connect counts is $ip_conns"
     exit 1
   fi

   if [ $ip_conns -gt $2 ]
     then
     echo "Critical  -connect counts is $ip_conns"
     exit 2
   fi

    我在nrpe配置文件nrpe.cfg把脚本所需的两个参数写上了,因此这个脚本就不需判断两个参数输入值的情况。只要当前ip连接数大于8000,系统就发warning报警,超过10000,则发"critical"报警信息。把这个脚本 放在目录/usr/local/nrpe/libexec下,并给于执行权限。

  (四)、启动nrpe服务并检验其配置
   1、以独立守护进程启动nrpe服务 /usr/local/nrpe/bin/nrpe -c /usr/local/nrpe/etc/nrpe.cfg -d
   2、通过察看系统日志,正常启动可以看到如下输出:

  Mar  2 21:07:18 MONITOR nrpe[23823]: Starting up daemon
  Mar  2 21:07:18 MONITOR nrpe[23823]: Listening for connections on port 5666
  Mar  2 21:07:18 MONITOR nrpe[23823]: Allowing connections from: 127.0.0.1,59.26.240.63

   察看端口,也能看见5666端口处于监听状态:

  [root@MONITOR nrpe]# netstat -an
  Active Internet connections (servers and established)
  Proto Recv-Q Send-Q Local Address     Foreign Address             State     
  tcp    0    0 59.26.240.63:5666       0.0.0.0:*                  LISTEN

   察看进程:

  [root@MONITOR nrpe]#ps aux | grep nrpe | grep -v grep
  nagios   23823  0.0  0.0   4864   924 ? Ss   21:07   0:00 bin/nrpe -c etc/nrpe.cfg -d

   3、检查插件功能
   (1)检查nrpe服务

  [root@MONITOR nrpe]# libexec/check_nrpe -H 59.26.240.63
  NRPE v2.8.1

   (2)通过nrpe检查主机资源

  [root@MONITOR nrpe]# libexec/check_nrpe -H 59.26.240.63 -c check_df
  DISK OK - free space: / 8241 MB (77% inode=98%); /var 5239 MB (95% inode=99%); /usr 11971 MB (86% inode=97%); /dev/shm 1013 MB (100% inode=99%);| /=2417MB;11218;11228;0;11238 /var=273MB;5792;5802;0;5812 /usr=1807MB;14508;14518;0;14528 /dev/shm=0MB;993;1003;0;1013
  [root@MONITOR nrpe]#libexec/check_nrpe -H 59.26.240.63 -c check_ips
  OK -connect counts is 13956

  六、启动nagios:验证nagios工作状态
  1、检查配置: nagios的验证非常准确,凡是不能正确启动nagios,皆可以从错误输出找到答案.

  /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
  Reading configuration data...

  Running pre-flight check on configuration data...
  ……………
  Total Warnings: 0
  Total Errors:   0

  Things look okay - No serious problems were detected during the pre-flight check

  2、启动nagios
  /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
  3、检验监控效果。现在我们监控了本机的web服务,但由于apache服务还没有被启动起来,所以等待片刻后,正常情况下会收到邮件和手机短信报警信息;等后面我们把apache服务起来后,应该能够收到服务已经恢复的报警短信和邮件。
  4、创建web验证用户。我们根据前面apache配置文件的验证方法来创建用户:

  /usr/local/apache/bin/htpasswd -c /usr/local/nagios/etc/htpasswd sery
      

  5、启动apache服务,然后在别的机器的浏览器地址栏输入 ,再输入第"4"产生的用户名及设定的密码,即可通过web方式察看监控系统当前的状态(浏览器自动刷新屏幕),如下图所示:
运维监控Nagios连载3:部署、配置Nagios服务
阅读(2286) | 评论(0) | 转发(0) |
0

上一篇:vsftpd 指南

下一篇:openNms+Nagios+Ntop

给主人留下些什么吧!~~