目录
一、zabbix日志监控的功能
Zabbix-agent支持对日志文件的监控,可以对日志对的关键字进行监控,然后告警。日志监控支持普通的日志文件,也支持日志轮询、切割的文件。当日志中出现特殊的字符串(例如,警告、报错等字符串)时,可以发送通知给用户。
二、zabbix监控日志的条件
为了使日志监控能够正常使用,必须满足以下条件:
- Zabbix-agent必须运行,且工作方式为主动模式。
- 日志的Item必须设置,必须指定文件名。
- Zabbix-agent有读取日志的权限,否则报错permission denied。
三、日志监控的监控指标
log[/path/to/file/file_name,<regexp>,<encoding>,<maxlines>, <mode> ,<output>,<maxdelay>, <options>]
logrt[/path/to/file/regexp_describing_filename_pattern,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>,<options>]
log.count[/path/to/file/filename,<regexp>,<encoding>,<maxproclines>,<mode>,<maxdelay>,<options>]
logrt.count[/path/to/file/regexp_describing_filename_pattern,<regexp>,<encoding>,<maxproclines>,<mode>,<maxdelay>,<options>]
参数含义
参数 | 含义 |
filename | 日志文件所在的路径或绝对路径文件名 |
regexp | 匹配的正则表达式 |
encoding | 在Linux/UNIX 系统下默认编码为 UTF-8,在 Windows 系统下默认编码为 ANSI |
maxlines | 每次给 Zabbix-Server 或 Zabbix-Proxy 发送的日志最大行数,此参数值会高于 zabbix_agentd.conf 中的 MaxLinesPerSecond 参数值。通过此参数,可以控制一次发送的日志数据条数,如发送过多,可能会对Zabbix-Agent的负载和I/O有强大影响 |
mode | all为默认参数,表示匹配所有的日志,包括以前存在的日志也会进行匹配 |
skip表示跳过已经存在的日志数据,只有新的日志才会进行匹配 | |
output | 表示匹配输出的正则表达式,\1~\9表示返回匹配的第几个字符串,0表示返回匹配的全部字符串。Zabbix 3.2版本以后支持 |
maxdelay | 以秒为单位的最大延迟,用于忽略老的日志数据,及时获取当前的日志数据。Zabbix4.0版本以后支持。当处理的日志过多,在更新周期内达到maxlines的发送上限,但还有日志无法发送时,会导致大量堆积,在严重情况下,会造成日志处理速度跟不上,这时使用此参数将忽略过期的日志发送 输入的数值类型可以是浮点数(float) 0是默认值,永远不会忽略日志文件行 >0.0 ,忽略较旧的行,以获得在 maxdelay 秒内分析的最新行,会丢弃在规定时间内无法发送的数据 |
options | 日志轮询、切割的方式。从Zabbix 4.0版本开始支持 rotate,日志轮询、切割,默认值 copytruncate,先拷贝文件,然后清空日志的轮询方式。请注意,copytruncate 不能与maxdelay一起使用,如使用此参数,maxdelay必须为0或未指定 |
四、日志监控Item的配置案例
以监控访问zabbix的http网页的来源IP为例,监控http的access_log日志,需要在zabbix中创建一个item,具体配置如下:
在zabbix的Web界面中,点击左侧菜单栏的“配置”选项;
在“主机”选项卡中选择要监控的目标主机;
点击主机名称进入主机配置页面;
在页面选择“Items”选项卡;
点击“创建监控项”按钮;
在“名称”字段中填写一个描述性的名称,如“zabbix_http_access_log_monitor”;
在“键值”字段中填写以下内容:log[/var/log/httpd/access_log,"(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})",,,skip,\1],正则表达式部分用于提取IP地址;
点击“添加”按钮保存配置。
完成以上配置后,zabbix将会定期读取access_log文件,并提取其中的IP地址。可以在zabbix的Web界面中查看该item的监控数据,并设置相应的告警规则。需要注意的是,为了避免监控数据过于频繁,可以适当增加读取access_log文件的时间间隔。
效果如下: