日志监控的功能
Zabbix-Agent支持对日志文件的监控,可以对日志的关键字进行监控,然后告警。日志监控支持普通的日志文件,也支持日志轮询、切割的文件。当日志中出现特殊的字符串(列如,警告、报错等字符串)时,可以发送通知给用户。为了使日志监控能够正常使用,必须满足以下条件:
- Zabbix-Agent必须运行,且工作方式为主动模式
- 日志的Item必须设置,必须指定文件名
- Zabbix-Agent有读取日志权限,如日志位于/home/用户名/文件中,则会因为权限的问题而导致无法读取到文件
注意:zabbix日志监控必须工作于主动模式下,在web前端配置的主机名(宏为{HOST.HOST})必须和Zabbix-Agent端zabbix_agentd.conf中的Hostname值是一致的,并且这个Hostname值具有唯一性:否则,在主动模式下是无法正常采集到数据的。
日志监控的监控指标
log[/path/to/file/file_name,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>,<options>]
logrt[/path/to/file/reqexp_describing_filename_pattern,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>,<options>]
log.count[/path/to/file/file_name, <regexp>,<encoding>,<maxproclines>,<mode>,<maxdelay>,<options>]
logrt.count[/path/to/file/reqexp_describing_filename_pattern, <regexp>,<encoding>,<maxproclines>,<mode>,<maxdelay>,<options>]
参数 | 含义 |
file_name | 日志文件所在的路径或绝对路径文件名 |
regexp | 匹配的正则表达式 |
encoding | 在Linuxunix系统下默认编码为UTF-8,在windows系统下默认编码为ANSI |
maxlines | 每次给zabbix-server或zabbix-proxy发送的日志最大行数,此参数值会高于zabbix_agentd.conf中的MaxLinesPerSecond参数值。通过此参数,可以控制一次发送的日志数据条数,如发送过多,可能会对Zabbix-Agent的负载和I/O有强大影响 |
mode | All为默认参数,表示匹配所有的日志,包括以前存在的日志也会进行匹配 |
skip表示跳过已经存在的日志数据,只有新的日志才会进行匹配 | |
output | 表示匹配输出的正则表达式,1~9表示返回匹配的第几个字符串,表示返回匹配的全部字符串。Zabbix3.2版本以后支持 |
maxdelay | 以秒为单位的最大延迟,用于忽略老的日志数据,及时获取当前的日志数据。Zabbix4.0版本以后支持。当处理的日志过多,在更新周期内达到maxlines的发送上限,但还有日志无法发送时,会导致大量堆积,在严重情况下,会造成日志处理速度跟不上,这时使用此参数将忽略过期的日志发送 |
options | 日志轮询、切割的方式。从zabbix4.0版本开始支持 |
日志监控ltem的配置
添加一个日志监控Item
日志监控的权限问题
如果zabbix用户对日志没有读取权限,则会提示权限拒绝导致数据获取失败(将zabbix_agentd进程开启调试模式,就可以看到读取日志权限被拒绝)。来查看这个文件的权限,由于普通用户并没有读取权限,所以zabbix用户也无法读取到数据。
在这里,为了演示如何解决这个问题而改变文件的权限,使用如下命令:
[root@localhost log]# chown zabbix.root /var/log/secure
在最新数据中查看自定义log的Iten,可以看到所有获取到的数据

配置触发器
测试功能
将报警信息发送到企业微信群