需求1
log 里面“[2021:03:22 14:4666:49]:发生错误数:0! ” ,截取关键字,如果不是0就报警
实现1
1 实现日志关键字报警
创建模板
创建应用集
创建监控项
log[/etc/zabbix/zabbix_agentd.log,"root",,,skip,,]
选择如图
各个指标含义请参考
https://www.zabbix.com/documentation/3.4/zh/manual/config/items/itemtypes/zabbix_agent#supported_item_keys
创建触发器
{test yejilog errors num check:log[/etc/zabbix/zabbix_agentd.log,"root",,,skip,,].iregexp()}=1
将模板添加到机器中就可以报警
最新数据
2 做判断,大于0报警
修改监控项键值
log[/data/tools-yeji/logs/yeji.log,"发生错误数:([1-9]+)",,,skip,,]
"发生错误数:([1-9]+)" // 正则
skip表示忽略日志中之前的报警
将模板添加到机器中就可以报警
3 注意事项
1>agent为主动模式
2>监控的log日志的权限以及上层目录是否为755权限
chown zabbix.root /data/tools-yeji/logs/yeji.log
需求2
配置tomcat日志监控,有关键字“ERROR”会报警
实现2
1 配置主动模式
2 查看log文件zabbix是否有权限
使用添加zabbix权限
setfacl -m u:zabbix:r /usr/local/tomcat1/logs/catalina-daemon.out
查看zabbix是否有权限
sudo -u zabbix cat /usr/local/tomcat1/logs/catalina-daemon.out|more
getfacl /usr/local/tomcat1/logs/catalina-daemon.out
3 更新hostname,修改zabbix配置文件|zabbix web配置中hostname和主机hostname一致,如果不一致会出现下面无法识别主机名的情况,记得重启zabbix-agent
服务器:*UNKNOWN*发生: *UNKNOWN* tomcat1_log发生错误故障!
{
告警主机:*UNKNOWN*
告警地址:*UNKNOWN*
监控项目:*UNKNOWN*
监控取值:*UNKNOWN*
告警等级:Average
当前状态:PROBLEM
告警信息:*UNKNOWN* tomcat1_log发生错误
告警时间:2021.09.07 15:01:32
事件ID:131257
}
4 创建相应模板,最好一个日志创建一个模板
5 监控项配置
log[/usr/local/tomcat1/logs/err.log,"Exception",,,skip,,]
监控项选择log即可,刚开始选择logrt发现命名监控的是/usr/local/tomcat1/logs/error.log但是真正去监控的居然是/usr/local/tomcat1/logs/error.log-20210908这种轮转文件,后来更换log没有问题
6 触发器配置
{tomcat1 log error:log[/usr/local/tomcat1/logs/catalina-daemon.out,"Exception",,,skip,,].nodata(2m)}=0
nodata代表如果有Exception关键字就保健,如果2min之内没有这个关键字就恢复,只有一条就可以实现报警和恢复两个功能,当然你也可以更改2min这个时间
7 添加报警
8 问题:
配置setfacl可能会出现
setfacl -m u:zabbix:r manager.2020-11-11.log
setfacl: manager.2020-11-11.log: Operation not supported
是因为日志所在目录挂载点没有acl挂载
vim /etc/fstab
/dev/VolGroup/lv_svn /svn ext4 defaults,acl 0 0
需要重新挂载目录
需要关注:
1 不是所有的关键字都会报出来,如果一个时间段有多个报错只会报一个,目前是2min,2min不会再报,下一个2min再报,虽然触发器不会被触发但是日志中会被记录,最新记录->历史记录
2 如果获取不到数据重启zabbix-agent
3 日志轮转的话不会有影响,不会因为日志轮转日志权限发生变化
4 目前报警发送只能实现发送关键字当条日志,想实现发送关键字上下文多少条,就合grep -C10这种,但是没找到方法???
5 当条error报错日志大的话发送的报警可能不完整??
参考:
https://cloud.tencent.com/developer/article/1860374
https://www.jianshu.com/p/e28c0f295404