一.简介
监控日志也是zabbix的一个很好的功能。像redis集群崩溃,会重组,但端口不会出问题,这就导致监控端口不会发现redis已经出现问题。
结构:
监控项筛选固定的内容进行记录,触发器对内容再次筛选或匹配,符合后进行告警
环境:
zabbix-3.4.2
二.操作
1.在客户端搭建一个httpd服务器
yum -y install httpd
systemctl start httpd
2.让zabbix客户端有权限查看,具体权限看情况设置
chmod -R 777 /var/log/httpd/
3.自定义一个监控项,基于主机的
#被动模式不行
类型:主动式
#log[文件位置,筛选内容]
键值:log[/var/log/httpd/access_log,/admin.html]
#日志格式
信息类型:日志
#y表示年,M表示月,d表示日,p和:表示占位符,h表示小时,m表示分钟,s表示秒。
日志时间格式:yyMMddphh:mm:ss
4.浏览器访问http://1.1.1.1/admin.htmlx
5.检测 -> 最新数据 -> 异常访问admin
6.触发器规则,我这里设置200报警,其实可以设置200正常,其它报警,规则可以再看看。
7.访问http://1.1.1.1/admin.htmlx ,过一会再访问http://1.1.1.1/admin.html ,看是否触发器会有提示
8.再访问正确地址,会发现报警取消了。
三.其它说明
key
首先要了解key
log[ file ,<regexp>,<encoding>,<maxlines>,<mode>,<output>]
file:文件名,写绝对路径
regexp:要匹配内容的正则表达式,或者直接写你要检索的内容也可以,例如我想检索带ERROR关键词的记录
encoding:编码相关,留空即可
maxlines:一次性最多提交多少行,这个参数覆盖配置文件
zabbxi_agentd.conf中的’MaxLinesPerSecond’,我们也可以留空
mode:默认是all,也可以是skip,skip会跳过老数据
output:输出给zabbix server的数据。可以是\1、\2一直\9,\1表示第一个正则表达式匹配出得内容,\2表示第二个正则表达式匹配错的内容。
logrt
logrt的file可以用正则表达式,防止日志切割。例如access_*.log
logrt[ file ,<regexp>,<encoding>,<maxlines>,<mode>,<output>]
注意说明
- zabbix server和zabbix agent 会追踪日志文件的大小和最后修改时间,并且分别记录到字节计数器和最新时间计数器中
- agent会从上次读取日志的地方开始读取日志
- 字节计数器和最新时间计数器的数据会被记录在zabbix数据库,并且发送给agent,这样能够保证agent从上次停止的地方开始读取
- 当日志文件大小小于字节计数器的数字时,字节计数器会变成0,从头开始读取文件,用于日志切割
- 所有符合配置的文件,都会被监控
- 一个目录下的多个文件如果修改时间相同,会按照字母顺序来读取
- 到每个update interval的时间时,agent会检查一次目录下的文件
- zabbix-agent每秒发送的日志数据,有一个日志行数的上限,这是为了防止网络和cpu负载过高,这个数字是zabbix_agent.conf中的MaxLinesPerSecond。
- 发送的日志量最多是agent设置的buffer size的50%,就算只有日志类监控(即没有其它类型的item),也是只有50%。同时,由于有maxlines,故需要将zabbix_agent.conf中的BufferSize设置为maxlines的2倍
- 当anget没有log类型的监控的时候,所有BufferSize都会为其它类型item服务。如果这时新建了日志文件类型的监控,会将BufferSize中最老的50%数据清空给日志文件item使用。
- 在logrt中,正在表达式只对文件名有效,对文件目录无效。