Рубрики
Uncategorized

Настройка автоматизации шеф -поваров для запуска оповещений Pagerduty

Разве не было бы здорово, если бы мы могли создать инцидент, когда наши системы упали с соответствия? Комбинируя Chef Automate и Pagerduty, через простые веб -крючки, мы можем абсолютно это сделать. Tagged с DevOps, соответствием, Pagerduty, Chef.

Разве не было бы здорово, если бы мы могли создать инцидент, когда наши системы упали с соответствия? Объединив Шеф -повар Automate и Pagerduty , Через простые веб -крючки, мы можем абсолютно это сделать.

Предварительные условия

Я делаю следующие предположения:

  1. У вас уже есть автоматизация шеф -повара, установленная по крайней мере с одним узлом, настроенным для отправки информации о соответствии для автоматизации (если вам нужна помощь в настройке, я рекомендую Этот отличный пост от Nick Rycar).
  2. У вас есть аккаунт Pagerduty.

Создать сервис в Pagerduty для соответствия шеф -повару

Мы начнем с создания услуги в Pagerduty. «Сервис» представляет собой приложение, компонент или команду — в этом случае мы рассматриваем соответствие как общее состояние. В настоящее время Chef Automate не предоставляет нам возможность фильтровать, на каких узлах сообщается, но в будущем посте я буду копаться в дальнейшей конфигурации в Pagerduty, чтобы разделить их на различные услуги. На данный момент мы рассмотрим все соответствие по всему нашему флоту как то, о чем мы заботимся в целом.

Чтобы создать службу, нажмите на Конфигурация | Услуги С сайта Pagerduty, а затем Добавить новый сервис Анкет

  1. Назовите соответствие шеф -повара.
  2. Предоставьте дополнительное описание.
  3. Тип интеграции должен быть пользовательским трансформатором событий.
  4. Имя интеграции должно быть шеф -поваром.
  5. Настройте оставшиеся настройки в зависимости от вашей организации.

После того, как вы сохраните эту новую услугу, вы увидите его в списке. Нажмите на имя интеграции (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. Это очень похожий процесс:

  1. Создайте новую службу в Pagerduty, но на этот раз назовите его Chef Client.
  2. Используйте пользовательский трансформатор событий так же, как и раньше, но назовите его Chef Automate Chef Client Webhook (или что -то менее многословное, если вы предпочитаете).
  3. Используйте следующий 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»