TGViewer
ServerAdmin.ru ServerAdmin.ru @srv_admin · 32.6K subscribers
Post #1905 7.45K
​​У меня в доме стоит электрокотёл с 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
More from @srv_admin
  1. Sep 25, 2026▶️ Очередная подборка авторских IT роликов, которые я лично посмотрел и посчитал интересны…
  2. Sep 25, 2026Девопсы, сисадмины, архитекторы, техлиды (и вообще все, кто принимает технические или бизн…
  3. Sep 25, 2026Подписчик поделился полезным проектом - Webtop. Это Linux дистрибутив с графикой, упакован…
  4. Sep 24, 2026Траблшутинг - мастхэв компетенция для инженера В Rebrain траблшутинги проводят уже несколь…
  5. Sep 23, 2026Очередная подборка статей авторов, которые согласились в ней участвовать. Кто не понимает,…
  6. Sep 23, 2026Контейнеры в одном инструменте, виртуалки — в другом, частное облако — вообще отдельная ис…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →