Всем добрый день!
В мой сборке использую zabbix 5.4 установленный на ubunty 20.04.
Столкнулся с не типовой для себя задачкой:
В предприятие где работаю уже много лет эксплуатируется радиопередатчик, и как неожиданно, но сейчас стало его мониторить (привязать к системе zabbix).
Связал с производителем и выяснилось, что единственное средство которое можно использовать для просмотра текущих параметров это его (радиопередатчика) вэб интерфейс.
Сам вэб интерфейс не хитрый.
Взяв в руки python и пару добрых русских слов получилось выдавить из него все что хотел.
В настоящие время из консоли с помощью команды python3 main.py получаю:
{
"error":0,
"KanalA":0,
"KanalB":1,
"Distanal":1,
"Kontrol":0,
"Mohnosti100":1,
"VKLRH":0,
"MSK":1,
"Ia":0.0,
"Nastroika":0,
"KSVN":7.77,
"AVTOSOGLAS":0,
"BAR":62,
"StabilizaTokaAnten":3,
"Fiz":518.0,
"OgrMosh":3,
"PF":0,
"Pr":0,
"Alarm":0,
"Uout":0,
"Predupr":0,
"TemperPer":+23.5,
"TemperPerAs":+16.5
}
После испытанного счастья, что все получилось и быстро, осознал что я не представляю как запихнуть эту красоту в zabbix.
Подскажите пожалуйста как правильно создать узел и раскидать элементы данных.
@levka надо немного доработать парсер, чтобы на выходе был нормальный json. Сейчас это не так. Если удастся строку превратить в json, то дальше добавить всё в Zabbix очень просто. На ту машину, где работает парсер, надо установить Zabbix Agent и через такую настройку как UserParameter передавать данные на Zabbix Server. А на нём сделать один айтем, который будет принимать полностью этот json, а далее зависимые айтемы, у которых в предобработке с помощью jsonpath будут вычленяться отдельные значения.
@zerox Большое спасибо за совет, но к сожалению я опять уперся в стену.
1) Переделал парсер, к питону подключил библиотеку import json и дополнил код:
with open('sw_templates.json', 'w') as f:
json.dump(json_str, f)
with open('sw_templates.json') as f:
print(f.read())
2) Далее установил агента 2 аналогичной версии сервера на Windos машину. Поверил, заббикс забирает данные по типовым ключам.
3) Добавил строчку в файл "zabbix_agent2.conf":
UserParameter=peredatchik.data,c:\zabbix\peredatchikdata.bat
4) Батник запускает мой парсер и по выходу создает sw_templates.json с содержимым:
"{ \"error\":0\" KanalA\":0, \"KanalB\":1, \"Distanal\":1, \"Kontrol\":0, \"Mohnosti100\":1, \"VKLRH\":0, \"MSK\":1, \"Ia\":0.0, \"Nastroika\":0, \"KSVN\":7.77, \"AVTOSOGLAS\":0, \"BAR\":62, \"StabilizaTokaAnten\":3, \"Fiz\":518.0, \"OgrMosh\":3, \"PF\":0, \"Pr\":0, \"Alarm\":0, \"Uout\":0, \"Predupr\":0, \"TemperPer\":+23.5, \"TemperPerAs\":+10.5}"
5) Создаю новый элемент данных:
Тип: Zabbix агент
Ключ: peredatchik.data
Но к сожалению на выходе получаю закорючки ???⥬? ?? 㤠???? ???? 㪠????? ????.
Подскажите пожалуйста где я ошибся?
@levka тут я не знаю, что советовать. Подобная проблема это вопрос кодировок. Когда используется Windows, такая проблема часто возникает. Надо везде использовать кодировку utf8.
Я только один момент не понял. Батник создаёт текстовый файл sw_templates.json, а в Zabbix как данные попадают? Для того, чтобы вот эта настройка корректно работала:
UserParameter=peredatchik.data,c:\zabbix\peredatchikdata.bat
Необходимо, чтобы скрипт данные прямо в консоль выводил, тогда их сервер будет забирать.
Если с кодировками совсем никак не получится справиться, попробуйте обходной манёвр. Пусть скрипт создаёт текстовый файл и копирует его на Zabbix Server каким-либо способом. А на сервере уже читать его и передавать в сервер мониторинга. Получается костыльно, но как вариант, если по-другому совсем не получится.
chcp 65001 в начало bat-ника попробуйте поставить