I am using Grafana 12.1.0. and newest image renderered. E-mail connection is fine, I receive test e-mails. I created test alert with test data source, but in e-mail it isn’t image. Can you please suggest what is wrong in below config of docker-compose.
version: “3.8”
services:
grafana:
image: grafana/grafana:12.1.0
container_name: grafana
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin
- GF_SMTP_ENABLED=true
- GF_SMTP_HOST=smtp.gmail.com:587
- GF_SMTP_USER=xxx@gmail.com
- GF_SMTP_PASSWORD=yyyy
- GF_SMTP_FROM_ADDRESS=xxx@gmail.com
- GF_SMTP_SKIP_VERIFY=false
- GF_RENDERING_SERVER_URL=http://renderer:8081/render
- GF_RENDERING_CALLBACK_URL=http://grafana:3000/
- GF_LOG_FILTERS=rendering:debug
- GF_ALERTING_ENABLED=true
- GF_ALERTING_RENDERING_ENABLED=true
- GF_ALERTING_RENDERING_TIMEOUT=120s
- GF_ALERTING_RENDERING_ATTEMPT_TIMEOUT=100s
ports:
- “3000:3000”
depends_on:
- renderer
volumes:
- grafana-storage:/var/lib/grafana
renderer:
image: grafana/grafana-image-renderer:latest
container_name: renderer
environment:
- ENABLE_METRICS=true
ports:
- “8081:8081”
volumes:
grafana-storage:
I have done everything from doc, you can start docker compose and check that it is not working. I don’t why.
Sorry, but you didn’t follow linked doc. For example:
Having installed either the image rendering plugin, or set up Grafana to use a remote rendering service, set capture in [unified_alerting.screenshots] to true
I have correct compose and it still not working
version: “3.8”
services:
grafana:
image: grafana/grafana:12.1.0
container_name: grafana
network_mode: host
ports:
- “3000:3000”
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin
- GF_RENDERING_SERVER_URL=http://renderer:8081/render
- GF_RENDERING_CALLBACK_URL=http://grafana:3000/
- GF_UNIFIED_ALERTING_SCREENSHOTS_CAPTURE=true
- GF_LOG_FILTERS=rendering:debug
- GF_RENDERING_RENDER_TIMEOUT=300s
- GF_RENDERING_CALLBACK_TIMEOUT=300s
- GF_SMTP_ENABLED=true
- GF_SMTP_HOST=smtp.gmail.com:587
- GF_SMTP_USER=xxx@gmail.com
- GF_SMTP_PASSWORD=yyy
- GF_SMTP_FROM_ADDRESS=xxx@gmail.com
- GF_SMTP_FROM_NAME=Grafana Szkolenie
- GF_SMTP_SKIP_VERIFY=true
volumes:
- grafana-data:/var/lib/grafana
renderer:
image: grafana/grafana-image-renderer:3.9.0
network_mode: host
container_name: renderer
ports:
- “8081:8081”
environment:
- ENABLE_METRICS=true
- RENDERING_MODE=default
- RENDERING_CLUSTERING_MODE=browser
- RENDERING_PORT=8081
restart: unless-stopped
volumes:
grafana-data:
I’m repeating, pls follow linked doc - there is section “Troubleshooting” - exactly for your case.
I did checking from troubleshooting page. In logs I found. It seems that aftre 10s server of image renderer disconnects connection. When I clik on panel share->share link after about 2-3 minutues image generates. But when alert rule try render image after 10s server disconnects. Can you please help?
logger=rendering renderer=http rule_uid=feteglu7mfpc0a org_id=1 t=2025-07-29T17:40:30.020029967Z level=debug msg=“calling remote rendering service” url=“http://renderer:8081/render?deviceScaleFactor=1.000000&domain=grafana&encoding=png&height=500&renderKey=4M3pDQvbCvk85ul4H4ZKl2FK1JDwJD8t&timeout=10&timezone=&url=http%3A%2F%2Fgrafana%3A3000%2Fd-solo%2F99d5c2aa-7f9f-4a1c-a37b-0deea1b79052%2Falerting%3ForgId%3D1%26panelId%3D1%26render%3D1&width=1000”
logger=context userId=0 orgId=1 uname= t=2025-07-29T17:40:31.401279592Z level=info msg=“Request Completed” method=GET path=/api/live/ws status=-1 remote_addr=172.17.0.2 time_ms=1 duration=1.475789ms size=0 referer= handler=/api/live/ws status_source=server
logger=rendering renderer=http rule_uid=feteglu7mfpc0a org_id=1 t=2025-07-29T17:40:40.004501338Z level=error msg=“Failed to send request to remote rendering service” error=“Get "http://renderer:8081/render?deviceScaleFactor=1.000000&domain=grafana&encoding=png&height=500&renderKey=4M3pDQvbCvk85ul4H4ZKl2FK1JDwJD8t&timeout=10&timezone=&url=http%3A%2F%2Fgrafana%3A3000%2Fd-solo%2F99d5c2aa-7f9f-4a1c-a37b-0deea1b79052%2Falerting%3ForgId%3D1%26panelId%3D1%26render%3D1&width=1000\”: context deadline exceeded"
logger=rendering renderer=http rule_uid=feteglu7mfpc0a org_id=1 t=2025-07-29T17:40:40.004594859Z level=error msg=“Failed to render image” path=“d-solo/99d5c2aa-7f9f-4a1c-a37b-0deea1b79052/alerting?orgId=1&panelId=1” error="[rendering.serverTimeout] "
logger=rendering t=2025-07-29T17:40:40.004631358Z level=error msg=“Failed to delete render key” error=“context deadline exceeded”
logger=ngalert.state.manager rule_uid=feteglu7mfpc0a org_id=1 t=2025-07-29T17:40:40.004668083Z level=warn msg=“Failed to take an image” dashboard=99d5c2aa-7f9f-4a1c-a37b-0deea1b79052 panel=1 reason=“transition to alerting” error="failed to take screenshot: [rendering.serverTimeout] "
I am sory it was just testing. Finally I used docker network.
When do image rendering from GUI in Grafana, directly from menu od panel. It is working.
logger=rendering renderer=http t=2025-07-30T06:57:25.904595286Z level=info msg=Rendering path=“d-solo/99d5c2aa-7f9f-4a1c-a37b-0deea1b79052?orgId=1&from=2025-07-30T06:42:21.756Z&to=2025-07-30T06:57:21.756Z&timezone=browser&panelId=panel-1&__feature.dashboardSceneSolo=true&width=1000&height=500&scale=1&tz=Europe%2FWarsaw” userID=1
logger=rendering renderer=http t=2025-07-30T06:57:25.909011586Z level=debug msg=“calling remote rendering service” url=“http://renderer:8081/render?deviceScaleFactor=1.000000&domain=grafana&encoding=png&height=500&renderKey=KVwVyg7fHKo5cfJ6mxFcvpJsOEVwLPjF&timeout=60&timezone=Europe%2FWarsaw&url=http%3A%2F%2Fgrafana%3A3000%2Fd-solo%2F99d5c2aa-7f9f-4a1c-a37b-0deea1b79052%3ForgId%3D1%26from%3D2025-07-30T06%3A42%3A21.756Z%26to%3D2025-07-30T06%3A57%3A21.756Z%26timezone%3Dbrowser%26panelId%3Dpanel-1%26__feature.dashboardSceneSolo%3Dtrue%26width%3D1000%26height%3D500%26scale%3D1%26tz%3DEurope%252FWarsaw%26render%3D1&width=1000”
logger=context userId=1 orgId=1 uname=admin t=2025-07-30T06:57:26.703151954Z level=info msg=“Request Completed” method=GET path=/api/live/ws status=-1 remote_addr=172.17.0.4 time_ms=1 duration=1.351308ms size=0 referer= handler=/api/live/ws status_source=server
logger=rendering renderer=http t=2025-07-30T06:58:30.889576114Z level=debug msg=“Successfully rendered image” path=“d-solo/99d5c2aa-7f9f-4a1c-a37b-0deea1b79052?orgId=1&from=2025-07-30T06:42:21.756Z&to=2025-07-30T06:57:21.756Z&timezone=browser&panelId=panel-1&__feature.dashboardSceneSolo=true&width=1000&height=500&scale=1&tz=Europe%2FWarsaw”
As you can see final result “Successfully rendered image”. But this is only in GUI of Grafana. I can download image to disk.
When I start alert I received email without image:
logger=rendering renderer=http rule_uid=feteglu7mfpc0a org_id=1 t=2025-07-30T07:06:35.015067027Z level=info msg=Rendering path=“d-solo/99d5c2aa-7f9f-4a1c-a37b-0deea1b79052/ds-test-alerting?orgId=1&panelId=1” userID=0
logger=rendering renderer=http rule_uid=feteglu7mfpc0a org_id=1 t=2025-07-30T07:06:35.020058102Z level=debug msg=“calling remote rendering service” url=“http://renderer:8081/render?deviceScaleFactor=1.000000&domain=grafana&encoding=png&height=500&renderKey=IzZFaARAABpQZmmYe2EBuLkI0tf0H6aE&timeout=10&timezone=&url=http%3A%2F%2Fgrafana%3A3000%2Fd-solo%2F99d5c2aa-7f9f-4a1c-a37b-0deea1b79052%2Fds-test-alerting%3ForgId%3D1%26panelId%3D1%26render%3D1&width=1000”
logger=rendering renderer=http rule_uid=feteglu7mfpc0a org_id=1 t=2025-07-30T07:06:45.014341276Z level=error msg=“Failed to send request to remote rendering service” error=“Get "http://renderer:8081/render?deviceScaleFactor=1.000000&domain=grafana&encoding=png&height=500&renderKey=IzZFaARAABpQZmmYe2EBuLkI0tf0H6aE&timeout=10&timezone=&url=http%3A%2F%2Fgrafana%3A3000%2Fd-solo%2F99d5c2aa-7f9f-4a1c-a37b-0deea1b79052%2Fds-test-alerting%3ForgId%3D1%26panelId%3D1%26render%3D1&width=1000\”: context deadline exceeded"
logger=rendering renderer=http rule_uid=feteglu7mfpc0a org_id=1 t=2025-07-30T07:06:45.014511446Z level=error msg=“Failed to render image” path=“d-solo/99d5c2aa-7f9f-4a1c-a37b-0deea1b79052/ds-test-alerting?orgId=1&panelId=1” error="[rendering.serverTimeout] "
logger=rendering t=2025-07-30T07:06:45.014568772Z level=error msg=“Failed to delete render key” error=“context deadline exceeded”
logger=ngalert.state.manager rule_uid=feteglu7mfpc0a org_id=1 t=2025-07-30T07:06:45.014695911Z level=warn msg=“Failed to take an image” dashboard=99d5c2aa-7f9f-4a1c-a37b-0deea1b79052 panel=1 reason=“transition to alerting” error="failed to take screenshot: [rendering.serverTimeout] "
logger=ngalert.sender.router rule_uid=feteglu7mfpc0a org_id=1 t=2025-07-30T07:06:45.0214448Z level=info msg=“Sending alerts to local notifier” count=1
After 10s I see in logs rendering.serverTimeout.
Config is fine. I have checked with curl, image is downloaded, by preparation of the image is about 70s. Grafana disconnects rendering after 10s. This is propably the case why image is not added to the email.
@Grafana team do you plan to upgrade plugin image rendering. It seems to work slowly.
You need to but more powerful pc 
Why you don’t max timeouts (of course read doc to find those config options)