使用zabbix LLD来对不确定目录下的日志监控
自动发现(LLD)
自动发现(LLD)提供了一种在计算机上为不同实体自动创建监控项,触发器和图形的方法。例如,Zabbix可以在你的机器上自动开始监控文件系统或网络接口,而无需为每个文件系统或网络接口手动创建监控项。并且可以配置定期执行自动发现,以此来移除一些不需要的监控项。
在Zabbix中,支持六种类型的发现项目:
- 系统文件的发现;
- 网络接口的发现;
- CPU和CPU内核的发现
- SNMP OID的发现
- 使用ODBC SQL查询的发现
- Windows服务的发现
创建发现规则
使用 system.run[] 执行一个脚本输出目录列表
![[title]](/2025/09/26/zabbix-lld/zabbix-1.png)
1 | system.run["cat /opt/log_dir_list.conf"] |
其中 /opt/log_dir_list.conf 文件内容每行是一个需要监控的目录路径:
1 | /opt/1panel/apps/qinglong/qinglong/data/log/6dylan6_jdpro_jd_dailysign_81 |
预处理
使用javascript预处理步骤将文件list转换成LLD格式
1 | var lld = []; |
![[title]](/2025/09/26/zabbix-lld/zabbix-2.png)
通过测试可以查看处理后的数据
![[title]](/2025/09/26/zabbix-lld/zabbix-3.png)
也可以通过shell创建自定义监控来将目录转换为LLD模式,通过创建自定义
1 | !/bin/bash |
zabbix_agentd.conf中创建自定义监控
1 | UserParameter=dir_list,/etc/zabbix/dir_discovery.sh |
在自动发现规则中添加相应的键值来获取文件信息。
创建监控项原型
监控项原型对自动发现的目录进行监控
![[title]](/2025/09/26/zabbix-lld/zabbix-5.png)
通过logrt对自动发现下的目录日志文件进行特定关键字的监控
1 | logrt["{#DIRPATH}/[0-9]{4}-[0-9]{2}-[0-9]{2}.*log","已失效|用户未登陆|获取TOKEN失败|JD_COOIKE|Response code 401",UTF-8,,skip] |
创建触发器原型
![[title]](/2025/09/26/zabbix-lld/zabbix-7.png)
添加nodata(2m)以用于自动恢复,当日志在输出特定信息告警后,两分钟日志无刷新日志将触发告警
1 | {100.112.176.58:logrt["{#DIRPATH}/[0-9]{4}-[0-9]{2}-[0-9]{2}.*log","已失效|用户未登陆|获取TOKEN失败|JD_COOIKE|Response code 401",UTF-8,,skip].strlen()}>0 and {100.112.176.58:logrt["{#DIRPATH}/[0-9]{4}-[0-9]{2}-[0-9]{2}.*log","已失效|用户未登陆|获取TOKEN失败|JD_COOIKE|Response code 401",UTF-8,,skip].nodata(2m)}=0 |
监控项原型和触发器原型根据自动发现规则发现的目录进行监控
![[title]](/2025/09/26/zabbix-lld/zabbix-8.png)