Обработка json данных в Zabbix 3.4

Аватара пользователя
amilenessa
Сообщения: 10
Зарегистрирован: 15 ноя 2017, 17:33

Обработка json данных в Zabbix 3.4

16 ноя 2017, 23:00

Необходимо обрабатывать метрики, передаваемые из хоста по http протоколу в формате JSON. Например есть URL http://10.0.#.#:8081/metrics/:

Код: Выделить всё

{"memory": 198286984,
 "max_queue_length": 0,
 "connections": 1000,
 "bad_packets_counter": 26127,
 "bad_packets_counter_per_minute": 0,
 "bytes_received": 187695,
 "bytes_sent": 114262,
 "buffer_counter": 11,
 "kafka_failures_per_minute": 0,
 "kafka_failures_per_day": 0,
 "kafka_records_with_server_utc": 0}
 
Каким образом можно загрузить эти данные в zabbix, чтобы можно было построить графики по выбранному параметру и создать триггеры?

Аватара пользователя
constan.costia
Сообщения: 16
Зарегистрирован: 15 ноя 2017, 16:49

Re: Обработка json данных в Zabbix 3.4

16 ноя 2017, 23:02

Если на узле стоит zabbix-agent, то через UserParameter в zabbix- agentd.conf

На агенте что-то вроде:

Код: Выделить всё

UserParameter=metric.[*],/path/to/script $1
script - дербанит JSON и забирает оттуда нужный параметр

На сервере создаете значение, для соответствуещего узла сети: Тип - zabbix agent (active); Key - metric.memory и так для каждого параметра.

Второй вариант, если нет возможности ставить агента на целевом узле, сдел замутить скрипт который дербанит JSON и пихучить параметры в zabbix, по одному, с помощью zabbix_sender. Для узла должны быть созданы соответствующие значения.

Извиняюсь, не обратил внимания на версию. Для 3.4 смотрите тут и тут

По сути нужно настроить только свой шаблон в препроцессинге, который будет выдергивать данные из JSON. На discovery можно не обращать внимания

Если будут трудности уже в процессе настройки,пишите! Удачи!

Аватара пользователя
amilenessa
Сообщения: 10
Зарегистрирован: 15 ноя 2017, 17:33

Re: Обработка json данных в Zabbix 3.4

16 ноя 2017, 23:04

Благодарю вас за ответ. Попробую.

Аватара пользователя
constan.costia
Сообщения: 16
Зарегистрирован: 15 ноя 2017, 16:49

Re: Обработка json данных в Zabbix 3.4

16 ноя 2017, 23:06

Создаем item, который будет забирать json с сервера:
Изображение
Переходим в закладку Preprocessing и добавляем регулярку, которая будет вырезать JSON:
Изображение Готово, теперь можно создавать дочерние элементы. Например memory:
Изображение
И настраиваем Preprocessing:
Изображение

Аналогично добавляем остальные элементы.

Аватара пользователя
amilenessa
Сообщения: 10
Зарегистрирован: 15 ноя 2017, 17:33

Re: Обработка json данных в Zabbix 3.4

16 ноя 2017, 23:08

Закомментировал UserParameter. Скрипт не использую.

Аватара пользователя
amilenessa
Сообщения: 10
Зарегистрирован: 15 ноя 2017, 17:33

Re: Обработка json данных в Zabbix 3.4

16 ноя 2017, 23:10

Итак, первый вопрос. Я написал несколько скриптов, какой из них более подходит для решения данной задачи?

первый: курлом возвращает результат запроса (результат возврата в шапке)

Код: Выделить всё

#!/bin/bash
curl -s http://10.0.#.#:8081/metrics/
второй: возращает значение connections

Код: Выделить всё

#!/bin/bash
export PYTHONENCODING=utf8

curl -s 'http://10.0.#.#:8081/metrics/' | \
    python3 -c "import sys, json; print(json.load(sys.stdin)['connections'])"
Поскольку я использовал первый вариант, то UserParameter у меня следующего вида.

Код: Выделить всё

UserParameter=metric.[*],/etc/zabbix/get_json.sh $1 $2
Далее в Zabbix. Создал элемент данных следующего вида:

Код: Выделить всё

Имя: getMetrics
Тип: Zabbix агент
Ключ: metric
Тип информации: текст
Группы элемнтов данных: Internal Items 
Предобработка: Путь JSON > .connections (1 параметр) и Путь JSON > .memory (2 параметр)

В информации о состоянии пишет что неподдерживаемый элемент ключа.

Аватара пользователя
constan.costia
Сообщения: 16
Зарегистрирован: 15 ноя 2017, 16:49

Re: Обработка json данных в Zabbix 3.4

16 ноя 2017, 23:12

Для 3.4 можно забить на UserParameter, это для младших версий. Можно сделать проще

Аватара пользователя
amilenessa
Сообщения: 10
Зарегистрирован: 15 ноя 2017, 17:33

Re: Обработка json данных в Zabbix 3.4

16 ноя 2017, 23:13

Создал элемент данных

Изображение

Прописал шаги предобработки

Изображение

Возникает ошибка:

Код: Выделить всё

Item preprocessing step #1 failed: cannot perform regular expression 
match on value "" of type "string": pattern does not match. 

Аватара пользователя
constan.costia
Сообщения: 16
Зарегистрирован: 15 ноя 2017, 16:49

Re: Обработка json данных в Zabbix 3.4

16 ноя 2017, 23:15

1. Формат для web.page.get другой, должно быть: web.page.get[10.0.5.55,/metric,8081] 2. В "Предобработке" должен быть только 1 пункт, где выдергивается только JSON. Таким образом получиться родительский элемент, на базе которого нужно будет делать дочерние. Для memory и connections нужно создавать отдельные элементы. Т.е. в итоге должно получиться три "элемента данных"

Аватара пользователя
amilenessa
Сообщения: 10
Зарегистрирован: 15 ноя 2017, 17:33

Re: Обработка json данных в Zabbix 3.4

16 ноя 2017, 23:18

Item создается. Никак не могу разобраться с предобработкой. Выставил регулярное выражение, прописал параметры > вывод. Zabbix ругается 9369:20171115:145826.879 error reason for "Zabbix server:web.page.get[10.0.5.55,/metrics,8081]" changed: Item preprocessing step #1 failed: cannot perform regular expression match on value "HTTP/1.1 404 Not Found connection: close content-length: 0 date: Wed, 15 Nov 2017 11:58:26 GMT server: Cowboy" of type "string": pattern does not match

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость