Рубрики
Uncategorized

Создание пользовательских рабочих процессов ответа на инциденты с N8N

Я некоторое время участвовал в мире DevOps, и все же я закончил читать проект Phoenix на … Tagged с DevOps, Pagerduty, Matter, Tuperial.

Я был вовлечен в мир DevOps некоторое время, и все же я закончил читать Проект Феникса только недавно. Это вызвало мой интерес к тому, как команды выполняют свои пьесы для ответа на инцидент. Поучительно видеть, как команды подходят, чтобы отточить то, что лучше всего подходит для них.

Управление реагированием на инциденты в максимальной поддержке N8N и Pagerduty

Я хотел проверить, как будет выглядеть автоматизация пьесы отклика о минималистском инциденте, и я решил проверить его с тремя моими любимыми инструментами n8n , Pagerduty и Материал . Вот быстрое введение в три инструмента, если вы не знаете о них:

  1. n8n — это Ярмарочный код Лицензированный инструмент, который помогает вам автоматизировать задачи, синхронизировать данные между различными источниками и реагировать на события все через визуальный редактор рабочего процесса.
  2. Pagerduty — это платформа реагирования на инциденты SaaS для ИТ -отделов в компаниях.
  3. Самый вещественный-гибкая и открытая альтернатива обмену сообщениями.

Чтобы избежать паники во время инцидента, у многих компаний есть пьесы для реагирования на инцидент. Я создал минималистскую шестиступенчатую пьесу для этого урока. Всякий раз, когда обслуживание снижается или что-то неожиданное происходит, команда по вызову будет следовать этому протоколу высокого уровня:

  1. Проблема сортировки в Джире
  2. Создайте вспомогательный канал
  3. Пригласить команду по вызову на канал
  4. Признайте проблему
  5. Исправить проблему
  6. Установите билет

Мы автоматизируем эту книгу с тремя рабочими процессами (эти рабочие процессы были построены с использованием n8n@0.111.0) в N8N, и именно так результат будет выглядеть, как только мы закончим.

Рабочий процесс ответа на инцидент в игре

Рабочий процесс 1 — Убедитесь, что все знают, что случилось

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

  1. Веб -крюк запускается и информирует общий канал инцидентов в наибольшей степени, что что -то не так.
  2. Создайте вспомогательный канал для конкретного инцидента, пригласите команду по вызову и поделитесь его ссылкой для тех, кто заинтересован в инциденте.
  3. Сортировать проблему на Джире.
  4. Поделитесь ссылками на вспомогательный канал, инцидент Pagerduty и выпуск Jira в канале инцидентов и вспомогательный канал.
  5. Поделиться кнопками действия в вспомогательном канале, чтобы подтвердить и разрешить инцидент.

Давайте начнем с узлов первого рабочего процесса. Я также представил Рабочий процесс 1 На n8n.io, если вы захотите пройти через этот рабочий процесс. Обратите внимание, что вам все еще нужно настроить несколько вещей, таких как ваши учетные данные, каналы как на материи, так и настройки узлов. Вы можете найти информацию о том, как настроить N8N в Документация Анкет В качестве альтернативы, вы можете зарегистрироваться в N8N.Cloud, чтобы получить доступ к нашей хостированной службе.

1. Узел Webhook: Получите данные от Pagerduty

Прежде всего, нам нужно привлечь новые отчеты об инцидентах от Pagerduty. Чтобы сделать это, начать N8N с параметром туннеля:

N8N Start -Tunnel

Примечание: Убедитесь, что вы не забудьте добавить -Туннель параметр. Если вы используете n8n.cloud, нажмите кнопку «Открыть» на панели инструментов

Добавьте новый узел, нажав на ‘ + ‘Кнопка в правом верхнем углу интерфейса редактора. Выберите Webhook Узел под Триггеры раздел.

В представлении редактора узлов установите HTTP Метод к Пост Анкет Теперь вам нужно сохранить рабочий процесс. Я назвал его «вариант реагирования на инцидент». Как только рабочий процесс сохранен, нажмите на Webhook Urls , выберите Тест , а затем нажмите на URL, чтобы скопировать его в буфер обмена.

Примечание: Не забудьте сначала сохранить рабочий процесс, прежде чем копировать URL -адреса Webhook.

Вот видео о том, как я следуя шагам, упомянутым выше.

Теперь, когда у нас есть Наш Webhook Узел, готовый на N8N, нам нужно настроить настройки на Pagerduty, чтобы он отправил новые отчеты об инцидентах в WebHook.

Если ваша команда уже не использует Pagerduty, вы можете создать бесплатную пробную учетную запись на Pagerduty. Если вы создаете новую учетную запись, вам также придется создать услугу, которую Pagerduty будет мониторинг.

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

Для этого нажмите на Услуги Анкет Нажмите на Более кнопка с правой стороны и выберите Просмотр интеграции В меню (сделайте это для службы, для которой вы хотите настроить веб -крючок). Теперь под разделом под названием Расширения и Дополнения , нажмите на Добавить или управлять расширениями . Нажмите на + Новое расширение Кнопка и выберите «Generic V2 Webhook» как Тип расширения Анкет Я вошел n8n Как имя и вошел в URL, который я скопировал из Webhook узел. Нажмите на Сохранить кнопка И мы закончили!

Вот видео о том, как я следуя шагам, упомянутым выше.

Теперь нажмите на Выполнить рабочий процесс кнопка для регистрации веб -крюка. Как только вы это сделаете, вы можете создать новый инцидент в Pagerduty. Ваш узел Webhook получит все детали. Имейте в виду, что тестовые веб -крючки действительны только в течение 120 секунд. Это должно выглядеть как -то на следующем изображении.

Ответ получен узлом Webhook при создании инцидента на Pagerduty

Время от времени, когда вы отправляете слишком много запросов от Pagerduty, это отключит веб -крюк. Вам придется повторно включить его, перейдя в список расширений и нажав на Повторно кнопка.

Повторно включить веб-крюк на Pagerduty

2. Самый материальный узел: создать вспомогательный канал

Теперь нам нужно создать Материал Узел, который создаст вспомогательный канал, так что команда по вызову может координировать исправление для инцидента.

Для этого нажмите на ‘ + ‘Кнопка и нажмите на Материал узел. В редакторе узлов введите свои максимальные учетные данные. Вот несколько подробных Информация о том, как создать токен доступа для учетных данных. Я использовал токен доступа из учетной записи BOT, но вы также можете использовать токен доступа из своей учетной записи.

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

Как только вы все разобрались с учетными данными, выберите «Канал» как Ресурс в редакторе узлов. Теперь выберите свою команду как Команда идентификатор (Если вы не можете приобрести это, обратитесь к своему системному администратору). Теперь нам нужно ввести Отображение имени для канала. Поскольку это будет динамическая часть информации, нажмите на значок Gears рядом с полем и выберите Добавьте выражение Анкет Выберите следующее в селекторе переменных:

Текущий узел> Входные данные> json> body> Сообщения> [Пункт: 0]> log_entries> [Пункт: 0]> Инцидент> Резюме

Я знаю, довольно немного отступа! Это убедится, что отображаемое имя канала будет таким же, как и резюме инцидента на Pagerduty, чтобы сохранить вещи. Теперь вам нужно ввести Имя Анкет Это должно быть уникальным значением, поэтому мы выберем id Из отчета об инциденте. Нажмите на Добавьте выражение и выберите следующее в селекторе переменных:

Текущий узел> Входные данные> json> body> Сообщения> [Пункт: 0]> я d

Идеально, теперь нажмите на Выполнить узел И это создаст вспомогательный канал на самом деле. Вот видео о том, как я следуя шагам, упомянутым выше.

3. Самый вещественный узел: добавить команду по вызову в вспомогательный канал

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

Чтобы сделать это, создать еще один Материал узел. Выберите учетные данные, которые вы ввели ранее. Выберите «Канал» как Ресурс и нажмите «Добавить пользователя» для Операция Анкет Теперь мы должны указать Идентификатор канала где пользователь должен быть добавлен. Поскольку это еще одна динамичная информация, нажмите на Добавьте выражение и в селекторе переменных выберите следующее:

Текущий узел> входные данные> json> i d

Теперь мы указам пользователя, выбрав себя из раскрывающегося списка для Идентификатор пользователя Анкет Нажмите на Выполнить узел кнопка И вы заметите, что вы будете добавлены в канал. Этот узел гарантирует, что указанный пользователь всегда добавляется в вспомогательный канал, созданный рабочим процессом.

Вот видео о том, как я следуя шагам, упомянутым выше.

В качестве упражнения попробуйте использовать API Pagerduty, чтобы составить список идентификаторов электронной почты людей, которые находятся по вызову и добавьте их в вспомогательный канал в наибольшей степени. Не стесняйтесь забрать это, как только вы закончите с учебником.

4. Программный узел JIRA: Сортировать проблему в Джире

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

В редакторе узлов введите Учетные данные для Джиры. Вот подробно Информация о том, как вы можете создать новый токен API для учетных данных.

Как только вы разбираетесь с Учетные данные , выберите Проект где будут созданы билеты. Я выбрал тестовый проект, который я создал специально для этого урока. В Тип выпуска Я выбрал «ошибку», но не стесняйтесь выбирать что -то другое. Резюме * — это динамическая часть информации, выберите Добавить выражения и выберите Резюме переменная, как вы сделали для Отображение имени раздел при настройке Материал Узел для создания канала.

Нажмите на Выполнить узел И это создаст для вас билет Jira. Вот видео о том, как я следуя шагам, упомянутым выше.

5. Самый вещественный узел: Разместите подробности в канале инцидентов

Следующее, что необходимо сделать, — это опубликовать детали инцидента в канале инцидентов. Нам нужно поделиться следующей информацией на канале:

  1. Резюме инцидента
  2. Ссылка на вспомогательный канал
  3. Ссылка на инцидент Pagerduty
  4. Ссылка на билет Jira

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

Для этого создайте новый Материал узел. В редакторе узлов выберите свой Учетные данные Анкет Теперь нам нужно войти в Идентификатор канала Анкет Поскольку это не динамическая часть информации (канал инцидентов всегда будет там, и, следовательно, идентификатор останется прежним), нам нужно взять его Идентификатор канала Анкет

Если у вас еще нет такого канала для учебника, вы можете вручную создать новый канал на самом деле. Чтобы получить его идентификатор, нажмите на стрелку вниз рядом с именем канала и нажмите на Просмотреть информацию вариант. Это покажет идентификатор канала. Затем вы можете скопировать и вставить это в Идентификатор канала Поле в узле. В разделе «Сообщение» я ввел следующее выражение, чтобы включить информацию, которую мы упомянули в списке выше.

🚨 New incident: {{$node["Webhook"].json["body"]["messages"][0]["incident"]["summary"]}}

Auxiliary Channel -> https://mattermost.internal.n8n.io/test/channels/{{$node["Mattermost"].json["name"]}}

PagerDuty Incident -> {{$node["Webhook"].json["body"]["messages"][0]["incident"]["html_url"]}}

Jira Issue -> https://n8n.atlassian.net/browse/{{$json["key"]}}

Наконец, нажмите на Выполнить узел Кнопка, чтобы отправить эту информацию в ваш канал инцидентов. Вот видео о том, как я следуя шагам, упомянутым выше.

6. Самый вещественный узел: Разместите детали и кнопки действий в вспомогательном канале

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

  1. Подтверждение: Нажатие этой кнопки изменит статус инцидента на Pagerduty с «запуска» на «признанный».
  2. Решение: Нажатие на эту кнопку изменит статус инцидента на Pagerduty с «признанного» на «решен» и отметьте билет в Джире, чтобы «сделать».

Для этого создайте новый Материал Узел и подключите его к Джира узел. Это гарантирует, что этот и предыдущий максимальный узел может работать параллельно. В редакторе узлов выберите свой Учетные данные Анкет Далее вам нужно войти в Идентификатор канала вспомогательного канала. Вы можете выполнить шаги, упомянутые в Рабочий процесс 1, шаг 3 сделать это. В Сообщение Раздел, я ввел следующее выражение (это очень похоже на сообщение из предыдущего узла):

⚠️ {{$node["Webhook"].json["body"]["messages"][0]["log_entries"][0]["incident"]["summary"]}}

PagerDuty incident: {{$node["Webhook"].json["body"]["messages"][0]["log_entries"][0]["incident"]["html_url"]}}

Jira issue: https://n8n.atlassian.net/browse/{{$json["key"]}}

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

Теперь нажмите на Добавить интеграцию кнопка. Это позволит нам дать URL -адрес веб -кнопки. Мы пока оставим это пустым.

Нам также нужно отправить подробную информацию (в следующий рабочий процесс) об инциденте Pagerduty, чтобы отметить, как разрешено, когда нажата кнопка. Для этого нажмите на Добавить контекст к интеграции кнопка под Контекст раздел. Мы введем pagerduty_incident как Имя свойства . С тех пор, как Значение свойства это динамичная информация, нажмите на Добавьте выражение Анкет В селекторе переменных выберите следующее:

Узлы> webhook> Выходные данные> json> body> Сообщения> [Пункт: 0]> Инцидент> ID

Теперь добавьте еще одну кнопку под названием Разрешение и следуя тем же шагам, упомянутым выше. Для этой кнопки нам нужно добавить контекст инцидента на пейджере и ключ от билета JIRA. Я оставлю это для вас упражнением. Для единообразия вы можете назвать Название свойства jira_key Анкет

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

Нажмите на Выполнить узел Кнопка, чтобы отправить всю эту информацию на вспомогательный канал. Вот GIF от меня, следуя шагам, упомянутым выше.

Рабочий процесс 2 — Убедитесь, что инцидент признан

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

Давайте начнем с узлов второго рабочего процесса. Я также представил Рабочий процесс 2 На n8n.io, если вы захотите пройти через этот рабочий процесс. Обратите внимание, что вам все еще нужно настроить несколько вещей, таких как ваши учетные данные, а также настройки узлов.

1. Узел Webhook: Получите данные из кнопки «Подтверждение»

Теперь нам нужно настроить узел Webhook, который слушает событие, когда кто -то нажимает на Подтвердить Кнопка в вспомогательном канале.

Создайте узел Webhook так же, как вы делали в Рабочий процесс 1, шаг 1 Анкет Теперь скопируйте ссылку Контрольная работа Webhook из этого узла Webhook, перейдите в узел из Рабочий процесс 1, шаг 6 и вставьте его в URL Поле в Интеграция Раздел кнопки подтверждения под Действия Анкет

Как только вы закончите с этим, нажмите на Выполнить узел Кнопка, чтобы зарегистрировать веб -крюк и проверить его, нажав на кнопку подтверждения в вспомогательном канале. Вот видео о том, как я следуя шагам, упомянутым выше.

2. Узел Pagerduty: Признайте инцидент на Pagerduty

Теперь нам нужно получить идентификатор инцидента из узла Webhook, чтобы узнать, какой инцидент отмечает, как признано. Мы получаем эту информацию из контекста, который мы добавили в Интеграция кнопки.

Добавить Pagerduty Узел, нажав на ‘ + ‘Кнопка с правой стороны. В представлении редактора узлов, прежде всего, вам придется войти в Учетные данные Для Pagerduty. Вот подробно Информация о том, как вы можете создать новый токен API для учетных данных. Как только вы закончите с этим, выберите «Обновление» как Операция Анкет С тех пор, как ID инцидента это динамичная информация, нажмите на Добавьте выражение и выберите следующее в селекторе переменных:

Текущий узел> Входные данные> json> body> context> pagerduty_incident

В Электронная почта Поле, я только что ввел свой адрес электронной почты. В Обновление поля Раздел, нажмите на Добавить поле кнопка и выберите Статус Анкет Из раскрывающегося списка в Статус Поле, выберите «Признанный». Теперь нажмите на Выполнить рабочий процесс кнопка. Перейдите на вспомогательный канал и нажмите на Подтвердить кнопка. Это изменит статус вашего отчета об инциденте с «вызванного» на «признанный». Вот видео о том, как я следуя шагам, упомянутым выше.

3. Самый материальный узел: подтвердите подтверждение

Теперь нам просто нужно подтвердить изменение статуса инцидента Pagerduty, отправив сообщение на вспомогательный канал. Я оставлю это для вас упражнением. Если вы столкнетесь с какими -либо неприятностями, вот я создаю этот узел.

Рабочий процесс 3 — Убедитесь, что все отмечено

Наш третий рабочий процесс будет охватывать шестой шаг из пьесы. Как только проблема была решена, мы должны убедиться, что инцидент в Pagerduty был отмечен как «решенное», а билет на Jira был отмечен как «сделанный». Мы также должны обеспечить, чтобы все в инцидентах и вспомогательном канале также знали о разрешении.

Давайте начнем с узлов третьего рабочего процесса. Узлы этого рабочего процесса остались для вас упражнением. Я добавил GIF для узлов, а также отправил Рабочий процесс 3 На n8n.io, если вы столкнетесь с любыми проблемами. Обратите внимание, что вам все еще нужно настроить несколько вещей, таких как ваши учетные данные, а также настройки узлов.

1. Узел Webhook: Получите подробности из кнопки Resolve

Как и в последнем рабочем процессе, нам нужен Webhook Узел, который слушает событие, когда кто -то нажимает на Разрешение Кнопка в вспомогательном канале. Вот видео о том, как я создаю этот узел.

2. Узел Pagerduty: Установите инцидент на Pagerduty

Теперь нам нужно изменить статус инцидента в Пагердути с «признанного» на «решен». Это очень похоже на Рабочий процесс 2, шаг 2 Анкет Вот видео о том, как я создаю этот узел.

3. Программный узел JIRA: Установите инцидент на Джире

Теперь нам нужно обновить статус билета JIRA до «DED». Вот видео о том, как я создаю этот узел.

4. Самые материальные узлы: объявить о разрешении в канале вспомогательных и инцидентов

Наконец, нам нужно создать два Материал узлы:

  1. Чтобы подтвердить в вспомогательном канале, был разрешен отчет об инциденте на Pagerduty и билете на JIRA.
  2. Чтобы объявить в канале инцидентов, что инцидент был разрешен.

Вот видео о том, как я создаю этот узел.

Поздравляю, вы успешно создали автоматический рабочий процесс реагирования на инцидент, используя N8N, Pagerduty и Matter Sost 🎉

Давайте запустим всю систему конец до конца. Прежде всего, вам придется нажать на Выполнить рабочий процесс Кнопка на всех трех рабочих процессах для регистрации узлов WebHook. Давай и начните, создав новый инцидент на Pagerduty.

Теперь, чтобы убедиться, что рабочий процесс работает навсегда без необходимости нажимать на Выполнить рабочий процесс На всех трех рабочих процессах перед каждым инцидентом нам нужно использовать Производство Webhook.

Для этого вам просто нужно получить URL -адрес с помощью производственного URL -адреса Webhook из разных узлов WebHook, обновить URL -адреса на Pagerduty и самый материальный узел от Рабочий процесс 1, шаг 6 Сохраните рабочие процессы и, наконец, активируйте рабочие процессы. Это сделает ваши рабочие процессы готовыми к использованию.

Примечание: При работе с Производство Webhook, пожалуйста, убедитесь, что вы сохранили и активировали рабочий процесс. Не забывайте, что данные, протекающие через веб -крючок, не будут видны в пользовательском интерфейсе редактора с Производство Webhook.

Вывод

Сегодня мы создали автоматический рабочий процесс, используя различные узлы N8N. Первоклассная поддержка Webhooks и API позволяет N8N интегрировать очень широкий спектр услуг и продуктов, чтобы упростить мощные рабочие процессы. Это было примером автоматизации пьесы с минималистским ответом на инцидент. Какие другие услуги вы используете для управления инцидентами в вашей организации? Если вы создали другие рабочие процессы с N8N, которые используют разные узлы, я хотел бы их проверить, пожалуйста, рассмотрите Обмен Эти рабочие процессы с сообществом.

Если вы столкнетесь с проблемой, следуя учебному пособию, не стесняйтесь обращаться ко мне в Twitter или попросить о помощи на нашем Форум 💙

Это Пост Первоначально появился на n8n.io блог Анкет

Оригинал: «https://dev.to/n8n/creating-custom-incident-response-workflows-with-n8n-38ic»