Use images in notifications Grafana 12

Environment

  • Grafana Version: v12.3.3 (Docker)

  • Image Renderer: Remote grafana-image-renderer service in a separate container

  • Deployment: Nginx reverse proxy with SSL termination

Problem Description

Automated screenshots are not being attached to Slack notifications when an alert fires. While manual rendering via “Direct link rendered image” works perfectly (confirming the renderer service and network connectivity are healthy), the Alerting system fails to include these images in the actual notifications.

Current Configuration

The following environment variables are active and verified in Administration > Settings:

  • GF_UNIFIED_ALERTING_SCREENSHOTS_CAPTURE=true

  • GF_UNIFIED_ALERTING_SCREENSHOTS_UPLOAD_EXTERNAL_IMAGE_STORAGE=true (Provider set to local)

  • GF_SERVER_ROOT_URL=https://<protected-domain>/

  • GF_RENDERING_SERVER_URL=http://<internal-renderer-service>:8081/render

  • GF_RENDERING_AUTH_TOKEN is synchronized between Grafana and the Renderer service.

Steps Taken & Observations

  1. Manual Rendering: Verified that the renderer successfully generates PNGs when requested via the UI or direct URL.

  2. Contact Point: Configured with a Bot User OAuth Token (xoxb-) and the required scopes ( chat:write).

  3. Alert Rule: The alert rule is correctly associated with a Dashboard UID and Panel ID.

  4. Nginx: Configured with X-Forwarded-Proto $scheme to prevent mixed-content issues.

  5. Symptoms: Alerts are delivered to the Slack channel instantly, but they contain only text and links, with no image attachments or previews.

Expected Behavior

When an alert fires, Grafana should trigger the remote renderer, capture the panel screenshot, and upload/attach the file to the Slack notification as per the configured contact point.