2015-10-21 1 views
0

Я пытаюсь сделать правило обнаружения, чтобы добавить монитор размера файла. Но когда я добавить свой шаблон хосту, Zabbix говорит мне:Zabbix Discovery Rule по специальному скрипту: нужны любые советы

Значение должно быть в формате JSON объект

  • Zabbix агент (демон) v2.2.10 (версия 54806) (10 августа 2015)
  • Zabbix сервер v2.2.9 (версия 52686) (12 марта 2015)

Я написал питон-скрипт:

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/ 

Есть вложения показать мою конфигурацию обнаружения:

enter image description here

enter image description here

Пользователь Zabbix имеет разрешение на директорию с скриптом и журналы.

+0

У меня такая же проблема, вы решить эту проблему? – JJJ

+0

Да, моя проблема была в том, что я пропустил скобки {} Не стесняйтесь описать свою проблему здесь, если мой совет вам не поможет –

+0

спасибо за ваш ответ – JJJ

ответ

0

Он должен сделать массив значением с ключом «данных».

print json.dumps({"data": data}) 

поэтому производит ...

{ "data": [{"#LOGFILEPATH": "/opt/logs/projects/cms/cms.log"}, {"#LOGFILEPATH": "/opt/logs/projects/books/nginx.log"}] } 

И макрос {#LOGFILEPATH} должно быть в скобках {}