Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1728450
  • 博文数量: 163
  • 博客积分: 10591
  • 博客等级: 上将
  • 技术积分: 1980
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-08 18:17
文章分类

全部博文(163)

文章存档

2018年(1)

2012年(1)

2011年(47)

2010年(58)

2009年(21)

2008年(35)

分类: LINUX

2011-05-31 09:43:50

一 安装
(1)./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios --with-perl=/usr/bin/perl --with-gzip=/usr/bin/gzip --with-trusted-path=/sbin:/usr/sbin:/usr/local/sbin:/bin:/usr/bin:/usr/local/nagios/libexec --with-seekfiles-dir=/tmp --with-protocols-dir=/tmp
或者简单运行./configure          稍后会生成check_logfiles文件,你可以再自定义。
(2)make                  会生成check_logfiles文件
(3)make install          将安装到/usr/local/nagios/libexec

二 配置
check_logfiles解释一个配置文件,你可以自定义设置如下的选项
1. $seekfilesdir    
写状态信息文件的目录。状态信息文件帮助check_logfiles记住过去已经检查过的日志内容
2. $protocolsdir   
写协议信息文件的目录。协议信息文件包含了日志检查时匹配的内容
3. $scriptpath      
冒号分隔的目录,这些目录存放着可执行程序或脚本供                                     check_logfiles 调用。
4. $MACROS   
定义宏,然后你可以在表达式中使用这些宏,调用形式$MACROS$。宏的定义形式如:$MACROS = { CL_DOMAIN => ‘muc’, CL_VG00 => ‘/dev/vg00’ }。如果你没有定义宏,可仍然可以使用预定义宏:
    $CL_HOSTNAME$ 不带域的主机名
    $CL_IPADDRESS$  IP地址
    $CL_DATE_YYYY$ 年份(1970…)
    $CL_DATE_MM$  月份(01..12)
    $CL_DATE_DD$  日(01..31)
    $CL_DATE_HH$  小时(00..23)
    $CL_DATE_MI$  分钟(00..59)
    $CL_DATE_SS$  秒(00..59)
    $CL_SERVICEDESC$ 来源于配置文件中的服务描述
    $CL_NSCA_SERVICEDESC$ dto
    $CL_NSCA_HOST_ADDRESS$ 本机地址127.0.0.1
    $CL_NSCA_PORT$  5667
    $CL_NSCA_TO_SEC$  10
    $CL_NSCA_CONFIG_FILE$ send_nsca.cfg
    还有一些宏的值,在check_logfile运行时,是变的:
    $CL_LOGFILE$  当前日志的名字
    $CL_TAG$   当前的tag
    $CL_SERVICESTATEID$  最后匹配的状态(0..3)
    $CL_SERVICEOUTPUT$  最后匹配的文本
5. @searches  
一个列表,列表里存放着哈希表的索引。哈希表中描述了到哪里去寻找,匹配些什么,匹配到了怎么做等内容。向前兼容@logs
a) tag 
如果在@logs里包含了多个条目处理同一个日志文件。那么由于seekfile根据日志文件名来生成的,则上述情况将会造成问题。tag将被用于seekfile的名字中。
b) logfile
日志文件的名字,一般的如/var/adm/messages,/var/log/syslog.log。如果日志名字由日期组成,如LOGBUCH20060801230000,可以在日志名字中使用宏来匹配( logfile => ’LOGBUCH$CL_DATE_YYYY$$CL_DATE_MM$$CL_DATE_DD$...’ )  
       
c) archivedir
系统写rotated日志文件的目录,一般和日志文件目录相同。
d) rotation
用来匹配归档的日志文件。假设你的日志目录下现在存在messages messages.0 messages.1.gz suelzomat.log suelzomat.old.1 suelzomat.old.2 suelzomat.old.3 suelzomat.old.4 suelzomat.old.5 suelzomat.old.6 suelzomat.old.7 uucp.log
那么你可以这样匹配rotate日志( rotate => ’suelzomat.old.[0-9]’ )
e) criticalpatterns
一个正则表达式或者一组正则表达式,用来匹配日志文件中的严重错误。
criticalpatterns => [’.*Sense Key: Media Error.*’,’.*Sense Key: Not Ready.*’,’.*Sense Key: Hardware Error.*’, ...]
你可以在表达式前加上“!”,这样搜索的意义就反转了,即:如果没有匹配就报警。
f) criticalexceptions
用于排除criticalpatterns匹配中的某些部分。如
      criticalpatterns => '.*Failed password for illegal user.*',
      criticalexceptions => '.*Failed password for illegal user lausser'
g) criticalthreshold
这个数值设置了忽略匹配的次数。如设置成5,即忽略前4次匹配,第五次匹配才计数。
h) warningpatterns
i) warningexceptions
j) warningthreshold
k) options
一个逗号分隔的选项列表,可能的值如下:
- [no]protocol
如果匹配日志成功,则将匹配的行写道protocol文件中,protocol文件名来源于配置文件名和时间的组合。例如在12:00执行了check_logfiles –f check_oracle_alerts。配置文件名为check_oracle_alerts.cfg。则相应的匹配行将写入$protocoldir/check_oracle_alerts.protocol-2006-03-14-12-00-02
默认值是protocol。
- [no]count
如果一个表达式匹配,无论是错误还是警告,技术器都增加。最终达到某值将导致插件退出。
默认值是count
- [no]syslogserver
如果这个系统是日志服务器,那么设置了这个选项,将匹配.*(your_servers_hostname|localhost).* 这里的主机名是不带域的。
如果有相同主机名但不同域名的主机也将日志存在这台机器上,你可以设置nosyslogserver,然后使用模式.*($CL_HOSTNAMEFQDN$|localhost).* 来匹配。
l) script
如果你设置了script选项,则一个script或者binary将被调用。这个可执行程序必须存放在$scriptpath。默认的,script是不输出任何东西的,相关的信息将传给环境变量:
         CHECK_LOGFILES_LOGFILE    模式在哪个日志文件中被匹配
         CHECK_LOGFILES_SERVICESTATE  @searches里的tag
         CHECK_LOGFILES_SERVICESSTATE  WARNING或者CRITICAL
         CHECK_LOGFILES_SERVICESTATID   1或者2
         CHECK_LOGFILES_SERVICEOUTPUT   匹配的行
         CHECK_LOGFILES_HSOTNAME      本机的名字
m) scriptparams
可执行程序的参数。如 scriptparams => ‘-H $CL_NSCA_HOST_ADDRESS$’;
n) scriptstdin
如果你想往可执行程序的输入上写东西,可以使用这个选项。例如输入一个字符串:  scriptstdin =>  ‘$CL_HOSTNAME$\t$CL_SERVICEDESC$\t$CL_SERVICESTATEID$\n’;
o) scriptdelay
可执行程序执行完成后,spleep的时间,然后check_logfiles才继续运行。
6. $protocolretention
你想保存protocol文件的天数。默认为7天。
7. prescript
在check_logfiles运行前执行的程序。CHECK_LOGFILES_TAG将被设置为”startup”,服务状态总是OK。prescriptparams/prescriptstdin/prescriptdelay
8. postscript
CHECK_LOGFILES_TAG将被设置为”summary”。  postscriptparams/postscriptstdin/postdelay

三 check_logfiles如何使用
1. 通过nrpe使用check_logfiles
首先在nagios服务器上定义如下的service:
define service {
     service_description   check_sanlogs                 #根据不同的日志改名
     host_name             oaschgeign.muc                #改为要监控的主机
     check_command         check_nrpe!check_logfiles     #check_logfiles可变
     is_volatile           1
     check_period          7x24
     max_check_attempts    1
     ...
   }
  
   define command {
     command_name          check_nrpe
     command_line          $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
   }
在被监控的主机上需要更改nrpe.conf文件,添加
 command[check_logfiles]=/opt/nagios/libexec/check_logfiles -f logdefs.cfg 
2. 通过NSCA使用check_logfiles
在nagios服务器上定义如下的被动service:
     define service {
       service_description  logfilescan
       register               0
       is_volatile            1
       check_period           7x24
       passive_checks_enabled 1
       active_checks_enabled  0
       max_check_attempts     1
       ...
     }
     define service {
       service_description  check_sanlogs   #可以根据监控的日志更改
       host_name            oaschgeign.muc  #被监控的主机名
       contact_group        sanadmin
       use                  logfilescan
     }
阅读(6750) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~