Yandex Cloud
Поиск
Связаться с экспертомПопробовать бесплатно
  • Кейсы
  • Документация
  • Блог
  • Все сервисы
    • Cloud Interconnect
    • Cloud Backup
    • Cloud Registry
    • Yandex AI Studio
    • Compute Cloud
    • Object Storage
    • Managed Service for Kubernetes®
    • Yandex BareMetal
    • Smart Web Security
    • Security Deck
    • Managed Service for PostgreSQL
    • Managed Service for ClickHouse®
    • Monium
    • Cloud CDN
    • Network Load Balancer
    • Virtual Private Cloud
    • Cloud DNS
    • Application Load Balancer
    • Yandex Cloud Video
    • Stackland
    • Yandex Cloud Router
    • Yandex Managed Service for Trino
    • Managed Service for MySQL®
    • Managed Service for Valkey™
    • Managed Service for Apache Spark™
    • Yandex StoreDoc
    • Managed Service for OpenSearch
    • Managed Service for Apache Kafka®
    • Data Transfer
    • Yandex MPP Analytics Engine for PostgreSQL
    • Yandex Managed Service for Apache Airflow®
    • Data Processing
    • Yandex MetaData Hub
    • Managed Service for YDB
    • Managed Service for Sharded PostgreSQL
    • Managed Service for YTsaurus
    • Yandex WebSQL
    • DataLens
    • Yandex Search API
    • SpeechSense
    • SpeechKit
    • DataSphere
    • Vision OCR
    • Translate
    • Yandex Neurosupport
    • Yandex Cloud Detection and Response
    • Yandex Identity Hub
    • Key Management Service
    • Certificate Manager
    • Yandex Lockbox
    • Audit Trails
    • SmartCaptcha
    • Cloud Desktop
    • GOST Gateway
    • Yandex SIEM
    • SourceCraft Code Assistant
    • Container Registry
    • Managed Service for GitLab
    • SourceCraft
    • Managed Service for Prometheus®
    • Cloud Functions
    • API Gateway
    • Yandex Cloud Postbox
    • Message Queue
    • Serverless Integrations
    • IoT Core
    • Data Streams
    • Serverless Containers
    • Cloud Notification Service
    • Yandex Query
    • Identity and Access Management
    • Yandex Cloud Console
    • Resource Manager
    • Yandex Cloud Billing
    • Yandex Cloud Quota Manager
    • Cloud Apps
  • Статус работы сервисов
  • Marketplace
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Акции и free tier
  • Кейсы
  • Документация
  • Блог
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ООО «Яндекс.Облако»
Monium
  • Начало работы
  • Обзор
      • Создание алерта
      • Создание канала уведомлений с получателем
      • Создание канала уведомлений с вызовом функции
      • Создание webhook с вызовом внешнего API
      • Создание политики эскалаций
      • Удаление алерта
    • Мьюты
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • История изменений
  • Обучающие курсы

В этой статье:

  • Создание сервисного аккаунта
  • Создание функции
  • Создание канала
  • Создание алерта
  • Проверка вызова функции
  1. Алерты
  2. Пошаговые инструкции
  3. Создание webhook с вызовом внешнего API

Webhook с использованием Cloud Functions

Статья создана
Yandex Cloud
Обновлена 23 июля 2026 г.
Открыть в Markdown
  • Создание сервисного аккаунта
  • Создание функции
  • Создание канала
  • Создание алерта
  • Проверка вызова функции

Для автоматической обработки инцидентов и других событий в вашем облаке вы можете вызывать в Monium Metrics функции Cloud Functions. В этом разделе приведен пример настройки webhook с отправкой POST-запросов при срабатывании алерта. Таким образом при срабатывании алерта вы можете вызывать методы внешнего API. Так же можно вызывать функции Cloud Functions в эскалациях.

Чтобы отправлять POST-запросы при срабатывании алерта:

  1. Разверните сервис для обработки POST-запросов со следующими атрибутами:

    • https://my.url/route/for/alarm — URL для обработки запроса, когда алерт переходит в статус Alarm;
    • https://my.url/route/for/ok — URL для обработки запроса, когда алерт переходит в статус Ok;
    • my_secret_token — токен или файл с токеном для авторизации вызовов.

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

  2. Создайте сервисный аккаунт для вызова функции.

  3. Создайте функцию, которая отправляет POST-запросы при переходе алерта в статус Alarm и Ok.

  4. Создайте канал, который будет вызывать функцию.

  5. Создайте алерт, который будет отправлять уведомления в канал с функцией.

  6. Проверьте работу функции.

Создание сервисного аккаунтаСоздание сервисного аккаунта

Консоль управления
  1. В консоли управления выберите каталог с ресурсами, которые надо отслеживать в Monium Metrics.
  2. Перейдите в сервис Identity and Access Management.
  3. Нажмите кнопку Создать сервисный аккаунт.
  4. Введите имя сервисного аккаунта, например sa-alert-webhook.
  5. Добавьте роли functions.functionInvoker и functions.viewer.
  6. Нажмите кнопку Создать.

Создание функцииСоздание функции

Консоль управления
  1. Перейдите в сервис Cloud Functions.

  2. Нажмите кнопку Создать функцию.

  3. Введите имя функции, например alert-webhook.

  4. Нажмите кнопку Создать.

  5. Создайте версию функции:

    1. Выберите среду выполнения Python, отключите опцию Добавить файлы с примерами кода и нажмите кнопку Продолжить.

    2. Выберите способ Редактор кода.

    3. Нажмите Создать файл и введите имя файла, например index.

    4. Введите код функции, указав URL для обработки POST-запросов и токен:

      import json
      import requests
      
      WEBHOOK_ALARM_URL = "https://my.url/route/for/alarm"
      WEBHOOK_OK_URL = "https://my.url/route/for/ok"
      WEBHOOK_AUTH_TOKEN = "my_secret_token"
      
      def webhook(url, alert_id):
          headers_ = {
              "Authorization": f"OAuth {WEBHOOK_AUTH_TOKEN}",
              "Content-type": "application/json"
          }
          try:
              response = requests.post(url, headers = headers_, json = { "alert_id" : alert_id })
              if response.ok:
                  return { "status": "OK", "url": url, "response": json.dumps(response.json)}
              else:
                  return { "status": "ERROR", "url": url, "code": response.status_code, "error": response.text}
          except Exception as e:
              return { "status": "EXCEPTION", "url": url, "error": e}
          
      
      def handler(event, context):
          alert = event # сохраним event в переменную alert для удобства
          required_attributes = ["alertId", "alertStatus"] # массив с обязательными входными параметрами в формате JSON
          
          # если на вход функции не передан JSON или в нем отсутствуют нужные параметры, функция не выполняется
          if not alert or not all(attr in alert for attr in required_attributes):
              return
          
          result = None
          # если функция вызвана, когда алерт в статусе ALARM, отправляем запрос на адрес WEBHOOK_ALARM_URL
          # если функция вызвана, когда алерт в статусе OK, отправляем запрос на адрес WEBHOOK_OK_URL
          # при других статусах алерта ничего не вызываем
          if alert["alertStatus"] == "ALARM":
              result = webhook(WEBHOOK_ALARM_URL, alert["alertId"])
          elif alert["alertStatus"] == "OK":
              result = webhook(WEBHOOK_OK_URL, alert["alertId"])
          else:
              pass
          
          if not result:
              return
      
          # выводим в лог результат вызова
          if result["status"] == "OK":
              print(f"Successfully invoked {result['url']}. Response: {result['response']}")
          elif result["status"] == "ERROR":
              print(f"ERROR invoking {result['url']}. Code {result['code']}, error message: {result['error']}")
          else:
              print(f"{result['status']} when invoking {result['url']}. Error message: {result['error']}")
      
  6. В блоке Параметры задайте параметры версии:

    • Точка входа: index.handler.
    • Сервисный аккаунт: sa-alert-webhook.
  7. В блоке Дополнительные настройки:

    1. Включите Асинхронный вызов.
    2. Выберите Сервисный аккаунт sa-alert-webhook.
  8. Нажмите кнопку Сохранить изменения.

Создание каналаСоздание канала

Интерфейс Monium
  1. На главной странице Monium слева выберите Алерты и SLO → Способы уведомления.
  2. Вверху справа нажмите Создать → Канал уведомления.
  3. Введите имя канала уведомлений, например channel-function.
  4. В списке Метод выберите Cloud Functions.
  5. В списке Облачная функция выберите функцию alert-webhook.
  6. В списке Сервисный аккаунт выберите аккаунт sa-alert-webhook.
  7. Нажмите Создать.

Создание алертаСоздание алерта

Интерфейс Monium
  1. На главной странице Monium слева выберите Алерты и SLO → Алерты.
  2. Нажмите кнопку Создать.
  3. Введите имя алерта, например alert-function.
  4. Введите запрос, по которому будут выбираться метрики для отслеживания.
  5. Настройте условия срабатывания.
  6. В блоке Уведомления нажмите Редактировать и затем кнопку Добавить.
  7. Выберите канал channel-function.
  8. Нажмите кнопку Добавить.
  9. Нажмите кнопку Создать.

Проверка вызова функцииПроверка вызова функции

Консоль управления
  1. Перейдите в сервис Cloud Functions.

  2. Выберите функцию alert-webhook.

  3. Выберите вкладку Тестирование.

  4. В качестве входных данных введите:

    {
      "alertId": "<идентификатор_алерта>",
      "alertName": "alert-function",
      "folderId": "<идентификатор_каталога>",
      "alertStatus": "OK"
    }
    
  5. Нажмите кнопку Запустить тест.

  6. В логах вызова функции на вкладке Тестирование или Логи посмотрите, что запрос был отправлен на URL https://my.url/route/for/ok.

Была ли статья полезна?

Предыдущая
Создание канала уведомлений с вызовом функции
Следующая
Создание политики эскалаций
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ООО «Яндекс.Облако»