一 安装
(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
}
阅读(6781) | 评论(0) | 转发(0) |