Заббикс – это не только гибкая и универсальная система мониторинга но и удобный инструмент для заведения заявок по проблемам а так же интеграций с существующими сервисдесками. Среди различных методов оповещений, вебхуки стали самым востребованным. И поэтому мы хотели бы сегодня рассказать о них чуть подробнее.

Что такое вебхук?

Вообще, если по умному – вебхук это метод расширения или изменения поведения веб-страницы или веб-приложения с помощью обратных вызовов. Но если проще, то вебхук – это автоматическая реакция на событие. Если происходит некое событие (например, появляется проблема), то вебхук делает обращение (по HTTP/HTTPS) к стороннему сервису, с целью оповещения о событии. Практически все существующие сервисы имеют API, который позволяет взаимодействовать с ними.

Вебхук в Заббиксе реализуется средствами JavaScript, поэтому написание кода не требует знаний специфического синтаксиса Zabbix и благодаря распространённости языка JavaScript, можно найти множество примеров, советов и помощи в интернете.

Как работает вебхук?

По сути вебхук – это код, который выполняет последовательность вызовов для достижения какого-нибудь результата. В случае Заббикса, выполняется JS код, который обращается к API сервиса, передаёт, обновляет и забирает оттуда данные.

Например, нам необходимо завести заявку в сервисдеске, и оставить в заявке комментарий, который будет содержать данные о проблеме. Для этого необходимо:

  • Авторизоваться в сервисе и получить токен
  • Сделать запрос с токеном для создания заявки
  • Создать комментарий во вновь созданной заявке используя токен

В различных сервисах детали могут отличаться, но общая идея будет сохраняться от сервиса к сервису.

Как им пользоваться?

Наша команда интеграции постоянно общается с сообществом и следит за самыми популярными сервисами, чтобы сделать для них интеграцию “из коробки”. На данный момент в Заббиксе по умолчанию есть множество вебхуков для самых популярных сервисов, и мы каждый день рассматриваем новые и улучшаем текущие.

В большинстве случаев настройка готового вебхука сводится к 3-4 действиям, которые описаны в README файле в репозитории Заббикса. Обычно, необходимо в сервисе сгенерировать API ключ, прописать его в Заббиксе, прописать URL до сервиса и указать пару параметров, необходимых для работы вебхука.

Помимо готовых решений, есть Github репозиторий сообщества, куда выкладываются пользовательские шаблоны и вебхуки! Если вы являетесь автором хука или шаблона, поделитесь ими с сообществом, выложив его в этом репозитории!

Примеры использования

Теория это хорошо, но всем нам интересно как это реализовано на практике. Давайте рассмотрим вебхук на примере Telegram. Сейчас этот мессенджер очень популярен и будет актуально использовать его как пример.

В первую очередь пройдем в репозиторий Заббикса или на вебсайт в разделе интеграций чтобы почитать инструкцию настройки. В репозитории все шаблоны и способы оповещений находятся в папке /templates и для каждого из них есть README файл с подробным описанием.

Для настройки Telegram необходимо создать бота и получить его токен следуя инструкции и задать его в параметре Token.

После этого создаём пользователя, которому указываем способ оповещения Telegram и в поле “Отправлять на” пишем id пользователя или группового чата.

Вуаля! Ваш вебхук настроен, и готов к отправке уведомлений или информации о событиях!

Как вы могли уже заметить, настройка не заняла много времени и не потребовала глубоких знаний. Естественно, для более тонкой настройки, возможно редактирование содержания сообщений, тип проблем, интервалы и прочие параметры. Но даже без дополнительных изменений уведомления уже готовы к работе.

Сложно ли написать вебхук самому?

Безусловно, для создания вебхука требуются определённые навыки.

Во-первых необходимо знание JavaScript. Сам по себе язык не сложный, и при желании его можно освоит. На сайте Заббикс документации есть гайдлайн по написанию вебхуков с рекомендациями и бест практис.

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

Ну и в-третьих – изучить документацию сервиса, для которого будет написан вебхук. Не смотря на то что все API работают по одному принципу, они могут сильно отличаться друг от друга методами и структурой запросов. Так же необходимо разобраться в самом сервисе, чтобы понимать как он работает. Сложно писать интеграцию, если не понятно как Заббикс должен правильно взаимодействовать с интегрируемым сервисом.

Подводя итог

Вебхук это современный и гибкий способ интеграции, который позволяет Заббиксу быть универсальным инструментом в работе. Так как реалии нашего мира подразумевают большое количество различных систем, и как результат – множество людей работающих вместе – вебхуки становятся незаменимым инструментом в автоматизации уведомлений. Правильно написанный и настроенный вебхук является эффективным решением для гибких оповещений.

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

Вопросы

В: У нас есть готовая система уведомления, построенная на скриптах. Есть ли смысл переводить её на вебхук?

О: Конечно. Во-первых вебхук выполняется нативно в забиксе, что будет гораздо производительнее чем во внешнем скрипте. Во-вторых – вебхук гораздо гибче, функциональнее и в него гораздо проще вносить изменения.

 

В: У нас есть сервис, к которому мы хотели бы написать интеграцию, но у нас нет квалифицированных специалистов, которые могли бы это сделать. Есть ли возможность запросить такую интеграцию у Заббикса?

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

 

Подписаться
Уведомить о
0 Comments
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x