LINUX.ORG.RU
ФорумAdmin

Zabbix - доработка веб-интерфейса (мониторинг нетривиальных задач)


0

3

Доброго времени суток. Настал момент, когда стандартного функционала Zabbix'a стало мало=) Руководство ставит новую задачу, например, считывать значения с пользовательских БД (это понятное дело, осуществимо, например, с помощью UserParameters) и затем строить графики по запросу на основе полученных данных. Предполагается в веб-интерфейсе прикрутить поля где можно будет задать даты, между которыми нужно получить график, и кнопку, после нажатия которой, этот график будет отображаться. График при этом не должен сохраняться в системе постоянно, как стандартные графики Zabbix'a, а строиться исключительно по запросу (по нажатию кнопки).

Вопрос: кто-нибудь занимался подобными вмешательствами в веб-интерфейс Zabbix'a? Поделитесь, пожалуйста, своими соображениями/опытом модификации веб-интерфейса.



Последнее исправление: Incher (всего исправлений: 1)

Предполагается в веб-интерфейсе прикрутить поля где можно будет задать даты

И так есть.

График при этом не должен сохраняться в системе постоянно, как стандартные графики Zabbix'a, а строиться исключительно по запрос

Он и так строится по нажатию кнопки.

zgen ★★★★★
()
Ответ на: комментарий от zgen

это я понимаю =) хотелось бы увидеть конкретные примеры модификации php-кода, возможно и не связанных с построение графиков.

Incher
() автор топика
Ответ на: комментарий от Incher

это я понимаю =)

Мы по вопросу судим. По вопросу, не понимаешь

хотелось бы увидеть конкретные примеры модификации php-кода, возможно и не связанных с построение графиков.

Конкретные примеры под конкретные задачи.

petav ★★★★★
()
Ответ на: комментарий от Incher

В целом интересно (и в частности применительно к вышеописанной задаче), кто-нибудь вообще занимался подобным мозголомством и каковы успехи?

Incher
() автор топика
Ответ на: комментарий от petav

Хорошо, тогда, возможно ли например по оси X задавать дату (или вовсе значения не дат, а какой нибудь другой числовой параметр) из пользовательской таблицы БД? то есть например я считываю в итемы значения двух столбцов в одном дата, в другом число (например,число отправленных смсок с сервера в этот день). По оси Y, знаю, можно выставить значения из итема, а вот по X?

И такой вопрос, можно ли увеличить масштаб отображения графиков? Насколько я знаю, при максимальном приближении график отображается за 1час, а нужно посмотреть например 10-минутный интервал.

Incher
() автор топика
Ответ на: комментарий от petav

Было бы неплохо) но нет. Хочу использовать статистические возможности zabbix для узкоспециализированных задач.

Incher
() автор топика
Ответ на: комментарий от Incher

Сугубо мое мнение

Хорошо, тогда, возможно ли например по оси X задавать дату (или вовсе значения не дат, а какой нибудь другой числовой параметр) из пользовательской таблицы БД?

Не удобно молотком брюки гладить, долго. Мониторинг подразумевает хронологическую связь. Т.е. Событие = Дата + Состояние. Вот этим zabbix и занимается. К примеру, у тебя уже есть лог, он в твоей базе. Переноси его в zabbix полностью и ковыряйся в нем с помощью фильтров, либо подход изменяй к обработке данных агентом и привязывай все к сетке времени zabbix системы. Либо напиши отдельную визуализацию логов без zabbix.

И такой вопрос, можно ли увеличить масштаб отображения графиков? Насколько я знаю, при максимальном приближении график отображается за 1час, а нужно посмотреть например 10-минутный интервал.

10 минутный режим нужно в код интерфейса лезть что бы изменить. Я как понимаю это для большей точности необходимо, тогда можно для Истории включить режим «Значения» и наслаждаться точными значениями за каждую «минуту»

P.S.: Я попытался в лоб заставить zabbix построить график за 60 секунд, он ругнулся что минимум 3600 секунд. Ррограммное ограничение, прежде чем изменять необходимо выяснить чем оно обусловлено.

petav ★★★★★
()
Ответ на: комментарий от Incher

хотелось бы увидеть конкретные примеры модификации php-кода,

Зачем модифицировать код для реализации вещей, которые и так уже есть?

Незачем.

zgen ★★★★★
()

Камараде, посылай постановщика задачи подальше.

Ибо то ,что от тебя хотят, реализуется стандартными средствами заббикса, без изменения интерфейса.
1. Для сбора твоих данных можно использовать аж целых 5(!) методов:
а. Удалённые ssh-проверки плюс удалённый скрипт с запросом
б. ODBC - проверки
в. Кастомные параметры агента
г. Скрипты внешней проверки
д. Накопление информации в БД ( триггеры, планировщик, хранимки ) плюс периодическая отправка данных на заббикс-сервер в итем типа «Заббикс-траппер»
2. Построение графика за определённый период уже есть в заббиксе

В заббикс уже встроена система построения графиков по данным в разрезе времени. Если твои графики в разрезе времени, следует использовать заббикс. Если твои графики строятся по другой зависимости, к примеру ЗВОНКИ(АБОНЕНТ), тогда целесообразно порисовать самому, библиотек и готовых решений для этого много.

dmitryalexeeff
()
Ответ на: комментарий от dmitryalexeeff

Зависимость графиков идет от времени, но не от текущего времени, а от того, которое сохранено в бд несколько лет назад еще до того как Zabbix у нас появился, и его скорее нужно рассматривать не как время, а как юзерский параметр, так что пойду учиться рисовать=)

Incher
() автор топика
Ответ на: комментарий от Incher

Всем большое спасибо, что прояснили ситуацию и помогли понять ошибочность подхода к решению задачи)

Incher
() автор топика
Ответ на: комментарий от Incher

Можно организовать загрузку задним числом, с нужным временем.
Делается через итем типа zabbix_trapper. Пересылаешь в него с помощью zabbix_sender или из своей программы ( реализовав протокол, он у них на базе JSON ) твои данные с указанием времени.
Вполне рабочий вариант. Я делал такое для сбора параметров работы спутниковых терминалов, загружается также задним числом, чтобы каналы лишний раз не напрягать.

dmitryalexeeff
()
Ответ на: комментарий от dmitryalexeeff

Хм, это мысль, хотя в реализации протоколов опыта не имеется. Спасибо, попробую покопаться на досуге.

Incher
() автор топика
Ответ на: комментарий от dmitryalexeeff

Спасибо, попробую самостоятельно разобраться, для себя полезнее, она стоит пока в качестве «факультативной», так что время не жмет=)

Incher
() автор топика
Ответ на: комментарий от Incher

Начальство конкретизировало задачу:
события голосовой платформы фиксируются в таблице mySQL. событий несколько - около 10 типов
задача - построить график (а лучше несколько - на одной сетке) на основе выборок
должна быть некая форма - где «насяльника» указывает дату начала и дату завершения и ставит галочки
а) «входящих звонков» б) ошибочных звонков в) уникальных абонентов г) абонентов-юзеров

при нажатии ОК - выводится график и/или таблица

допустим я имею вот такой набор пар: дата/значение (для одного графика)
03/05 = 3
04/05 = 8
05/05 = 0
06/05 = 0
07/05 = 0
08/05 = 0
09/05 = 0
10/05 = 1
11/05 = 0
12/05 = 1
13/05 = 0
14/05 = 8
15/05 = 5
16/05 = 4

как по ним построить график? должны ли эти данные лежать именно в хистори?

цитирую постановщика задачи (правда он далёк от темы Zabbix'a): предполагаю что подобные пользовательские данные - не являются объектами мониторинга как таковыми (тк мониторинг подразумевает постоянное наблюдение, а выполняются по запросу).
Данные по ним накапливать не нужно, они берутся из другой БД, Zabbix только предоставляет единый стиль/интерфейс и отрисовку графиков

В общем, начальство увидело в Zabbix'е большой потенциал и гибкость, хочет попытаться реализовать единую систему отчетности (да еще и с графиками)

Кстати, уже назревает задача когда стороннюю таблицу MySQL нужно именно мониторить регулярно. Вот пример.
в таблице фиксируются служебные транзакции процессинга, в час около 50-70 штук. это считается нормой. Все что ниже условного порога - должно быть поводом для тех.проверки.
Т.е если за последний час число транзакций < 10, то нужно проверять работу систем

Хотелось бы услышать ваши комментарии.

Incher
() автор топика
Ответ на: комментарий от Incher

Кстати, уже назревает задача когда стороннюю таблицу MySQL нужно именно мониторить регулярно. Вот пример. в таблице фиксируются служебные транзакции процессинга, в час около 50-70 штук. это считается нормой. Все что ниже условного порога - должно быть поводом для тех.проверки. Т.е если за последний час число транзакций < 10, то нужно проверять работу систем

Может, он для этого и создан, для мониторинга!

задача - построить график (а лучше несколько - на одной сетке) на основе выборок должна быть некая форма - где «насяльника» указывает дату начала и дату завершения и ставит галочки а) «входящих звонков» б) ошибочных звонков в) уникальных абонентов г) абонентов-юзеров

Можно попробовать реализовать это комплексным отчетом при наличии данных в базе.

Данные по ним накапливать не нужно, они берутся из другой БД, Zabbix только предоставляет единый стиль/интерфейс и отрисовку графиков

Что бы zabbix их смог анализировать их надо портировать/накапливать в его «систему координат». В вашем случае лучше накидать простой web-интерфей, где списком будут разные формочки, а формочкам запросы SQL. Дел не много. А zabbix используйте по назначению. т.е. мониторинг и анализ накопленных данных в виде графов. А рисовать графики по данным другой базы он такие задачи не решает и учить его этому не верный подход.

petav ★★★★★
()
Ответ на: комментарий от petav

Что бы zabbix их смог анализировать их надо портировать/накапливать в его «систему координат». В вашем случае лучше накидать простой web-интерфей, где списком будут разные формочки, а формочкам запросы SQL. Дел не много. А zabbix используйте по назначению. т.е. мониторинг и анализ накопленных данных в виде графов. А рисовать графики по данным другой базы он такие задачи не решает и учить его этому не верный подход.

А возможно ли объединить юзерские формочки с запросами под интерфейсом Zabbix'a (чтобы мониторинг всего железа и необходимых БД был централизован), например, на главной панели Zabbix'a добавить кнопку перехода к списку форм, и чтобы на самих формочках таблички и графики строились средствами Zabbix'a? (предварительно для этого залить данные из юзерской БД в БД Zabbix'a)

Incher
() автор топика
Ответ на: комментарий от Incher

А возможно ли объединить юзерские формочки с запросами под интерфейсом Zabbix'a (чтобы мониторинг всего железа и необходимых БД был централизован), например, на главной панели Zabbix'a добавить кнопку перехода к списку форм, и чтобы на самих формочках таблички и графики строились средствами Zabbix'a? (предварительно для этого залить данные из юзерской БД в БД Zabbix'a)

Возможно все, Zabbix OpenSource. Только смысла в этом я лично не вижу. Позволю себе еще раз дать совет, что дешевле (время, силы, специалисты) будет написать систему отчетов к Вашей (Вашим) базам данных, чем «затачивать» пассатижи под задачу забивать гвозди.

petav ★★★★★
()
Ответ на: комментарий от Incher

Я тебе один хороший вещь скажу, только ты не обижайся :)

Заббикс для отчётов и вообще использования его менеджерами и начальниками не предназначен. Это чисто админская штука, которая работает в жёсткой админской реальности.
Для работы с бизнес-сущностями и процессами она на предназначена и работать в таком качестве не будет.

dmitryalexeeff
()
Последнее исправление: dmitryalexeeff (всего исправлений: 1)
Ответ на: комментарий от dmitryalexeeff

Можно организовать загрузку задним числом, с нужным временем.
Делается через итем типа zabbix_trapper. Пересылаешь в него с помощью zabbix_sender или из своей программы ( реализовав протокол, он у них на базе JSON ) твои данные с указанием времени.
Вполне рабочий вариант. Я делал такое для сбора параметров работы спутниковых терминалов, загружается также задним числом, чтобы каналы лишний раз не напрягать.

Вы не могли бы поподробнее рассказать об этом варианте? С чего нужно начать? Возможно, посоветуете, где можно почитать о реализации протокола?

Из чтения раздела оф. документации «Zabbix API», честно так и не стало понятно, куда, грубо говоря, этот код на JSON писать (какую-то утилиту/среду разработки дополнительную необходимо ставить, какие файлы править или создавать новые, куда их потом складывать и подключать?..) Уж простите за ламерский вопрос, не приходилось до этого протоколы реализовывать, тем более на JSON

Incher
() автор топика
Ответ на: комментарий от Incher

Я уже написал о том как это можно сделать.
Но полный рецепт не дам, извини, это будет уже выполнение работы.

P.S. Почитай в качестве старта «Стивенс. UNIX:разработка сетевых приложений».

dmitryalexeeff
()
Ответ на: комментарий от Incher

куда, грубо говоря, этот код на JSON писать

JSON в сокет, а возможно проще использовать ZABBIX_SENDER

-T, --with-timestamps

petav ★★★★★
()
Ответ на: комментарий от dmitryalexeeff

dmitryalexeeff, petav, спасибо за дельные рекомендации!

Я уже написал о том как это можно сделать.
Но полный рецепт не дам, извини, это будет уже выполнение работы.

dmitryalexeeff, понимаю, интеллектуальный труд должен быть вознагражден=) у меня еще есть вопрос, относительно времени. Возможно ли передавать нужное мне время в виде параметра zabbix_sender'a, чтобы при построении графиков оно отображалось по оси Х (а не текущее время), либо это лучше сделать с помощью собственной программы с реализацией протокола json?

Incher
() автор топика
Ответ на: комментарий от petav

все,дошло, мой косяк) а можно ли передавать zabbix_sender'ом в качестве значения ключа результат работы скрипта (например, как при использовании переменной UserParameters в конфигурационных файлах)?

Incher
() автор топика
Ответ на: комментарий от Incher

а можно ли передавать zabbix_sender'ом в качестве значения ключа результат работы скрипта

Можно

petav ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.