Разве не было бы здорово, если бы мы могли создать инцидент, когда наши системы упали с соответствия? Объединив Шеф -повар Automate и Pagerduty , Через простые веб -крючки, мы можем абсолютно это сделать.
Предварительные условия
Я делаю следующие предположения:
- У вас уже есть автоматизация шеф -повара, установленная по крайней мере с одним узлом, настроенным для отправки информации о соответствии для автоматизации (если вам нужна помощь в настройке, я рекомендую Этот отличный пост от Nick Rycar).
- У вас есть аккаунт Pagerduty.
Создать сервис в Pagerduty для соответствия шеф -повару
Мы начнем с создания услуги в Pagerduty. «Сервис» представляет собой приложение, компонент или команду — в этом случае мы рассматриваем соответствие как общее состояние. В настоящее время Chef Automate не предоставляет нам возможность фильтровать, на каких узлах сообщается, но в будущем посте я буду копаться в дальнейшей конфигурации в Pagerduty, чтобы разделить их на различные услуги. На данный момент мы рассмотрим все соответствие по всему нашему флоту как то, о чем мы заботимся в целом.
Чтобы создать службу, нажмите на Конфигурация | Услуги С сайта Pagerduty, а затем Добавить новый сервис Анкет
- Назовите соответствие шеф -повара.
- Предоставьте дополнительное описание.
- Тип интеграции должен быть пользовательским трансформатором событий.
- Имя интеграции должно быть шеф -поваром.
- Настройте оставшиеся настройки в зависимости от вашей организации.
После того, как вы сохраните эту новую услугу, вы увидите его в списке. Нажмите на имя интеграции (Chef Automate Compliance Webhook), чтобы мы могли настроить его:
Нажмите на Редактировать интеграцию
Замените JavaScript следующим образом:
var webhook = PD.inputRequest.body; var normalized_event = { event_type: PD.Trigger, incident_key: webhook.node_uuid, description: "InSpec found a critical control failure on "+webhook.node_name, "details": { "Number of failed critical tests": webhook.number_of_failed_critical_tests, "Total number of critical tests": webhook.number_of_critical_tests }, client: "Chef Automate", client_url: "https://automate.mattstratton.io/viz/#/compliance/reporting/nodes/"+webhook.node_uuid }; PD.emitGenericEvents([normalized_event]);
В конечном итоге вы захотите отключить режим отладки настройки, но можно оставить его для тестирования. Также обязательно замените Automate.mattstratton.io
с FQDN вашего собственного автоматического сервера!
Настройте уведомление о автоматизации шеф -повара
Вам понадобится URL -адрес интеграции от интеграции Webhook Automate Automate Automate. Это должно быть что -то вроде https://events.pagerduty.com/integration/xxxxxxxxxxxxx/enqueue
Откройте консоли автоматизации шеф -повара и переключитесь на Узлы Вкладка:
Нажмите на Уведомления | Создать уведомление :
Мы хотим добавить Webhook уведомление, так что выберите это.
Выберите сбои SPEC SCAN и вставьте в свой URL -адрес интеграции. Позвоните в уведомление Pagerduty Inspec Scan Scane, и нажмите Сохранять.
Тестирование уведомления
Предполагая, что у нас есть узел, который не удастся на настроенный профиль соответствия, все, что нам нужно сделать, это запустить Chef-Client на этом узле, и мы должны увидеть, как он появится в Pagerduty, как это:
Вот как выглядит сгенерированный инцидент в Pagerduty:
И чтобы быть еще более причудливым, мы можем увидеть это в мобильном приложении Pagerduty:
Отчетность по ошибкам клиента шеф -повара в Pagerduty
Подобно сбоям соответствия, мы также можем генерировать оповещения и инциденты на неудавшемся пробеге Chef-Client. Это очень похожий процесс:
- Создайте новую службу в Pagerduty, но на этот раз назовите его Chef Client.
- Используйте пользовательский трансформатор событий так же, как и раньше, но назовите его Chef Automate Chef Client Webhook (или что -то менее многословное, если вы предпочитаете).
- Используйте следующий JavaScript для интеграции:
var webhook = PD.inputRequest.body; var normalized_event = { event_type: PD.Trigger, incident_key: webhook.node_uuid, description: "Chef client failed on "+webhook.node_name+" with error: "+webhook.exception_message, details: webhook.exception_backtrace, client: "Chef Automate", client_url: webhook.automate_failure_url }; PD.emitGenericEvents([normalized_event]);
В автоматизации вы создадите уведомление, аналогичное соответствию соответствия, но вместо того, чтобы сообщать о сбоях Inspec, выберите опцию для сбоев с клиентом шеф -повара.
Отчеты в Pagerduty немного отличается для этого-она даст информацию об ошибке от Chef-Client, а также Backtrace:
В итоге
Это довольно базовая интеграция, но, надеюсь, она иллюстрирует, как легко связать эти два. В будущем посте я покопаюсь в методах отправки конкретных сбоев соответствия в определенных командах. Дайте мне знать, на какие вопросы я могу ответить для вас!
Оригинал: «https://dev.to/mattstratton/configuring-chef-automate-to-trigger-pagerduty-alerts-556l»