自动发现脚本
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# 此脚本文件用于获取需要监控的日志文件的绝对路径
import os
import json
def collect_log(path):
logfiles = []
direc_list = os.listdir(path)
for direc in direc_list:
filepath = os.path.join(path, direc)
if os.path.isdir(filepath):
file = filepath + '/error.log'
logfiles.append((file, direc))
return logfiles
def main():
current_logfiles = collect_log('/data/logs/')
a = {"data": []}
for filename in current_logfiles:
b = dict()
b["{#FILELOG}"] = filename[0]
b["{#FILENAME}"] = filename[1]
a["data"].append(b)
print(json.dumps(a))
if __name__ == '__main__':
main()
该脚本用于获取每个服务器所需路径下的所有日志文件的绝对路径,脚本执行打印的示例如下:
$ ./log.py
{"data": [{"{#FILENAME}": "8123", "{#FILELOG}": "/data/logs/8123/error.log"}, {"{#FILENAME}": "8323", "{#FILELOG}": "/data/logs/8323/error.log"}, {"{#FILENAME}": "8423", "{#FILELOG}": "/data/logs/8423/error.log"}, {"{#FILENAME}": "8223", "{#FILELOG}": "/data/logs/8223/error.log"}]}
打印的格式是是 zabbix 要求的。其中 {#FILELOG} 这个是日志文件的绝对路径,{#FILENAME} 为该日志文件的名字
zabbix agent 配置
$ cat /usr/local/etc/zabbix_agentd/log.conf
UserParameter=log.discovery,/usr/local/scripts/log.py # log.discovery 为 zabbix 页面中设置自定义发现规则的键值
zabbix web 页面配置
创建模板及自动发现规则
创建一个自动发现 log 的日志目录:Template Socket error log 模板里创建一个应用集:Log 创建自动发现规则
配置自动发现的监控项
配置自动发现的触发器
应用自动发现的模板到主机上
将创建好的模版应用到主机上,可以看到会自动发现监控项:
参考链接:https://blog.csdn.net/qq_36357820/article/details/102895410