Environment
-
Grafana Version: v12.3.3 (Docker)
-
Image Renderer: Remote
grafana-image-rendererservice 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 tolocal) -
GF_SERVER_ROOT_URL=https://<protected-domain>/ -
GF_RENDERING_SERVER_URL=http://<internal-renderer-service>:8081/render -
GF_RENDERING_AUTH_TOKENis synchronized between Grafana and the Renderer service.
Steps Taken & Observations
-
Manual Rendering: Verified that the renderer successfully generates PNGs when requested via the UI or direct URL.
-
Contact Point: Configured with a Bot User OAuth Token (
xoxb-) and the required scopes (chat:write). -
Alert Rule: The alert rule is correctly associated with a Dashboard UID and Panel ID.
-
Nginx: Configured with
X-Forwarded-Proto $schemeto prevent mixed-content issues. -
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.