nagios+check_logifile实现日志监控

日志检查时我们平时用的非常多的一种监控方式,检查日志我们需要使用nagios插件,比如nagios自带的check_logfile,功能比较有限;我们使用ConSol Labs出品的check_logfiles,它能够处理截断日志,支持宏定义,支持正则等功能,使我们的监控更加灵活。

一.安装

1.安装check_logfiles

tar -zxvf check_logfiles-3.6.3.tar.gz
cd /usr/local/src/ check_logfiles-3.6.3
./configure --prefix=/usr/local/nagios/ --with-nagios-user=nagios --with-nagios-group=nagios --with-seekfiles-dir=/usr/local/nagios/var/tmp --with-protocols-dir=/usr/local/nagios/var/tmp --with-perl=/usr/bin/perl --with-gzip=/bin/gzip
make

此时可能会报错:

CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/sh /usr/local/src/check_logfiles-3.6.3/missing autoconf
aclocal.m4:21: warning: this file was generated for autoconf 2.69.
You have another version of autoconf.  It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically 'autoreconf'.
configure.ac:4: error: Autoconf version 2.65 or higher is required
aclocal.m4:278: AM_INIT_AUTOMAKE is expanded from...
configure.ac:4: the top level
autom4te: /usr/bin/m4 failed with exit status: 63
WARNING: 'autoconf' is probably too old.
         You should only need it if you modified 'configure.ac',
         or m4 files included by it.
         The 'autoconf' program is part of the GNU Autoconf package:
         <http://www.gnu.org/software/autoconf/>
         It also requires GNU m4 and Perl in order to run:
         <http://www.gnu.org/software/m4/>
         <http://www.perl.org/>
make: *** [configure] 错误 63

这是由于服务器的autoconf版本问题导致,正如提示说“aclocal.m4:21: warning: this file was generated for autoconf 2.69.” 编译需要autoconf的版本为2.6.9,而我们的版本为

[[email protected] monitors]# /usr/bin/autoconf -V
autoconf (GNU Autoconf) 2.63
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv2+: GNU GPL version 2 or later
<http://gnu.org/licenses/old-licenses/gpl-2.0.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by David J. MacKenzie and Akim Demaille.

因此我们需要升级将autoconf版本升级为2.69.

2.安装autoconf

[[email protected] src]# wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz
[[email protected] src]# cd autoconf-2.69
[[email protected] src]# ./configure --prefix=/usr
[[email protected] src]# make && make install

注意:我们一定要将其安装到/usr下,否则编译check_logfiles时不会使用新版的autoconf

3.编译安装check_logfiles

make && make install

安装完成后check_logfiles插件将安装到/usr/local/nagios/libexec下,我们需要配置下权限

chown nagios.nagios /usr/local/nagios/libexec/check_logfiles

另外,由于我们检查下是否有/usr/local/nagios/var/tmp这个目录,如果没有的话还要新建,因为我们之前将seekfile及protocols目录安装在此。

至此,安装完毕。

二.配置

首先我们来看下check_logfiles自带的帮助信息

[[email protected] src]# /usr/local/nagios/libexec/check_logfiles -h
This Nagios Plugin comes with absolutely NO WARRANTY. You may use
it on your own risk!
Copyright by ConSol Software GmbH, Gerhard Lausser.

This plugin looks for patterns in logfiles, even in those who were rotated
since the last run of this plugin.

You can find the complete documentation at
http://labs.consol.de/nagios/check_logfiles/

Usage: check_logfiles [-t timeout] -f <configfile>

The configfile looks like this:

$seekfilesdir = '/opt/nagios/var/tmp';		写状态信息的目录,这里面记录已经检查过的日志内容,相当于历史记录
# where the state information will be saved.

$protocolsdir = '/opt/nagios/var/tmp';					写协议信息的目录,这里面记录日志检查的匹配信息
# where protocols with found patterns will be stored.

$scriptpath = '/opt/nagios/var/tmp';				可调用的脚本或程序
# where scripts will be searched for.

$MACROS = { CL_DISK01 => "/dev/dsk/c0d1", CL_DISK02 => "/dev/dsk/c0d2" };定义宏,我们可以调用的变量

@searches = (此处为配置文件的内容,我们可以通过配置文件来执行程序,也可以通过在命令行中直接定义。通过配置文件更方便
  {
    tag => 'temperature',<span style="white-space:pre">	</span>tag可以理解为一个自定义的标志,它将在生成状态信息或协议信息中作为名字中的一部分使用,并没有实际的意义
    logfile => '/var/adm/syslog/syslog.log',<span style="white-space:pre">	</span>logfile为所要监控的日志文件
    rotation => 'bmwhpux',<span style="white-space:pre">	</span>rotation如果有截断日志的话用来定义如何匹配截断日志
    criticalpatterns => ['OVERTEMP_EMERG', 'Power supply failed'],<span style="white-space:pre">	</span>严重错误,可以匹配一个或多个正则表达式
    warningpatterns => ['OVERTEMP_CRIT', 'Corrected ECC Error'],<span style="white-space:pre">	</span>警告错误,可以匹配一个或多个正则表达式
    options => 'script,protocol,nocount',<span style="white-space:pre">	</span>选项列表,我们可以选择启动脚本,写协议,不计数等操作
    script => 'sendnsca_cmd'<span style="white-space:pre">	</span>脚本的名字
  },
  {
    tag => 'scsi',
    logfile => '/var/adm/messages',
    rotation => 'solaris',
    criticalpatterns => 'Sense Key: Not Ready',
    criticalexceptions => 'Sense Key: Not Ready /dev/testdisk',
    options => 'noprotocol'
  },
  {
    tag => 'logins',
    logfile => '/var/adm/messages',
    rotation => 'solaris',
    criticalpatterns => ['illegal key', 'read error.*$CL_DISK01$'],
    criticalthreshold => 4
    warningpatterns => ['read error.*$CL_DISK02$'],
  }
);

以上将各个项目统一写到配置文件中,当然也可以将其放入命令行中调用,两种调用方式如下:

[[email protected] src]# /usr/local/nagios/libexec/check_logfiles
Usage: check_logfiles [-t timeout] -f <configfile> [--searches=tag1,tag2,...]
       check_logfiles [-t timeout] --logfile=<logfile> --tag=<tag> --rotation=<rotation>
                      --criticalpattern=<regexp> --warningpattern=<regexp>

三.应用

1.我们在被监控端编辑一个配置文件,如:

[[email protected] var]# vim /usr/local/nagios/var/log.cfg
@searches = (
	{
		tag => 'web_monitor',
		logfile => '/var/log/web_monitor.log',
		criticalpatterns => ['nginx has restart','nginx is down'],
		warningpatterns => ['500','302','502']
		#options => 'noprotocol'
	}
);

我们定义了一个标志web_monitor,检查的日志文件为/var/log/web_monitor.log,当日志信息中匹配ciriticalpattern中的内容时会报严重错误,当匹配warningcriticals中的内容时会报警告错误;状态信息和协议信息会写入到/usr/local/nagios/var/tmp中,如

log._var_log_web_monitor.log.web_monitor,其中web_monitor就是我们配置中的tag

[[email protected] tmp]# cat log._var_log_web_monitor.log.web_monitor
$state = {
           'runcount' => 17,
           'serviceoutput' => '',
           'logoffset' => 642985,
           'runtime' => 1431504819,
           'devino' => '64768:1178440',
           'privatestate' => {
                               'runcount' => 17,
                               'lastruntime' => 1431504220,
                               'logfile' => '/var/log/web_monitor.log'
                             },
           'logtime' => 1431504602,
           'servicestateid' => 0,
           'tag' => 'web_monitor'
         };

1;

被监控端的check_logfiles配置好了后,我们还需在nrpe.cfg中添加命令

command[check_logfile]=/usr/local/nagios/libexec/check_logfiles -f /usr/local/nagios/var/log.cfg

service xinetd reload

2.被监控端端我们再来看下监控端

define service{
    use                     nrpe-service         ; Name of service template to use
    host_name               test
    service_description     web_monitor
    check_command           check_nrpe!check_logfile
    check_interval          10
    notifications_enabled   1
    service_groups          logfile_check
    contact_groups          test
    }  

重启后,就可以看到我们的监控项了

至此,我们的日志监控讲完了,当然都是最基本的了,希望给大家带来帮助。

时间: 2024-10-19 09:53:57

nagios+check_logifile实现日志监控的相关文章

如何使用ARMS配置tengine的日志监控

来自 深圳市小亿网络有限公司 王昕岩 的撰稿 最近公司通过阿里云的业务实时监控服务 ARMS成功搭建了基于tengine的日志监控系统.这里简单分享一下使用[font=&quot]ARMS用于监控[font=&quot]tengine日志的经验.[font=&quot] 公司发展至今,现阶段所有接口都使用阿里的tengine作为web容器,类似nginx,在日志中也记录了包括host,url, ip, 包体大小,响应时长等信息.目前的业务需求场景是希望有一套系统来监控接口的异常,来

nagios维护之添加监控

一.nagios监控交换机 二.nagios监控windows 1.监控内容 a. 内存使用状况 b. CPU负载 c. 磁盘使用状况 d. 服务状态 e. 运行的进程 2.监控原理: 在windows服务器内安装NSClient++的监控引擎,nagios服务器通过check_nt来获取监控数据 3.配置: a.在被监控机(客户端)安装NSCP(NSClient++) 下载地址:http://www.nsclient.org/nscp/downloads   NSCP*.mis b.安装-->

zabbix之日志监控

一.日志item介绍 下面介绍zabbix另一个"重量级"的功能--日志文件监控,它最主要的是监控日志文件中有没有某个字符串的表达式,对应日志轮转与否,zabbix都支持. 在配置Item的时候,Type选择Zabbix agent (active),这里主要需要配置的是Key.下面是监控日志的两种key--log和logtr. log[/path/to/some/file,<regexp>,<encoding>,<maxlines>,<mod

SignalR实现实时日志监控

.net SignalR实现实时日志监控 摘要 昨天吃饭的时候,突然想起来一个好玩的事,如果能有个页面可以实时的监控网站或者其他类型的程序的日志,其实也不错.当然,网上也有很多成熟的类似的监控系统.就想着如果通过.net该如何实现?所以就在想,通过系统内部将消息推送到前端,.net中可以通过pull或者push的方式,pull通常的做法就是ajax方式不停的请求一个接口,这种方式,不太理想.然后就在想如何通过服务端想客户端推送消息.之前看到过SignalR方面的文章可以实现push的功能,sig

windows日志监控

bat脚本,主要作用,每个五分钟读取日文本件中新增内容,进行错误赛选,如果有错误信息,将错误信息用邮件发送给管理员. 其中awk和sed需要手动下载 :读取number.txt文档,获取上一次执行时文件的行数 for /f "delims=" %%f in (number.txt) do ( set a=%%f) :读取新增行,进行ERROR筛选,将赛选信息导入err文件中 D:\tools\awk\awk.exe '{print NR" "$0}' D:\unit

关于cacti和nagios两款开源监控软件的一些比较

cacti在监控方面有良好的绘图,在流量和图形塑造方面要强于nagios,但是在故障分析方面有些略逊,而且报警机制也有待完善,这时候nagios就可以排上用场了. nagios适合监视服务器上面的大批服务有没有正常运行,重点并不在于图形化的监控.但是其本身集成的报警功能是cacti本身很弱的或者说是没有的.但是在绘图方面和图形化塑造方面的精细度比不上cacti. 所以,虽然cacti和nagios都是网络监控软件,二选其一会减少很多不必要的麻烦,但是还是建议结合两者使用,取其优点,这样可以最大限

nagios借助check_hpasm插件监控惠普服务器硬件信息(未成)

nagios借助check_hpasm插件监控惠普服务器硬件信息: http://labs.consol.de/wp-content/uploads/2011/10/check_hpasm-4.3.tar.gz 被监控端: $ sudo tar zxfv check_hpasm-4.3.tar.gz $ cd check_hpasm $ ./configure --enable-hpacucli --enable-perfdata --enable-extendedinfo $ sudo mak

check_mk nagios 整合系统网络监控系统中文版

详细价格和服务请咨询 qq:30498675 详细参考资料  http://www.178yun.cn check_mk是一个开源整合的网络监控系统. 主要功能: 1.      能够对当今各种主流操作系统与设备进行监控 操作系统:windows,linux,aix,hp 网络交换设备:F5,cisco,h3c,Huawei 数据库:mssql,oracle,mysql Web server:apache,nginx 监控参数:cpu利用率.内存.虚拟内存.运行时长.端口流量.数据包错误率.电源

Zabbix监控之系统及应用日志监控报警

zabbbix还可以用于支持/不支持翻转的日志文件的集中监控与分析.比如系统日志/var/log/message /var/log/secure等.当一个日志文件包含特定的字符或者字符模式时,zabbix向用户发送报警信息. 1.选择 Configuration-templates-Template OS Linux模板,或者是自定义正在使用的模板,选择item-create item 有几个地方需要确认: type:一顶要选择zabbix agent active     ##中文就是主动模式