Применимость: Cloud. Названия пунктов и доступность функций зависят от версии, плана и типа проекта. Проверяйте изменения на тестовом окружении. Описанные рабочие процедуры — предлагаемый подход, а не гарантии поставщика.
Событие мониторинга как контракт
Мониторинг должен создавать задачу в Jira при сбое сервиса и обновлять её при восстановлении. Самая опасная простота — принимать произвольный JSON и непосредственно переносить из него проект, тип задачи, адрес уведомления и текст. Тогда внешняя система получает больше полномочий, чем требуется для регистрации инцидента. Начните с контракта: идентификатор события, разрешённый сервис, состояние, время наблюдения и короткая безопасная сводка. Проект, тип задачи и маршрутизацию задавайте внутри правила либо доверенной таблицы соответствий.
Опишите допустимые состояния и поведение при неизвестном сервисе. Ошибочный запрос должен попадать в контролируемую диагностику, а не создавать задачу с произвольными параметрами. Событие восстановления без ранее зарегистрированного сбоя требует отдельного решения: обычно полезнее зафиксировать несогласованность, чем создавать уже закрытый инцидент. Этот контракт согласуют владельцы мониторинга и процесса поддержки до подключения рабочего источника.
Настройте актуальную аутентификацию
Создайте Incoming webhook trigger и возьмите URL и секрет из его интерфейса. Atlassian рекомендует передавать секрет заголовком X-Automation-Webhook-Token. Не размещайте его в документации проекта, скриншотах, исходниках и открытых примерах команд. Храните значение в защищённой настройке отправителя. Сам URL также не стоит распространять без необходимости. Если интеграция поддерживает пользовательские заголовки, не переносите секрет в путь запроса ради удобства копирования.
Подготовьте процедуру смены секрета: остановка отправителя или буферизация событий, обновление значения, контрольная отправка и возобновление обработки. Генерация нового секрета делает старый недействительным, поэтому нужно учитывать все отправляющие приложения. Проверяйте актуальный endpoint в интерфейсе, особенно для давно существующих интеграций. Старый пример из внутренней инструкции не является доказательством, что адрес и модель аутентификации ещё подходят.
Проверьте входные значения до изменений
Первый этап правила должен проверять обязательные значения и разрешённые состояния. Не подставляйте входной project key или адрес получателя напрямую в действие. Для идентификатора события определите максимальную длину и допустимый формат на стороне отправителя или промежуточного обработчика. Если встроенных условий недостаточно для строгой проверки, добавьте небольшой контролируемый шлюз перед Jira. Он должен иметь собственные ограничения размера запроса и частоты, а не становиться неограниченным прокси.
В журнал записывайте идентификатор события, сервис и решение проверки. Полное тело запроса обычно не нужно. Стек ошибки мониторинга может содержать токены, персональные данные и внутренние адреса. В Jira переносите только согласованную сводку, а подробности оставляйте в системе мониторинга с нужной моделью доступа. Ссылка на подробности предпочтительнее автоматического копирования большого диагностического блока в общедоступное описание задачи.
Повторы и конкурентная обработка
Отправитель вправе повторить запрос после сетевого тайм-аута, даже если Jira уже начала обработку. Поэтому храните внешний идентификатор в отдельном поле и сначала ищите существующую задачу. Для последовательных повторов это помогает избежать дублей. Однако поиск, затем создание не образуют атомарную операцию: два одновременных запроса могут оба не найти задачу и создать её. Если строгая уникальность обязательна, обеспечьте её в промежуточном сервисе с устойчивым хранилищем и контролем конкуренции.
Для обновлений учитывайте порядок событий. Восстановление, доставленное раньше запоздавшего сбоя, не должно снова открыть закрытый инцидент без проверки времени и состояния. Зафиксируйте, какие события считаются устаревшими, и храните последний принятый номер или время, если источник гарантирует их смысл. Не используйте случайный момент получения запроса как замену времени наблюдения: задержка доставки может быть существенной.
Проверка и аварийное отключение
Проверьте запрос без секрета, с неверным секретом, пустым идентификатором, неизвестным сервисом и неподдерживаемым состоянием. Затем отправьте один корректный запрос дважды последовательно и дважды одновременно. Зафиксируйте результат отдельно: последовательная защита от дублей не доказывает безопасность гонки. Проверьте отказ Jira и восстановление отправителя, чтобы накопленные события не превратились в неконтролируемую массовую загрузку.
При утечке секрета отключите отправителя, смените секрет и проверьте журнал на неожиданную активность. При ошибке логики отключите правило, сохраните принятые идентификаторы и исправьте созданные задачи адресно. Возобновление должно учитывать уже обработанные события. Критерий приёмки — понятная обработка корректного события, контролируемый отказ для некорректного и документированное поведение повторов, а не только успешная демонстрация одного POST-запроса.
Граница ответственности отправителя и Jira
В договорённости интеграции отдельно укажите, кто ограничивает размер сообщения, хранит очередь повторов и отвечает за уникальность события. Jira-правило не должно незаметно брать на себя свойства, которых его последовательные компоненты не обеспечивают. Отправитель хранит исходное событие до подтверждённого решения по доставке, а оператор умеет найти его по идентификатору. Для массового восстановления определите скорость повторной отправки и точку остановки. Проверяйте эту процедуру на тестовом наборе, чтобы после простоя не превратить накопленную очередь в резкий поток новых инцидентов и повторных уведомлений.
Официальная документация
Применить это к вашей системе
Обсудим контекст, ограничения и безопасный порядок изменений.
Обсудить задачу