Использование изображений в уведомлениях
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.
Список точек контакта и их поддержку изображений в уведомлениях см. в таблице в конце этой страницы.
Требования
-
Чтобы использовать изображения в уведомлениях, Grafana OSS и Enterprise должны быть настроены на использование сервиса Grafana image renderer.
-
При создании снимка он сохраняется в папку [data][paths], даже если Grafana настроена на загрузку снимков в сервис облачного хранилища. Grafana должна иметь доступ на запись к этой папке, иначе снимки не могут быть сохранены на диск, и для каждой неудачной попытки создания снимка регистрируется ошибка.
-
Вам следует использовать сервис облачного хранилища, если только вы не отправляете оповещения в Discord, email, Pushover, Slack или Telegram. Эти интеграции поддерживают либо встраивание снимков в письмо, либо прикрепление снимков к уведомлению, тогда как другие интеграции должны ссылаться на снимки, загруженные в облачный бакет хранилища. Если сервис облачного хранилища настроен, то интеграции, поддерживающие оба варианта, вместо встраивания или прикрепления снимков к уведомлению ссылаются на снимки из облачного бакета.
-
Если вы загружаете снимки в сервис облачного хранилища, такой как Amazon S3, Azure Blob Storage или Google Cloud Storage; и доступ к снимкам в бакете требует аутентификации, входа в VPN или корпоративную сеть; то предпросмотр изображений может не работать на всех платформах мгновенных сообщений и коммуникаций, так как некоторые сервисы перезаписывают URL для использования своего CDN. Если это происходит, мы рекомендуем использовать интеграции, поддерживающие загрузку изображений, или полностью отключить изображения в уведомлениях.
-
При загрузке снимков в сервис облачного хранилища Grafana использует случайное имя файла из 20 символов (30 символов для Azure Blob Storage) для каждого изображения. Это делает URL трудно угадываемыми, но не невозможными.
-
Grafana не удаляет снимки из облачного хранилища. Мы рекомендуем настроить политику хранения в вашем сервисе облачного хранилища для удаления снимков старше 1 месяца.
-
Если Grafana настроена на загрузку снимков на свой внутренний веб-сервер, и доступ к Grafana требует входа в VPN или корпоративную сеть; предпросмотр изображений может не работать на всех платформах мгновенных сообщений и коммуникаций, так как некоторые сервисы перезаписывают URL для использования своего CDN. Если это происходит, мы рекомендуем использовать интеграции, поддерживающие загрузку изображений, или полностью отключить изображения в уведомлениях.
-
Grafana не удаляет снимки, загруженные на её внутренний веб-сервер. Чтобы удалять снимки из
static_root_path/images/attachmentsчерез определённое время, мы рекомендуем настроить задание CRON. -
Обратите внимание, что вы не можете регулировать количество и размер изображений или их размещение в уведомлениях.
Конфигурация
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, и их поддержку загрузки снимков в принимающий сервис и ссылок на снимки, загруженные в сервис облачного хранилища.
Ограничения
- Эта функция не поддерживается в Mimir или Loki, а также когда Grafana настроена на отправку оповещений в другие Alertmanager, такие как Prometheus Alertmanager.
- Эта функция не поддерживается при использовании пользовательских шаблонов в уведомлениях по email.
- Ряд точек контакта поддерживает не более одного изображения на уведомление. В этом случае только первое изображение либо загружается в принимающий сервис, либо указывается из облачного хранилища на уведомление.
- Когда в одном уведомлении отправляется несколько оповещений, снимок может быть включён для каждого оповещения. Порядок отображения изображений случаен.
- Если вы загружаете снимки в сервис облачного хранилища, такой как Amazon S3, Azure Blob Storage или Google Cloud Storage; и доступ к снимкам в бакете требует аутентификации, входа в VPN или корпоративную сеть; предпросмотр изображений может не работать на всех платформах мгновенных сообщений и коммуникаций, так как некоторые сервисы перезаписывают URL для использования своего CDN.
Устранение неполадок
Если Grafana была настроена на отправку изображений в уведомлениях, однако уведомления всё равно приходят без них, выполните следующие шаги по устранению неполадок:
- Проверьте, что изображения в уведомлениях были настроены согласно инструкциям.
- Включите журналирование в режиме отладки в Grafana и ищите журналы с логгером
ngalert.image. - Если оповещение не связано с дашбордом, есть журналы
Cannot take screenshot for alert rule as it is not associated with a dashboard. - Если оповещение связано с дашбордом, но ни одна панель в дашборде не связана, есть журналы
Cannot take screenshot for alert rule as it is not associated with a panel. - Если изображения не могут быть созданы из-за неверной конфигурации или проблемы с рендерингом изображений, есть журналы
Failed to take an image, включая Dashboard UID, Panel ID и текст ошибки. - Проверьте, поддерживает ли точка контакта изображения в уведомлениях и поддерживает ли она загрузку изображений в принимающий сервис или ссылки на изображения, загруженные в сервис облачного хранилища.
Мониторинг
Grafana предоставляет следующие метрики для наблюдения за производительностью и частотой сбоев изображений в уведомлениях.
Например, если снимок не удалось сделать в ожидаемое время (10 секунд), то счётчик grafana_screenshot_failures_total обновляется.
grafana_alerting_image_cache_hits_totalgrafana_alerting_image_cache_misses_totalgrafana_screenshot_duration_secondsgrafana_screenshot_failures_totalgrafana_screenshot_successes_totalgrafana_screenshot_upload_failures_totalgrafana_screenshot_upload_successes_total