Я пытаюсь создать правило обнаружения, чтобы добавить монитор размера файла. Но когда я добавляю свой шаблон в Host, zabbix говорит мне:
Значение должно быть объектом JSON.
- Zabbix Agent (демон) v2.2.10 (ревизия 54806) (10 августа 2015 г.)
- Zabbix server v2.2.9 (ревизия 52686) (12 марта 2015 г.)
Написал python-скрипт:
import os
import sys
import json
logdir = sys.argv[1]
data = []
for (logdir, _, files) in os.walk(logdir):
for f in files:
if f.endswith(".log"):
path = os.path.join(logdir, f)
data.append({'#LOGFILEPATH':path})
jsondata = json.dumps(data)
print jsondata
Он отлично работает и получает следующее:
[{"#LOGFILEPATH": "/opt/logs/projects/cms/cms.log"}, {"#LOGFILEPATH": "/opt/logs/projects/books/nginx.log"}]
Я проверил его на jsonlint.com - действительный JSON.
UserParameter в conf.d:
UserParameter = discovery.logfile.path, python /opt/scripts/zabbix/find.logfile.path.and.size.py /opt/logs/
Есть вложения, показывающие мою конфигурацию обнаружения:
Пользователь zabbix имеет разрешение на доступ к каталогу со сценарием и журналами.