zabbix监控日志文件实践


1. 监控目的

使用zabbix监控日志文件的功能,及时发现nginx、mysql、syslog、keepalived的异常信息,并及时触发告警。

2. 配置步骤

4.1 日志文件权限配置

因为zabbix_agentd在运行时,一般场景我们都是指定其以zabbix这一身份在运行,但各应用系统的日志文件,zabbix不一定有权限读取,所以需要先给相应的日志文件设置zabbix可读,可以通过setfacl来实现。相关操作如下。

[root@monitor-server2 logs]# ll /usr/local/mysql/data/monitor-server2.err
-rw-r-----. 1 mysql root     40820 May  2 10:55 monitor-server2.err   
#默认zabbix对mysql日志文件没有任何权限  
[root@monitor-server2 logs]# setfacl -m u:zabbix:r /usr/local/mysql/data/monitor-server2.err    
 #设置zabbix对mysql的err日志有读权限  
[root@monitor-server2 logs]# ll /usr/local/mysql/data/monitor-server2.err 
-rw-r-----+ 1 mysql root 40820 May  2 10:55 /usr/local/mysql/data/monitor-server2.err   
 #加号表示此文件设置了facl
[root@monitor-server2 logs]# ll /usr/local/nginx/logs/error.log 
-rw-r--r--. 1 nginx nginx 153341 May  1 15:38 /usr/local/nginx/logs/error.log
#默认情况下nginx的error日志,zabbix对其有读取权限
[root@monitor-server2 logs]# setfacl -m u:zabbix:r /var/log/messages
 #设置zabbix对/var/log/messages文件可读  

4.2 配置监控log文件的item

  • 配置监控模板
    为配置简便起见,我这里针对不同应用程序的日志文件分别创建不同的Template,然后根据被监控主机的业务类型来进行模板的调用。这种方式比较适用于相对规范的网络环境,至少同一类型的业务系统它们的日志文件路径一致。下面是相应的操作步骤。
zabbix监控日志文件实践_第1张图片
分别针对不同的日志文件定义模板
zabbix监控日志文件实践_第2张图片
模板中item的配置-1
针对多实例的keepalived定义了不同的item

zabbix监控日志文件实践_第3张图片
模板中item的配置-3

针对监控到的日志信息可以设置trigger,在发现异常日志信息时触发告警通知。
如下为当监控到keepalived vrrp状态改变时的trigger配置:

根据监控到的item值设定相应的trigger

其它日志文件对应的trigger配置方法类似,不再赘述。

  • 调用监控模板
    给监控日志文件使用的模板定义完成后,针对不同的主机调用相应的模板即可。
调用的监控模板
  • 验证trigger
    我选择keepalived日志监控进行验证,为了使监控较全面一些,我增加了一定程度上能够监控到keepalived服务的Starting或者Stopping的item,并配置了对应的trigger。如下所示:
zabbix监控日志文件实践_第4张图片
在keepalived log模板中增加了监控keepalived启动或停止的item

然后停掉server2的Keepalived服务,观察Problems的输出:

server2 keepalived服务停掉状态发生改变,同时server1的VI_2状态也发生改变

下图是文中涉及到的日志的一个整体的监控效果,取的是Latest data

zabbix监控日志文件实践_第5张图片
日志监控Latest data查询结果

5. 总结

使用zabbix监控日志文件配置要点:

  • 确保zabbix对相应的日志文件有读的权限。
  • 准确使用log或者logrt并结合正则表达式匹配到相应的信息。
  • 灵活过滤出关键信息,以便于配置trigger,如只取keepalive的state关键字段,便于比较前后的状态是否一致,从而判断keepalived vrrp状态是否改变。
  • zabbix agent对新加入监控的日志会读取所有内容,监控上以后只会读取日志的更新内容。
  • 将zabbix自己的日志监控上,非常有帮助。
  • 针对各应用需要监控的日志按需添加,如监控nginx的access.log,当出现50x之类的错误时,及时告警等。

你可能感兴趣的:(zabbix监控日志文件实践)