1、为何要监控日志?数据库
Linux为了跟踪和监视系统(内核)自己各个组件及应用程序运行状态而将产生的相关事件存储在日志文件中,当系统或者应用程序出现问题时,系统管理员能根据日志快速定位到问题。而经过实时监控Linux日志文件,系统管理员不只能够及时掌控到服务器错误消息以及其它应用程序的详细信息。还能够监控到系统安全性,如非法登陆等事件。安全
2、哪些日志须要被监控?服务器
一、/var/log/messages,对应Debian或Ubuntu日志文件为/var/log/syslog。该日志文件用于记录系统启动期间的产生的日志、应用程序相关的错误日志。并发
/var/log/messages须要监控的关键字以下:ssh
Crit、crit、Warn、warn、Error、error、err、failed、segfault等ide
二、/var/log/secure,对应Debian或Ubuntu日志文件为/var/log/auth.log。该日志文件用于记录服务器中全部与用户身份验证相关的事件,如用户sudo/ssh登陆信息、暴力***等未经受权的信息。post
/var/log/secure须要监控的关键字以下:spa
Failed、failed、Error、err等。3d
三、/var/log/boot.log,该日志用于记录系统启动时的相关信息,包括应用程序开机自启动。另外,非正常关机、意外重启或引导失败等相关问题均会被记录。日志
/var/log/boot.log须要监控的关键字以下:
WARNING、FATAL、ERROR、Failed等。
四、/var/log/dmesg,该日志记录了硬件设备以及驱动程序相关信息,当内核在引导过程当中检测到硬件错误时会在该文件中记录相关信息。
/var/log/dmesg须要监控的关键字以下:
Failed、failed、Error、err等。
另外还能够监控系统相关应用日志,包括/var/log/cron、/var/log/yum.log、/var/log/maillog或者用户自定义的日志文件等。
3、如何使用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用户有读取权限,可执行以下命令。
/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",专门用于系统日志监控。
而后,再建立一个名为"Template System Logs"的Applications
最后再建立items,建立items注意事项以下图所示。
建立触发器
添加到主机
最后模拟登陆失败(输错密码便可),触发告警,以下图所示。
使用Grafana展现以下图所示。
同理,其余应用日志监控都可以使用上述方法,但日志保留周期不要太长,尤为是错误日志较多状况下。若无特殊要求,保留1-2周便可。
总结:Zabbix Agent每次从上次中止的点开始继续读取日志文件。当Agent刚刚启动或已收到之前被禁用或不支持的监控项的状况下,已经分析的字节数(大小计数器)和最后修改时间(时间计数器)存储在Zabbix数据库中并发送到Agent,以确保Agent今后位置开始读取日志文件。可是,若是Agent从服务器接受非零大小的计数器, 而logrt[] 和 logrt.count[] 监控项没有找到,也没找到匹配的文件,若文件稍后出现,大小计数器将重置为0,将从头开始分析。另外,当日志文件大小小于计数器中的数字时(日志发生了滚动),计数器会变为0,Agent将从头开始分析文件。