Использование изображений в уведомлениях

Note

Пользователи Grafana Cloud могут запросить эту функцию, открыв обращение в службу поддержки в Cloud Portal.

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

Note

Эта функция не поддерживается в Mimir или Loki, а также когда Grafana настроена на отправку оповещений в другие Alertmanager, такие как Prometheus Alertmanager.

Когда оповещение срабатывает или разрешается, Grafana делает снимок панели, связанной с оповещением. Это определяется через аннотации Dashboard UID и Panel ID правила. Grafana не может сделать снимок для оповещений, не связанных с панелью.

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

После создания снимка Grafana может либо загрузить его в сервис облачного хранилища, такой как Amazon S3, Azure Blob Storage или Google Cloud Storage; загрузить снимок на свой внутренний веб-сервер; либо загрузить его в сервис, получающий уведомление, например Slack. Какой вариант выбрать, зависит от того, как управляется ваша Grafana и какие интеграции вы используете. Дополнительную информацию об этом см. в разделе Requirements.

Список точек контакта и их поддержку изображений в уведомлениях см. в таблице в конце этой страницы.

Требования

  1. Чтобы использовать изображения в уведомлениях, Grafana OSS и Enterprise должны быть настроены на использование сервиса Grafana image renderer.

  2. При создании снимка он сохраняется в папку [data][paths], даже если Grafana настроена на загрузку снимков в сервис облачного хранилища. Grafana должна иметь доступ на запись к этой папке, иначе снимки не могут быть сохранены на диск, и для каждой неудачной попытки создания снимка регистрируется ошибка.

  3. Вам следует использовать сервис облачного хранилища, если только вы не отправляете оповещения в Discord, email, Pushover, Slack или Telegram. Эти интеграции поддерживают либо встраивание снимков в письмо, либо прикрепление снимков к уведомлению, тогда как другие интеграции должны ссылаться на снимки, загруженные в облачный бакет хранилища. Если сервис облачного хранилища настроен, то интеграции, поддерживающие оба варианта, вместо встраивания или прикрепления снимков к уведомлению ссылаются на снимки из облачного бакета.

  4. Если вы загружаете снимки в сервис облачного хранилища, такой как Amazon S3, Azure Blob Storage или Google Cloud Storage; и доступ к снимкам в бакете требует аутентификации, входа в VPN или корпоративную сеть; то предпросмотр изображений может не работать на всех платформах мгновенных сообщений и коммуникаций, так как некоторые сервисы перезаписывают URL для использования своего CDN. Если это происходит, мы рекомендуем использовать интеграции, поддерживающие загрузку изображений, или полностью отключить изображения в уведомлениях.

  5. При загрузке снимков в сервис облачного хранилища Grafana использует случайное имя файла из 20 символов (30 символов для Azure Blob Storage) для каждого изображения. Это делает URL трудно угадываемыми, но не невозможными.

  6. Grafana не удаляет снимки из облачного хранилища. Мы рекомендуем настроить политику хранения в вашем сервисе облачного хранилища для удаления снимков старше 1 месяца.

  7. Если Grafana настроена на загрузку снимков на свой внутренний веб-сервер, и доступ к Grafana требует входа в VPN или корпоративную сеть; предпросмотр изображений может не работать на всех платформах мгновенных сообщений и коммуникаций, так как некоторые сервисы перезаписывают URL для использования своего CDN. Если это происходит, мы рекомендуем использовать интеграции, поддерживающие загрузку изображений, или полностью отключить изображения в уведомлениях.

  8. Grafana не удаляет снимки, загруженные на её внутренний веб-сервер. Чтобы удалять снимки из static_root_path/images/attachments через определённое время, мы рекомендуем настроить задание CRON.

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

Конфигурация

Note

Пользователи Grafana Cloud могут запросить эту функцию, открыв обращение в службу поддержки в Cloud Portal.

Настроив Grafana на использование сервиса image renderer, установите capture в [unified_alerting.screenshots] в true:

# Enable screenshots in notifications. You must have either installed the Grafana image rendering
# plugin, or set up Grafana to use a remote rendering service.
# For more information on configuration options, refer to [rendering].
capture = false

Если снимки должны загружаться в облачное хранилище, то upload_external_image_storage также следует установить в true:

# Uploads screenshots to the local Grafana server or remote storage such as Azure, S3 and GCS. Please
# see [external_image_storage] for further configuration options. If this option is false, screenshots
# are persisted to disk for up to temp_data_lifetime.
upload_external_image_storage = false

Перезапустите Grafana, чтобы изменения вступили в силу.

Расширенная конфигурация

Мы рекомендуем, чтобы max_concurrent_screenshots был меньше или равен concurrent_render_request_limit. Значение по умолчанию и для max_concurrent_screenshots, и для concurrent_render_request_limit — 5:

# The maximum number of screenshots that can be taken at the same time. This option is different from
# concurrent_render_request_limit as max_concurrent_screenshots sets the number of concurrent screenshots
# that can be taken at the same time for all firing alerts where as concurrent_render_request_limit sets
# the total number of concurrent screenshots across all Grafana services.
max_concurrent_screenshots = 5

Поддерживаемые точки контакта

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

Имя Загрузка с диска Ссылка из облачного хранилища
DingDing Нет Нет
Discord Да (максимум 10 на уведомление) Да (максимум 10 на уведомление)
Email Да (встроено в письмо) Да
Google Chat Нет Да
Kafka Нет Нет
Line Нет Нет
MQTT Нет Нет
Microsoft Teams Нет Да
Opsgenie Нет Да
PagerDuty Нет Да
Prometheus Alertmanager Нет Нет
Pushover Да (максимум 1 на уведомление) Нет
Sensu Go Нет Нет
Slack Да (при использовании Bot tokens, максимум 5 на уведомление) Да (при использовании webhooks, максимум 1 на уведомление)
Telegram Да Нет
Threema Нет Нет
VictorOps Нет Нет
Webhook Нет Да

Ограничения

  • Эта функция не поддерживается в Mimir или Loki, а также когда Grafana настроена на отправку оповещений в другие Alertmanager, такие как Prometheus Alertmanager.
  • Эта функция не поддерживается при использовании пользовательских шаблонов в уведомлениях по email.
  • Ряд точек контакта поддерживает не более одного изображения на уведомление. В этом случае только первое изображение либо загружается в принимающий сервис, либо указывается из облачного хранилища на уведомление.
  • Когда в одном уведомлении отправляется несколько оповещений, снимок может быть включён для каждого оповещения. Порядок отображения изображений случаен.
  • Если вы загружаете снимки в сервис облачного хранилища, такой как Amazon S3, Azure Blob Storage или Google Cloud Storage; и доступ к снимкам в бакете требует аутентификации, входа в VPN или корпоративную сеть; предпросмотр изображений может не работать на всех платформах мгновенных сообщений и коммуникаций, так как некоторые сервисы перезаписывают URL для использования своего CDN.

Устранение неполадок

Если Grafana была настроена на отправку изображений в уведомлениях, однако уведомления всё равно приходят без них, выполните следующие шаги по устранению неполадок:

  1. Проверьте, что изображения в уведомлениях были настроены согласно инструкциям.
  2. Включите журналирование в режиме отладки в Grafana и ищите журналы с логгером ngalert.image.
  3. Если оповещение не связано с дашбордом, есть журналы Cannot take screenshot for alert rule as it is not associated with a dashboard.
  4. Если оповещение связано с дашбордом, но ни одна панель в дашборде не связана, есть журналы Cannot take screenshot for alert rule as it is not associated with a panel.
  5. Если изображения не могут быть созданы из-за неверной конфигурации или проблемы с рендерингом изображений, есть журналы Failed to take an image, включая Dashboard UID, Panel ID и текст ошибки.
  6. Проверьте, поддерживает ли точка контакта изображения в уведомлениях и поддерживает ли она загрузку изображений в принимающий сервис или ссылки на изображения, загруженные в сервис облачного хранилища.

Мониторинг

Grafana предоставляет следующие метрики для наблюдения за производительностью и частотой сбоев изображений в уведомлениях. Например, если снимок не удалось сделать в ожидаемое время (10 секунд), то счётчик grafana_screenshot_failures_total обновляется.

  • grafana_alerting_image_cache_hits_total
  • grafana_alerting_image_cache_misses_total
  • grafana_screenshot_duration_seconds
  • grafana_screenshot_failures_total
  • grafana_screenshot_successes_total
  • grafana_screenshot_upload_failures_total
  • grafana_screenshot_upload_successes_total