Заббикс — это не только гибкая и универсальная система мониторинга но и удобный инструмент для заведения заявок по проблемам а так же интеграций с существующими сервисдесками. Среди различных методов оповещений, вебхуки стали самым востребованным. И поэтому мы хотели бы сегодня рассказать о них чуть подробнее.
Table of Contents
Что такое вебхук?
Вообще, если по умному — вебхук это метод расширения или изменения поведения веб-страницы или веб-приложения с помощью обратных вызовов. Но если проще, то вебхук — это автоматическая реакция на событие. Если происходит некое событие (например, появляется проблема), то вебхук делает обращение (по HTTP/HTTPS) к стороннему сервису, с целью оповещения о событии. Практически все существующие сервисы имеют API, который позволяет взаимодействовать с ними.
Вебхук в Заббиксе реализуется средствами JavaScript, поэтому написание кода не требует знаний специфического синтаксиса Zabbix и благодаря распространённости языка JavaScript, можно найти множество примеров, советов и помощи в интернете.
Как работает вебхук?
По сути вебхук — это код, который выполняет последовательность вызовов для достижения какого-нибудь результата. В случае Заббикса, выполняется JS код, который обращается к API сервиса, передаёт, обновляет и забирает оттуда данные.
Например, нам необходимо завести заявку в сервисдеске, и оставить в заявке комментарий, который будет содержать данные о проблеме. Для этого необходимо:
- Авторизоваться в сервисе и получить токен
- Сделать запрос с токеном для создания заявки
- Создать комментарий во вновь созданной заявке используя токен
В различных сервисах детали могут отличаться, но общая идея будет сохраняться от сервиса к сервису.
Как им пользоваться?
Наша команда интеграции постоянно общается с сообществом и следит за самыми популярными сервисами, чтобы сделать для них интеграцию “из коробки”. На данный момент в Заббиксе по умолчанию есть множество вебхуков для самых популярных сервисов, и мы каждый день рассматриваем новые и улучшаем текущие.
В большинстве случаев настройка готового вебхука сводится к 3-4 действиям, которые описаны в README файле в репозитории Заббикса. Обычно, необходимо в сервисе сгенерировать API ключ, прописать его в Заббиксе, прописать URL до сервиса и указать пару параметров, необходимых для работы вебхука.
Помимо готовых решений, есть Github репозиторий сообщества, куда выкладываются пользовательские шаблоны и вебхуки! Если вы являетесь автором хука или шаблона, поделитесь ими с сообществом, выложив его в этом репозитории!
Примеры использования
Теория это хорошо, но всем нам интересно как это реализовано на практике. Давайте рассмотрим вебхук на примере Telegram. Сейчас этот мессенджер очень популярен и будет актуально использовать его как пример.
В первую очередь пройдем в репозиторий Заббикса или на вебсайт в разделе интеграций чтобы почитать инструкцию настройки. В репозитории все шаблоны и способы оповещений находятся в папке /templates и для каждого из них есть README файл с подробным описанием.
Для настройки Telegram необходимо создать бота и получить его токен следуя инструкции и задать его в параметре Token.
После этого создаём пользователя, которому указываем способ оповещения Telegram и в поле “Отправлять на” пишем id пользователя или группового чата.
Вуаля! Ваш вебхук настроен, и готов к отправке уведомлений или информации о событиях!
Как вы могли уже заметить, настройка не заняла много времени и не потребовала глубоких знаний. Естественно, для более тонкой настройки, возможно редактирование содержания сообщений, тип проблем, интервалы и прочие параметры. Но даже без дополнительных изменений уведомления уже готовы к работе.
Сложно ли написать вебхук самому?
Безусловно, для создания вебхука требуются определённые навыки.
Во-первых необходимо знание JavaScript. Сам по себе язык не сложный, и при желании его можно освоит. На сайте Заббикс документации есть гайдлайн по написанию вебхуков с рекомендациями и бест практис.
Во-вторых непосредственно понимание того, как работает Заббикс. Для этого не потребуется углублённого понимания Заббикс и будет достаточно умения следовать базовым инструкциям. Подробнее про настройку способов оповещений можно почитать в документации. Тут важно правильно настроить сам вебхук, выдать права пользователям и настроить действие оповещения для необходимых триггеров.
Ну и в-третьих — изучить документацию сервиса, для которого будет написан вебхук. Не смотря на то что все API работают по одному принципу, они могут сильно отличаться друг от друга методами и структурой запросов. Так же необходимо разобраться в самом сервисе, чтобы понимать как он работает. Сложно писать интеграцию, если не понятно как Заббикс должен правильно взаимодействовать с интегрируемым сервисом.
Подводя итог
Вебхук это современный и гибкий способ интеграции, который позволяет Заббиксу быть универсальным инструментом в работе. Так как реалии нашего мира подразумевают большое количество различных систем, и как результат — множество людей работающих вместе — вебхуки становятся незаменимым инструментом в автоматизации уведомлений. Правильно написанный и настроенный вебхук является эффективным решением для гибких оповещений.
В следующей статье мы вместе узнаем основные методы и запросы которые необходимы для того, чтобы отправлять алерты, получать апдейты и присваивать теги на примере вебхука который мы разберём от начала до конца.
Вопросы
В: У нас есть готовая система уведомления, построенная на скриптах. Есть ли смысл переводить её на вебхук?
О: Конечно. Во-первых вебхук выполняется нативно в забиксе, что будет гораздо производительнее чем во внешнем скрипте. Во-вторых — вебхук гораздо гибче, функциональнее и в него гораздо проще вносить изменения.
В: У нас есть сервис, к которому мы хотели бы написать интеграцию, но у нас нет квалифицированных специалистов, которые могли бы это сделать. Есть ли возможность запросить такую интеграцию у Заббикса?
О: Да, в случае если вы являетесь партнёром Заббикса, вы можете оставить заявку на создание такой интеграции.