Добрый день!
Данная тема уже неоднократно поднималась, однако какого-то универсального и внятного решения я не нашел. Например, вот тут https://www.zabbix.com/forum/showthread.php?t=21135 советуют воспользоваться IT-услугами, либо написать свою страничку для формирования отчетов. Собственно второе мне и было поручено сделать.
Ввиду того, что с самим Zabbix'ом моя работа не связана, в дальнейшем описании вопроса я, возможно, буду путаться в установленной терминологии.
Итак, передо мной стоит задача сформировать два отчета в виде графика: количество сбоев (штук) и продолжительность сбоев (часов) для выбранной группы узлов.
Входные данные:
* Список узлов, по которым требуется построение отчета.
* Промежуток данных для отчета.
* Элемент данных и его значение, которые распознаются как проблемная ситуация. Иными словами, это триггер, активация которого означает проблемную ситуацию. В 90% случаев подобный отчет строится по триггеру «Объект недоступен», означающему, что ICMP пакеты (ping) до объекта не доходят.
Как я вижу решение поставленной задачи (прошу меня поправить, если в чем-то я не прав):
1). Получить все хосты, находящиеся в заданной группе.
2). Задать искомый item (в моем случае это icmppingloss_big_packet)
3). Получить items по заданному имени item'а (icmppingloss_big_packet) и найденным хостам.
4). Далее по найденным данным из таблицы trends (данные 7 дней хранятся в чистом виде, а потом в тенденциях - минимальное, среднее и максимальное значение за каждый час) вытащить "сбойные" часы. Под "сбойными" часами я понимаю часы, у которых максимальное значение потери пакетов за час > 50% (т.е. хоть раз за час потеря скакнула >50%). Может быть, можно и из таблицы с триггерами вытащить эти данные, но я не уверен, что информация по сработавшим триггерам хранится долгое время.
Так же отдельно надо вытащить те же данные из истории (history).
С виду вроде все понятно,но есть затыки в простых местах - например, я так и не нашел как вытащить все узлы, находящиеся в заданной группе, так что я бы хотел при помощи сообщества создать более-менее рабочий инструмент для генерации подобных отчетов в виде странички на PHP (вдруг кому пригодится).
Данная тема уже неоднократно поднималась, однако какого-то универсального и внятного решения я не нашел. Например, вот тут https://www.zabbix.com/forum/showthread.php?t=21135 советуют воспользоваться IT-услугами, либо написать свою страничку для формирования отчетов. Собственно второе мне и было поручено сделать.
Ввиду того, что с самим Zabbix'ом моя работа не связана, в дальнейшем описании вопроса я, возможно, буду путаться в установленной терминологии.
Итак, передо мной стоит задача сформировать два отчета в виде графика: количество сбоев (штук) и продолжительность сбоев (часов) для выбранной группы узлов.
Входные данные:
* Список узлов, по которым требуется построение отчета.
* Промежуток данных для отчета.
* Элемент данных и его значение, которые распознаются как проблемная ситуация. Иными словами, это триггер, активация которого означает проблемную ситуацию. В 90% случаев подобный отчет строится по триггеру «Объект недоступен», означающему, что ICMP пакеты (ping) до объекта не доходят.
Как я вижу решение поставленной задачи (прошу меня поправить, если в чем-то я не прав):
1). Получить все хосты, находящиеся в заданной группе.
2). Задать искомый item (в моем случае это icmppingloss_big_packet)
3). Получить items по заданному имени item'а (icmppingloss_big_packet) и найденным хостам.
4). Далее по найденным данным из таблицы trends (данные 7 дней хранятся в чистом виде, а потом в тенденциях - минимальное, среднее и максимальное значение за каждый час) вытащить "сбойные" часы. Под "сбойными" часами я понимаю часы, у которых максимальное значение потери пакетов за час > 50% (т.е. хоть раз за час потеря скакнула >50%). Может быть, можно и из таблицы с триггерами вытащить эти данные, но я не уверен, что информация по сработавшим триггерам хранится долгое время.
Так же отдельно надо вытащить те же данные из истории (history).
С виду вроде все понятно,но есть затыки в простых местах - например, я так и не нашел как вытащить все узлы, находящиеся в заданной группе, так что я бы хотел при помощи сообщества создать более-менее рабочий инструмент для генерации подобных отчетов в виде странички на PHP (вдруг кому пригодится).
Comment