TG Telegram Group & Channel
ServerAdmin.ru | United States America (US)
Create: Update:

​​У меня в доме стоит электрокотёл с GSM модулем от компании Zont. Управлять устройством можно либо через личный кабинет на сайте zont-online.ru, либо через приложение. Я захотел всю статистику завести в Zabbix, чтобы удобно было смотреть. В перспективе выведу основные метрики на какой-нибудь экран в доме. Данный пример будет типовым для любого сбора метрик в Zabbix через API.

1️⃣ Согласно документации получаем Token для доступа к системе по API. Для этого через curl делаем запрос к сервису с указанием своей учётной записи:
curl 'https://zont-online.ru/api/get_authtoken' \
 -u 'login:password'              \
 -H 'X-ZONT-Client: your@email'        \
 -H 'Content-Type: application/json'      \
 -d '{"client_name": "Zabbix"}'
В самом начале ответа получите токен, который нужно будет использовать в запросах.

2️⃣ Получаем список устройств в личном кабинете. У меня оно одно:
curl 'https://zont-online.ru/api/devices' \
-H 'X-ZONT-Client: your@email' \
-H 'X-ZONT-Token: xxxxxxxxxxxxxxxxxxxx' \
-H 'Content-Type: application/json' \
-d '{"load_io": true}'
Убеждаемся, что всё работает, данные приходят верные. Рекомендую запрос сразу в jq отправить, чтобы было удобно смотреть.

3️⃣ Идём в Zabbix, создаём новый шаблон. Сразу добавляем в него 2 макроса: {$ZONT_CLIENT_EMAIL} и {$ZONT_TOKEN}. Далее добавляем новый айтем:
- тип: HTTP Agent
- тип информации: Журнал (лог)
- url: https://zont-online.ru/api/devices
- поля запроса: load_io ⇒ true
- тип запроса: POST
- заголовки: X-ZONT-Client ⇒ {$ZONT_CLIENT_EMAIL}
X-ZONT-Token ⇒ {$ZONT_TOKEN}
Остальные параметры по желанию.

4️⃣ Прикрепите новый шаблон к любому хосту (я обычно такие шаблоны к Zabbix Server цепляю) и проверьте работу этого айтема. Не забудьте прописать значения макросов. Если данные идут и формат у них json, то двигаемся дальше. Добавляем в шаблон новый зависимый айтем. Я его назвал Температура Бойлерная:
- тип: зависимый элемент данных, в качестве основного указываем предыдущий
- тип информации: числовой с плавающей точкой
Остальное по желанию. Идём в предобработку и добавляем 3 шага:
- JSONPath: $.body.devices[*].thermometers[*].last_value
- Обрезать слева: [
- Обрезать справа: ]
После такой обработки я получаю температуру с термодатчика в бойлерной. JSONPath рекомендую проверять в онлайн сервисе jsonpath.com. Там удобно это делать. В зависимости от строки json, правило у вас будет своё. Аналогично можно добавить все необходимые метрики.

Вот и всё. По такому принципу можно обработать любые данные, поступающие от API в формате json. Более подробно и наглядно я эту тему разбирал в отдельной статье на сайте.

#zabbix

​​У меня в доме стоит электрокотёл с GSM модулем от компании Zont. Управлять устройством можно либо через личный кабинет на сайте zont-online.ru, либо через приложение. Я захотел всю статистику завести в Zabbix, чтобы удобно было смотреть. В перспективе выведу основные метрики на какой-нибудь экран в доме. Данный пример будет типовым для любого сбора метрик в Zabbix через API.

1️⃣ Согласно документации получаем Token для доступа к системе по API. Для этого через curl делаем запрос к сервису с указанием своей учётной записи:
curl 'https://zont-online.ru/api/get_authtoken' \
 -u 'login:password'              \
 -H 'X-ZONT-Client: your@email'        \
 -H 'Content-Type: application/json'      \
 -d '{"client_name": "Zabbix"}'
В самом начале ответа получите токен, который нужно будет использовать в запросах.

2️⃣ Получаем список устройств в личном кабинете. У меня оно одно:
curl 'https://zont-online.ru/api/devices' \
-H 'X-ZONT-Client: your@email' \
-H 'X-ZONT-Token: xxxxxxxxxxxxxxxxxxxx' \
-H 'Content-Type: application/json' \
-d '{"load_io": true}'
Убеждаемся, что всё работает, данные приходят верные. Рекомендую запрос сразу в jq отправить, чтобы было удобно смотреть.

3️⃣ Идём в Zabbix, создаём новый шаблон. Сразу добавляем в него 2 макроса: {$ZONT_CLIENT_EMAIL} и {$ZONT_TOKEN}. Далее добавляем новый айтем:
- тип: HTTP Agent
- тип информации: Журнал (лог)
- url: https://zont-online.ru/api/devices
- поля запроса: load_io ⇒ true
- тип запроса: POST
- заголовки: X-ZONT-Client ⇒ {$ZONT_CLIENT_EMAIL}
X-ZONT-Token ⇒ {$ZONT_TOKEN}
Остальные параметры по желанию.

4️⃣ Прикрепите новый шаблон к любому хосту (я обычно такие шаблоны к Zabbix Server цепляю) и проверьте работу этого айтема. Не забудьте прописать значения макросов. Если данные идут и формат у них json, то двигаемся дальше. Добавляем в шаблон новый зависимый айтем. Я его назвал Температура Бойлерная:
- тип: зависимый элемент данных, в качестве основного указываем предыдущий
- тип информации: числовой с плавающей точкой
Остальное по желанию. Идём в предобработку и добавляем 3 шага:
- JSONPath: $.body.devices[*].thermometers[*].last_value
- Обрезать слева: [
- Обрезать справа: ]
После такой обработки я получаю температуру с термодатчика в бойлерной. JSONPath рекомендую проверять в онлайн сервисе jsonpath.com. Там удобно это делать. В зависимости от строки json, правило у вас будет своё. Аналогично можно добавить все необходимые метрики.

Вот и всё. По такому принципу можно обработать любые данные, поступающие от API в формате json. Более подробно и наглядно я эту тему разбирал в отдельной статье на сайте.

#zabbix
👍77👎5


>>Click here to continue<<

ServerAdmin.ru






Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)