Grafana Image Renderer
Kloudfuse ships with the Grafana server. For scenarios where you want to store images from Grafana dashboards that occur from alerts, you can enable the Grafana-Image-Renderer Plugin in Grafana Server.
grafana:
imageRenderer:
enabled: true
# resources: {} # Set resource limits for image-renderer pods {}
# nodeSelector: {} # Node labels for pod assignment {}
# tolerations: [] # Toleration labels for pod assignment []
# affinity: {} # Affinity settings for pod assignment {}
# extraConfigmapMounts: [] # Additional image-renderer configMap volume mounts (values are templated) []
# extraSecretMounts: [] # Additional image-renderer secret volume mounts []
# extraVolumeMounts: [] # Additional image-renderer volume mounts []
# extraVolumes: [] # Additional image-renderer volumes []
# serviceAccountName: "" # image-renderer deployment serviceAccountName ""
Considerations
-
To use images in notifications, Grafana must be set up to use image rendering.
-
When a screenshot is taken, it is saved to the [data][paths] folder, even if Grafana is configured to upload screenshots to a cloud storage service.
-
You should use a cloud storage service unless sending alerts to Discord, email, Pushover, Slack or Telegram.
-
Image previews might not work in all instant messaging and communication platforms as some services rewrite URLs to use their CDN.
-
When uploading screenshots to a cloud storage service Grafana uses a random filename for each image.
-
Grafana does not delete screenshots from cloud storage. You need to use a storage policy
-
Grafana does not delete screenshots uploaded to its internal web server.
Limitations
Grafana creates browser instances in the background for the actual rendering. Depending on how many concurrent images are being created, this can cause performance problems. Managing and configuring this plugin can be complicated, and there are a number of things that need to be considered.
-
The plugin will need to run on its own nodes for large scale clusters
-
The images taken by the plugin will need to stored that can be accessed by users.
-
The Pod will need permissions to this storage
-
It will require additional networking configuration for accessing that shared storage.
Because of these issues, Kloudfuse cannot support this configuration in customer environments. It would need to be highly customized to individual customer environments and is outside the scope of what Kloudfuse can help with.