运维开发网

使用Zabbix来监控系统日志

运维开发网 https://www.qedev.com 2020-05-13 13:59 出处:51CTO 作者:唐光辉
一、为什么要监控日志?Linux为了跟踪和监视系统(内核)本身各个组件及应用程序运行状态而将产生的相关事件存储在日志文件中,当系统或者应用程序出现问题时,系统管理员能根据日志快速定位到问题。而通过实时监控Linux日志文件,系统管理员不仅可以及时掌控到服务器错误消息以及其它应用程序的详细信息。还可以监控到系统安全性,如非法登录等事件。二、哪些日志需要被监控?1、/var/log/messages,

一、为什么要监控日志?

Linux为了跟踪和监视系统(内核)本身各个组件及应用程序运行状态而将产生的相关事件存储在日志文件中,当系统或者应用程序出现问题时,系统管理员能根据日志快速定位到问题。而通过实时监控Linux日志文件,系统管理员不仅可以及时掌控到服务器错误消息以及其它应用程序的详细信息。还可以监控到系统安全性,如非法登录等事件。

二、哪些日志需要被监控?

1、/var/log/messages,对应Debian或Ubuntu日志文件为/var/log/syslog。该日志文件用于记录系统启动期间的产生的日志、应用程序相关的错误日志。

/var/log/messages需要监控的关键字如下:

Crit、crit、Warn、warn、Error、error、err、failed、segfault等

2、/var/log/secure,对应Debian或Ubuntu日志文件为/var/log/auth.log。该日志文件用于记录服务器中所有与用户身份验证相关的事件,如用户sudo/ssh登录信息、暴力***等未经授权的信息。

/var/log/secure需要监控的关键字如下:

Failed、failed、Error、err等。

3、/var/log/boot.log,该日志用于记录系统启动时的相关信息,包括应用程序开机自启动。另外,非正常关机、意外重启或引导失败等相关问题均会被记录。

/var/log/boot.log需要监控的关键字如下:

WARNING、FATAL、ERROR、Failed等。

4、/var/log/dmesg,该日志记录了硬件设备以及驱动程序相关信息,当内核在引导过程中检测到硬件错误时会在该文件中记录相关信息。

/var/log/dmesg需要监控的关键字如下:

Failed、failed、Error、err等。

另外还可以监控系统相关应用日志,包括/var/log/cron、/var/log/yum.log、/var/log/maillog或者用户自定义的日志文件等。

三、如何使用Zabbix监控日志关键字?

我们需要用到Zabbix监控日志的两种Key,log和logtr。

在配置log和logtr类型的Item时,item的Type一定要选择Zabbix agent (active),即主动模式,因此所有Zabbix的Agent端zabbix_agentd.conf中需要配置ServerActive指向Zabbix Server。另外,zabbix用户需要有被监控的日志文件读取权限,否则item添加后会报unsupported。

① 确保Zabbix Agent配置了ServerActive,如下图所示。

使用Zabbix来监控系统日志

② 确保要监控的日志zabbix用户有读取权限,可执行如下命令。

/usr/bin/setfacl -m u:zabbix:r-- /var/log/secure

/usr/bin/setfacl -m u:zabbix:r-- /var/log/messages

/usr/bin/setfacl -m u:zabbix:r-- /var/log/boot.log

/usr/bin/setfacl -m u:zabbix:r-- /var/log/dmesg

③ 通过修改/etc/logrotate.d/syslog,确保日志滚动后仍然可被zabbix用户读取。  

# cat /etc/logrotate.d/syslog  

/var/log/cron

/var/log/maillog

/var/log/messages

/var/log/secure

/var/log/spooler

/var/log/dmesg

/var/log/boot.log

{

  missingok

  sharedscripts

  postrotate

      /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true

      /usr/bin/setfacl -m u:zabbix:r-- /var/log/secure

      /usr/bin/setfacl -m u:zabbix:r-- /var/log/messages

      /usr/bin/setfacl -m u:zabbix:r-- /var/log/boot.log

      /usr/bin/setfacl -m u:zabbix:r-- /var/log/dmesg

  endscript

}

④ 使用log[]或者logrt[]添加items。

log[file,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>,<options>]

logrt[file_regexp,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>,<options>]

详细可参考官档中文说明(https://www.zabbix.com/documentation/4.0/zh/manual/config/items/itemtypes/log_items)

创建item前,我们先创建一个模板如"Template System Logs",专门用于系统日志监控。

使用Zabbix来监控系统日志

然后,再创建一个名为"Template System Logs"的Applications

使用Zabbix来监控系统日志

最后再创建items,创建items注意事项如下图所示。

使用Zabbix来监控系统日志

创建触发器

使用Zabbix来监控系统日志

添加到主机

使用Zabbix来监控系统日志

最后模拟登录失败(输错密码即可),触发告警,如下图所示。

使用Zabbix来监控系统日志

使用Grafana展示如下图所示。

使用Zabbix来监控系统日志

同理,其他应用日志监控均可以使用上述方法,但日志保留周期不要太长,尤其是错误日志较多情况下。若无特殊要求,保留1-2周即可。

总结:Zabbix Agent每次从上次停止的点开始继续读取日志文件。当Agent刚刚启动或已收到以前被禁用或不支持的监控项的情况下,已经分析的字节数(大小计数器)和最后修改时间(时间计数器)存储在Zabbix数据库中并发送到Agent,以确保Agent从此位置开始读取日志文件。但是,如果Agent从服务器接受非零大小的计数器, 而logrt[] 和 logrt.count[] 监控项没有找到,也没找到匹配的文件,若文件稍后出现,大小计数器将重置为0,将从头开始分析。另外,当日志文件大小小于计数器中的数字时(日志发生了滚动),计数器会变为0,Agent将从头开始分析文件。

0

精彩评论

暂无评论...
验证码 换一张
取 消