Создание снимков панелей для алертинга#

Основной сценарий:#

  • Система мониторинга (например, Grafana) фиксирует превышение порогового значения метрики, связанной с алертом.

  • Запускается триггер на генерацию снимка (snapshot) соответствующей панели или дашборда.

  • Сервер рендеринга получает задачу на создание PNG-изображения по-указанному URL панели с учетом временного диапазона, включающего момент срабатывания алерта.

  • Headless-браузер (например, Puppeteer) загружает страницу дашборда с авторизацией через API-ключ или бэкенд-прокси.

  • Ожидается полная отрисовка графиков и данных.

  • Выполняется скриншот целевой области.

  • Изображение сохраняется во временное хранилище (например, в облаке или локальной папке) с уникальным именем.

  • Ссылка на изображение встраивается в уведомление.

  • Уведомление с прикрепленным снимком отправляется через каналы связи (Email, Telegram, Slack и т.п.) ответственным специалистам.

Альтернативный сценарий:#

  • Если алерт срабатывает в цепочке с другими, создается единый сводный снимок или серия изображений для контекстного анализа.

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

  • Снимок делается не всей панели, а только ее проблемного фрагмента (например, график с аномалией).

Исключительный сценарий:#

  • Если загрузка панели не удалась (ошибка 404, 500, тайм-аут), в уведомление включается ссылка на дашборд и текст: «Снимок недоступен, см. источник».

  • При недоступности headless-браузера или сервера рендеринга — отправляется алерт без изображения с пометкой «Ошибка генерации снимка».

  • Если доступ к дашборду запрещен (ошибка 403), уведомление не отправляется, фиксируется ошибка в логе.

  • При превышении размера изображения допустимого лимита канала (например, в Slack) — изображение сжимается или заменяется ссылкой.