Правило обнаружения Zabbix с помощью специального скрипта: нужны любые советы

Я пытаюсь создать правило обнаружения, чтобы добавить монитор размера файла. Но когда я добавляю свой шаблон в 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 имеет разрешение на доступ к каталогу со сценарием и журналами.


person Yaroslav Pozdnyakov    schedule 21.10.2015    source источник
comment
у меня такая же проблема, вы решаете эту проблему?   -  person Elham_Jahani    schedule 24.05.2017
comment
Да, моя проблема заключалась в том, что я пропустил скобки {} Если мой совет вам не поможет, опишите здесь свою проблему.   -  person Yaroslav Pozdnyakov    schedule 25.05.2017
comment
Спасибо за ваш ответ   -  person Elham_Jahani    schedule 27.05.2017


Ответы (1)


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

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

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

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

Макрос {#LOGFILEPATH} должен быть в скобках {}.

person Yaroslav Pozdnyakov    schedule 23.10.2015