添加链接 注册    登录
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
奔放的熊猫  ·  TiDB Dashboard 概况页面 | ...·  1 周前    · 
淡定的葡萄  ·  GitHub - ...·  4 天前    · 
威武的帽子  ·  Monitoring containers ...·  4 天前    · 
帅气的稀饭  ·  Docker + InfluxDB + ...·  4 天前    · 
爱笑的紫菜汤  ·  Métricas cAdvisor no ...·  昨天    · 
睿智的火柴  ·  中华人民共和国全国人民代表大会和地方各级人民 ...·  2 月前    · 
眼睛小的鞭炮  ·  中国中车 ...·  3 月前    · 
强健的南瓜  ·  如果在reportlab的表格中设置单元格自 ...·  10 月前    · 
独立的胡萝卜  ·  在Java中进行RSA加密正常工作,但在C# ...·  1 年前    · 
严肃的蜡烛  ·  “对于设置为150%的当前显示比例,Auto ...·  1 年前    · 
link管理  ›  Set up image rendering | Grafana documentation
enterprise metrics grafana
https://grafana.com/docs/grafana/latest/setup-grafana/image-rendering/
想出国的苦瓜
2 月前
Create free account Contact us

Products

LGTM+ Stack

Logs

powered by Grafana Loki

Grafana

for visualization

Traces

powered by Grafana Tempo

Metrics

powered by Grafana Mimir and Prometheus

Profiles

powered by Grafana Pyroscope

Key Capabilities

AI/ML insights

Identify anomalies and reduce toil

Contextual root cause analysis

Automated anomaly correlation

SLO management

Create SLOs and error budget alerts

Alerting

Trigger alerts from any data source

Plugins

Connect Grafana to data sources, apps, and more

Observability Solutions

Frontend Observability

Gain real user monitoring insights

Application Observability

Monitor application performance

Infrastructure observability

Ensure infrastructure health and performance

Testing

Performance & load testing

powered by Grafana k6

Synthetic Monitoring

powered by Grafana k6

IRM

Grafana IRM

Observability native incident response

Incident

Routine task automation for incidents

OnCall

Flexible on-call management

Deploy The Stack

Grafana Cloud

Fully managed

Grafana Enterprise

Self-managed

Open Source

Grafana Loki

Multi-tenant log aggregation system

Grafana

Query, visualize, and alert on data

Grafana Tempo

High-scale distributed tracing backend

Grafana Mimir

Scalable and performant metrics backend

Grafana Pyroscope

Scalable continuous profiling backend

Grafana Beyla

eBPF auto-instrumentation

Grafana Faro

Frontend application observability web SDK

Grafana Alloy

OpenTelemetry Collector distribution with Prometheus pipelines

Grafana k6

Load testing for engineering teams

Prometheus

Monitor Kubernetes and cloud native

OpenTelemetry

Instrument and collect telemetry data

Graphite

Scalable monitoring for time series data

All

Community resources

Dashboard templates

Try out and share prebuilt visualizations

Prometheus exporters

Get your metrics into Prometheus quickly

end-to-end solutions

Opinionated solutions that help you get there easier and faster

Kubernetes Monitoring

Get K8s health, performance, and cost monitoring from cluster to container

Application Observability

Monitor application performance

Frontend Observability

Gain real user monitoring insights

Incident Response & Management

Detect and respond to incidents with a simplified workflow

All monitoring and visualization solutions

monitor infrastructure

Out-of-the-box KPIs, dashboards, and alerts for observability

linux server logo
Linux
windows logo
Windows
docker logo
Docker
postgresql logo
Postgres
mysql logo
MySQL
aws logo
AWS
kafka logo
Kafka
jenkins logo
Jenkins
rabbitmq logo
RabbitMQ
mongodb logo
MongoDB
microsoft azure observability logo
Microsoft Azure
google cloud observability with grafana cloud logo
Google Cloud
All monitoring solutions

visualize any data

Instantly connect all your data sources to Grafana

mongodb logo
MongoDB
appdynamics logo
AppDynamics
oracle database logo
Oracle
gitlab logo
GitLab
jira logo
Jira
salesforce logo
Salesforce
splunk logo
Splunk
datadog logo
Datadog
new relic logo
New Relic
snowflake logo
Snowflake
All visualization solutions

Learn

Stay up to date

GrafanaCON 2025

Our annual OSS community conference

ObservabilityCON 2025 (7-9 Oct)

Our flagship observability event

New

Blog

News, releases, cool stories, and more

Observability survey report 2025

Industry insights on the state of observability

New

Benefits of Observability

New research, reports, and insights

New

Story of Grafana

10 years of Grafana

Events

Upcoming in-person and virtual events

Success stories

By use case, product, and industry

Technical learning

Documentation

All the docs

Webinars and videos

Demos, webinars, and feature tours

Tutorials

Step-by-step guides

Workshops

Free, in-person or online

Learning Journeys

Expert guidance for mastering our platform

Writers' Toolkit

Contribute to technical documentation provided by Grafana Labs

Plugin development

Visit the Grafana developer portal for tools and resources for extending Grafana with plugins.

new

Professional Services

Expert guidance and training

Join the community

Community

Join the Grafana community

new

Community forums

Ask the community for help

Community Slack

Real-time engagement

Grafana Champions

Contribute to the community

new

Community organizers

Host local meetups

new

Docs

Grafana

Grafana Mimir

Grafana Tempo

Grafana Loki

Grafana Pyroscope

Grafana Alloy

Grafana Beyla

Grafana Faro

Grafana k6

OpenTelemetry

Prometheus

Writers’ Toolkit

Grafana Cloud

Grafana Cloud k6

Cloud Provider Observability

Synthetic Monitoring

Grafana Kubernetes Monitoring

Grafana IRM

Grafana SLO

Grafana Alerting

Grafana AI

Grafana Fleet Management

Application Observability

Grafana Enterprise

Grafana Enterprise Logs

Grafana Enterprise Metrics

Grafana Enterprise Traces

Plugin catalog

Visit documentation

Get started

Get started with Grafana

Build your first dashboard

Get started with Grafana Cloud

Learning Journeys

What's new / Release notes

Grafana: 12.0
Grafana k6: 0.57
Grafana Loki: 3.5
Grafana Mimir: 2.16
Grafana Pyroscope: 1.14
Grafana Tempo: 2.8
Pricing

Help build the future of open source observability software Open positions

Check out the open source projects we support Downloads

Sign in

LGTM+ Stack

Grafana Cloud Logs

Logs

powered by Grafana Loki

Grafana

Grafana

for visualization

Grafana Cloud Traces

Traces

powered by Grafana Tempo

Grafana Cloud Metrics

Metrics

powered by Grafana Mimir and Prometheus

Grafana Cloud Profiles

Profiles

powered by Grafana Pyroscope

Key Capabilities

AI/ML

AI/ML insights

Identify anomalies and reduce toil

Grafana Cloud Asserts

Contextual root cause analysis

Automated anomaly correlation

Grafana SLO

SLO management

Create SLOs and error budget alerts

Grafana Alerting

Alerting

Trigger alerts from any data source

Plugins

Plugins

Connect Grafana to data sources, apps, and more

Observability Solutions

Frontend Observability

Frontend Observability

Gain real user monitoring insights

Application Observability

Application Observability

Monitor application performance

Infrastructure Observability

Infrastructure observability

Ensure infrastructure health and performance

Testing

Grafana Cloud k6

Performance & load testing

powered by Grafana k6

Synthetic Monitoring

Synthetic Monitoring

powered by Grafana k6

IRM

Grafana Cloud IRM

Grafana IRM

Observability native incident response

Incident

Incident

Routine task automation for incidents

OnCall

OnCall

Flexible on-call management

Deploy The Stack

Grafana Cloud

Grafana Cloud

Fully managed

Grafana

Grafana Enterprise

Self-managed

The actually useful free plan
  • Grafana, of course
  • 14 day retention
  • 10k series Prometheus metrics
  • 500 VUh k6 testing
  • 50 GB logs, traces, and profiles
  • 50k frontend sessions
  • 2,232 app o11y host hours
  • 2,232 k8s monitoring host hours
  • 37,944 k8s monitoring container hours
  • and more cool stuff
Create free account No credit card needed, ever.
Grafana Cloud Logs

Grafana Loki

Multi-tenant log aggregation system

Grafana

Grafana

Query, visualize, and alert on data

Grafana Cloud Traces

Grafana Tempo

High-scale distributed tracing backend

Grafana Cloud Metrics

Grafana Mimir

Scalable and performant metrics backend

Grafana Cloud Profiles

Grafana Pyroscope

Scalable continuous profiling backend

Grafana Beyla

eBPF auto-instrumentation

Grafana Faro

Grafana Faro

Frontend application observability web SDK

Grafana Alloy

Grafana Alloy

OpenTelemetry Collector distribution with Prometheus pipelines

Grafana Cloud k6

Grafana k6

Load testing for engineering teams

Prometheus

Prometheus

Monitor Kubernetes and cloud native

OpenTelemetry

OpenTelemetry

Instrument and collect telemetry data

Graphite

Graphite

Scalable monitoring for time series data

All

Community resources

Dashboard templates
Try out and share prebuilt visualizations
Prometheus exporters
Get your metrics into Prometheus quickly

end-to-end solutions

Opinionated solutions that help you get there easier and faster

Kubernetes Monitoring

Kubernetes Monitoring

Get K8s health, performance, and cost monitoring from cluster to container

Application Observability

Application Observability

Monitor application performance

Frontend Observability

Frontend Observability

Gain real user monitoring insights

Incident Response & Management

Incident Response & Management

Detect and respond to incidents with a simplified workflow

monitor infrastructure

Out-of-the-box KPIs, dashboards, and alerts for observability

linux server logo Linux
windows logo Windows
docker logo Docker
postgresql logo Postgres
mysql logo MySQL
aws logo Kafka
jenkins logo Jenkins
rabbitmq logo RabbitMQ
mongodb logo MongoDB
microsoft azure observability logo Microsoft Azure
google cloud observability with grafana cloud logo Google Cloud

visualize any data

Instantly connect all your data sources to Grafana

mongodb logo MongoDB
appdynamics logo AppDynamics
oracle database logo Oracle
gitlab logo GitLab
jira logo Salesforce
splunk logo Splunk
datadog logo Datadog
new relic logo New Relic
snowflake logo Snowflake
All monitoring and visualization solutions

Stay up to date

GrafanaCON 2025

Our annual OSS community conference

ObservabilityCON 2025 (7-9 Oct)

Our flagship observability event

New

Blog

News, releases, cool stories, and more

Observability survey report 2025

Industry insights on the state of observability

New

Benefits of Observability

New research, reports, and insights

New

Story of Grafana

10 years of Grafana

Events

Upcoming in-person and virtual events

Success stories

By use case, product, and industry

Technical learning

Documentation

All the docs

Webinars and videos

Demos, webinars, and feature tours

Tutorials

Step-by-step guides

Workshops

Free, in-person or online

Learning Journeys

Expert guidance for mastering our platform

Writers' Toolkit

Contribute to technical documentation provided by Grafana Labs

Plugin development

Visit the Grafana developer portal for tools and resources for extending Grafana with plugins.

new

Professional Services

Expert guidance and training

Join the community

Community

Join the Grafana community

new

Community forums

Ask the community for help

Community Slack

Real-time engagement

Grafana Champions

Contribute to the community

new

Community organizers

Host local meetups

new

Featured

Getting started with grafana LGTM stack

Getting started with managing your metrics, logs, and traces using Grafana

Learn how to unify, correlate, and visualize data with dashboards using Grafana.

Learn more →

Open source

Grafana

Grafana

Grafana Cloud Metrics

Grafana Mimir

Grafana Cloud Traces

Grafana Tempo

Grafana Cloud Logs

Grafana Loki

Grafana Cloud Profiles

Grafana Pyroscope

Grafana Alloy

Grafana Alloy

Grafana Beyla

Grafana Faro

Grafana Faro

Grafana Cloud k6

Grafana k6

OpenTelemetry

OpenTelemetry

Prometheus

Prometheus

Writers Toolkit

Writers’ Toolkit

Cloud

Grafana Cloud

Grafana Cloud

Grafana Cloud k6

Grafana Cloud k6

Grafana Cloud Provider

Cloud Provider Observability

Synthetic Monitoring

Synthetic Monitoring

Kubernetes monitoring

Grafana Kubernetes Monitoring

OnCall

Grafana IRM

Grafana SLO

Grafana SLO

Grafana Alerting

Grafana Alerting

AI/ML

Grafana AI

Grafana Alloy

Grafana Fleet Management

Application Observability

Application Observability

Enterprise

Grafana

Grafana Enterprise

Grafana Cloud Logs

Grafana Enterprise Logs

Grafana Cloud Metrics

Grafana Enterprise Metrics

Grafana Cloud Traces

Grafana Enterprise Traces

Plugins Community

Plugin catalog

Visit documentation

Get started

Get started with Grafana

Build your first dashboard

Get started with Grafana Cloud

Learning Journeys

What's new / Release notes

Grafana: 12.0
Grafana k6: 0.57
Grafana Loki: 3.5
Grafana Mimir: 2.16
Grafana Pyroscope: 1.14
Grafana Tempo: 2.8
Technical documentation Plugin catalog
Choose a product
Viewing: v12.0 (latest) Find another version
  • Grafana documentation
    • What's new in Grafana v12.0
    • What's new in Grafana v11.6
    • What's new in Grafana v11.5
    • What's new in Grafana v11.4
    • What's new in Grafana v11.3
    • What's new in Grafana v11.2
    • What's new in Grafana v11.1
    • What's new in Grafana v11.0
    • What's new in Grafana v10.4
    • What's new in Grafana v10.3
    • What's new in Grafana v10.2
    • What's new in Grafana v10.1
    • What's new in Grafana v10.0
    • What's new in Grafana v9.5
    • What's new in Grafana v9.4
    • What's new in Grafana v9.3
    • What's new in Grafana v9.2
    • Breaking changes in Grafana v11.0
    • Breaking changes in Grafana v10.3
    • Breaking changes in Grafana v10.0
    • Upgrade strategies
    • Upgrade to v12.0
    • Upgrade to v11.6
    • Upgrade to v11.5
    • Upgrade to v11.4
    • Upgrade to v11.3
    • Upgrade to v11.2
    • Upgrade to v11.1
    • Upgrade to v11.0
    • Upgrade to v10.4
    • Upgrade to v10.3
    • Upgrade to v10.2
    • Upgrade to v10.1
    • Upgrade to v10.0
    • Upgrade to v9.5
    • Upgrade to v9.4
    • Upgrade to v9.3
    • Upgrade to v9.2
    • Upgrade to v9.1
    • Upgrade to v9.0
    • Upgrade to v8.5
    • Upgrade to v8.4
    • Upgrade to v8.3
    • Upgrade to v8.2
    • Upgrade to v8.1
    • Upgrade to v8.0
    • Grafana Enterprise
    • Grafana Cloud
    • What is Prometheus?
    • Dashboard overview
    • Introduction to time series
    • Time series dimensions
    • Histograms and heatmaps
    • Exemplars
    • Glossary
    • Build your first dashboard
    • Get started with Grafana and Prometheus
    • Get started with Grafana and InfluxDB
    • Get started with Grafana and MS SQL Server
      • Debian or Ubuntu
      • RHEL or Fedora
      • SUSE or openSUSE
      • Grafana Docker image
      • Grafana on Kubernetes
      • Grafana on Helm Charts
      • macOS
      • Windows
      • Configure Grafana Enterprise
      • Configure feature toggles
      • Configure profiling and tracing
      • Configure custom branding
      • Settings updates at runtime
      • Configure data source proxy
    • Start Grafana
    • Sign in to Grafana
      • Plan your IAM integration strategy
        • Basic auth
        • Passwordless
        • Anonymous access
        • LDAP
        • LDAP user interface
        • Enhanced LDAP
          • SAML user interface
          • SAML configuration options
          • Configure SAML signing and encryption
          • Configure Role and Team sync for SAML
          • Configure Organisation mapping for SAML
          • Configure SAML single logout
          • Configure SAML with Entra ID
          • Configure SAML with Okta
          • Troubleshooting
        • Generic OAuth
        • Azure AD/Entra ID OAuth
        • GitHub OAuth
        • GitLab OAuth
        • Google OAuth
        • Grafana Cloud OAuth2
        • Keycloak OAuth2
        • Multiple providers with Keycloak
        • Okta OIDC
        • Auth proxy
        • JWT
        • Manage users and teams with SCIM
        • Configure SCIM with Azure AD
        • Configure SCIM with Okta
        • Encrypt database secrets using Google Cloud KMS
        • Encrypt database secrets using Hashicorp Vault
        • Encrypt database secrets using AWS KMS
        • Encrypt database secrets using Azure Key Vault
        • Integrate Grafana with Hashicorp Vault
      • Audit a Grafana instance
      • Export logs of usage insights
      • Configure secret scanning
      • Configure Team Sync
      • Configure request security
      • Configure security hardening
    • Set up Grafana monitoring
    • Set up HA
    • Set up HTTPS
      • Monitor the image renderer
      • Troubleshooting
    • Set up Grafana Live
    • Configure a Docker image
    • Back up Grafana
        • Configure LBAC for data sources for Loki
        • Configure LBAC for data sources for Prometheus
        • Create LBAC for data sources rules for a supported data source
      • Configure Grafana Teams
      • Administer Grafana Teams
    • Manage organizations
        • Assign or remove Grafana server administrator privileges
        • Add or remove a user in an organization
        • Change a user's organization permissions
      • Manage user preferences
      • Manage users in an organization
      • Manage dashboard permissions
    • Grafana Advisor
    • Recorded queries
        • Plan your RBAC rollout strategy
        • Configure RBAC
        • Assign RBAC roles
        • Manage RBAC roles
        • Provisioning RBAC with Grafana
        • Provisioning RBAC with Terraform
        • RBAC role definitions
        • RBAC permissions, actions, and scopes
        • RBAC for app plugins
        • Troubleshooting RBAC
    • View server statistics and license
        • Activate a Grafana Enterprise license from AWS Marketplace on EKS
        • Activate a Grafana Enterprise license from AWS Marketplace on ECS
        • Activate a Grafana Enterprise license from AWS on an instance deployed outside of AWS
        • Manage your Grafana Enterprise license in AWS Marketplace
        • Transfer your AWS Marketplace Grafana Enterprise license
    • Organization preferences
      • Customize navigation placement of plugin pages
    • Provision Grafana
      • Migrate API keys
      • Correlation
      • Permissions
      • Add permissions
      • Create a new correlation
      • Use variables and transformations in a correlation
      • Use correlations in visualizations
    • Announcement banner
      • Manually migrate to Grafana Cloud
      • Migrate to Grafana Cloud using the Grafana Cloud Migration Assistant
    • Alertmanager
      • AWS authentication
      • Query editor
      • Template variables
      • Query editor
      • Template variables
      • Configure Elasticsearch
      • Query editor
      • Template variables
      • Authentication
      • Query editor
      • Template variables
      • Configure
      • Query editor
      • Template variables
      • Configure the InfluxDB data source
      • Query editor
      • Template variables
      • Configure Loki
      • Query editor
      • Template variables
    • Jaeger
      • Query editor
      • Template variables
      • Configure the MySQL data source
      • MySQL query editor
    • OpenTSDB
    • Parca
      • Configure the PostgreSQL data source
      • PostgreSQL query editor
      • Configure Prometheus
      • Query editor
      • Template variables
      • Configure Pyroscope
      • How profiling and tracing work together
      • Configure traces to profiles
      • Query profile data
      • Configure Tempo
      • Best practices
        • Link to a trace ID
        • Upload JSON trace file
        • Trace correlations
        • TraceQL query structure
        • Search traces
        • Write TraceQL queries
      • Service Graph and Service Graph view
      • Span filters
    • TestData
    • Zipkin
    • Use dashboards
      • Create a dashboard
      • Import dashboards
      • Modify dashboard settings
      • Manage dashboard links
      • Dashboard URL variables
      • Manage library panels
      • Manage version history
      • Annotate visualizations
      • JSON model
      • Best practices
    • Manage dashboards
    • Search dashboards
    • Manage playlists
      • Settings
      • Shared dashboards
      • Add variables
      • Inspect variables
      • Variable syntax
    • Assess dashboard usage
    • Troubleshoot dashboards
      • Time series
      • Alert list
      • Annotations list
      • Bar chart
      • Bar gauge
      • Candlestick
      • Canvas
      • Dashboard list
      • Datagrid
      • Flame graph
      • Gauge
      • Geomap
      • Heatmap
      • Histogram
      • Logs
      • News
      • Node graph
      • Pie chart
      • Stat
      • State timeline
      • Status history
      • Table
      • Text
      • Traces
      • Trend
      • XY chart
    • Panel overview
    • Panel editor
    • The panel inspect view
      • Write expression queries
      • SQL expressions
      • Share query results
      • Transform data
      • Troubleshoot queries
      • Calculation types
    • Configure panel options
    • Configure standard options
    • Configure a legend
    • Configure tooltips
    • Configure data links and actions
    • Configure value mappings
    • Configure thresholds
    • Configure field overrides
  • Search
    • Get started with Explore
    • Query management in Explore
    • Query inspector in Explore
    • Correlations Editor in Explore
    • Logs in Explore
    • Traces in Explore
        • Access or Install
        • Get started
        • Labels and Fields
        • Log patterns
        • Viewing JSON logs
        • Sorting and ordering
        • Troubleshooting
          • Profile settings
          • What is profiling?
          • Continuous profiling
          • Understand profiling types
          • Flame graphs
        • Get started
        • Determine your use case
        • Choose a view
          • Use Flame graph AI
        • Access or install
          • Traces and telemetry
          • Trace structure
          • Tempo architecture
          • Glossary
        • Get started
          • Choose span data
          • Choose a RED metric
          • Analyze tracing data
          • Add filters
          • View exemplars
        • UI reference
        • Metrics and telemetry
        • Get started
        • Drill down your metrics
        • Investigations
        • Start investigations
        • Compare time ranges
    • Get started with Observability as Code
      • Install Grafana CLI
      • Set up Grafana CLI
      • Manage resources with Grafana CLI
      • annotations schema
      • PanelKind schema
      • LibraryPanelKind schema
      • layout schema
      • links schema
      • timesettings schema
      • variables schema
      • Automate dashboard provisioning with CI/CD
      • Git Sync
      • Set up Git Sync
      • Set up file provisioning
      • Work with provisioned dashboards
      • Manage repositories
        • Queries and conditions
        • Labels and annotations
        • State and health of alerts
        • Stale alert instances
        • Contact points
        • Notification policies
        • Grouping
      • Templates
      • Configure Grafana-managed alert rules
      • Configure data source-managed alert rules
      • Create and link alert rules to panels
        • Create Grafana-managed recording rules
        • Create data source-managed recording rules
        • Template reference
        • Examples
        • Template language
        • API alert rules import
        • Amazon SNS
        • Discord
        • Email
        • Google Chat
        • Grafana IRM
        • Jira
        • Microsoft Teams
        • MQTT
        • Opsgenie
        • PagerDuty
        • Slack
        • Telegram
        • Webhook
      • Configure notification policies
      • Configure mute timings
      • Configure silences
        • Manage templates
        • Template reference
        • Examples
        • Template language
        • Use images
      • View alert rules
      • View alert state
      • View alert state history
      • View active notifications
      • Declare incidents from firing alerts
      • Configure roles and permissions
        • Manage access using roles
        • Manage access using folders or data sources
      • Configure Alertmanagers
      • Configure alert state history
        • Use configuration files to provision
        • Use Terraform to provision
        • Export alerting resources
        • Use the HTTP API to manage alerting resources
      • Configure high availability
      • Meta monitoring
      • Performance considerations and limitations
      • Handle connectivity errors
      • Handle missing data
      • Examples of multi-dimensional alerts
      • Examples of table data
      • Examples of dynamic thresholds
      • Examples of dynamic labels
      • Tutorials
    • Send panel to support
    • Send a support bundle to support
      • Authentication
        • API Tutorial: Create Service Account tokens and dashboards for an organization
        • cURL examples
      • Admin HTTP API
      • Alerting Provisioning HTTP API
      • Annotations HTTP API
      • Correlations HTTP API
      • Dashboard HTTP API
      • Dashboard Permissions HTTP API
      • Dashboard Versions HTTP API
      • Data source HTTP API
      • Datasource LBAC rules HTTP API
      • Datasource Permissions HTTP API
      • Folder HTTP API
      • Folder Permissions HTTP API
      • Folder/Dashboard Search HTTP API
      • Library Element HTTP API
      • Licensing HTTP API
      • New API Structure
      • Organization HTTP API
      • Other HTTP API
      • Playlist HTTP API
      • Preferences API
      • Query and Resource Caching HTTP API
      • Query History HTTP API
      • RBAC HTTP API
      • Reporting API
      • Service account HTTP API
      • Shared Dashboards HTTP API
      • Short URL HTTP API
      • Snapshot API
      • SSO Settings API
      • Team HTTP API
      • Team Sync HTTP API
      • User HTTP API
    • Contribute to Grafana
    • Contributor License Agreement (CLA)
    • Enterprise Open source

      Set up image rendering

      Grafana supports automatic rendering of panels as PNG images. This allows Grafana to automatically generate images of your panels to include in alert notifications, PDF export , and Reporting . PDF Export and Reporting are available only in Grafana Enterprise and Grafana Cloud .

      While an image is being rendered, the PNG image is temporarily written to the file system. When the image is rendered, the PNG image is temporarily written to the png folder in the Grafana data folder.

      A background job runs every 10 minutes and removes temporary images. You can configure how long an image should be stored before being removed by configuring the temp_data_lifetime setting.

      You can also render a PNG by hovering over the panel to display the actions menu in the top-right corner, and then clicking Share > Share link . The Render image option is displayed in the link settings.

      Alerting and render limits

      Alert notifications can include images, but rendering many images at the same time can overload the server where the renderer is running. For instructions of how to configure this, see max_concurrent_screenshots .

      Install Grafana Image Renderer plugin

      Note

      All PhantomJS support has been removed. Instead, use the Grafana Image Renderer plugin or remote rendering service.

      To install the plugin, refer to the Grafana Image Renderer Installation instructions .

      Memory requirements

      Rendering images requires a lot of memory, mainly because Grafana creates browser instances in the background for the actual rendering. Grafana recommends a minimum of 16GB of free memory on the system rendering images.

      Rendering multiple images in parallel requires an even bigger memory footprint. You can use the remote rendering service in order to render images on a remote system, so your local system resources are not affected.

      Configuration

      The Grafana Image Renderer plugin has a number of configuration options that are used in plugin or remote rendering modes.

      In plugin mode, you can specify them directly in the Grafana configuration file .

      In remote rendering mode, you can specify them in a .json configuration file or, for some of them, you can override the configuration defaults using environment variables.

      Configuration file

      You can update your settings by using a configuration file, see default.json for defaults. Note that any configured environment variable takes precedence over configuration file settings.

      You can volume mount your custom configuration file when starting the docker container:

      bash Copy
      docker run -d --name=renderer --network=host -v /some/path/config.json:/usr/src/app/config.json grafana/grafana-image-renderer:latest

      You can see a docker-compose example using a custom configuration file here .

      Security

      Note

      This feature is available in Image Renderer v3.6.1 and later.

      You can restrict access to the rendering endpoint by specifying a secret token. The token should be configured in the Grafana configuration file and the renderer configuration file. This token is important when you run the plugin in remote rendering mode.

      Renderer versions v3.6.1 or later require a Grafana version with this feature. These include:

      • Grafana v9.1.2 or later
      • Grafana v9.0.8 or later patch releases
      • Grafana v8.5.11 or later patch releases
      • Grafana v8.4.11 or later patch releases
      • Grafana v8.3.11 or later patch releases
      bash Copy
      AUTH_TOKEN=-
      json Copy
      {
        "service": {
          "security": {
            "authToken": "-"
      }

      See Grafana configuration for how to configure the token in Grafana.

      Rendering mode

      You can instruct how headless browser instances are created by configuring a rendering mode. Default is default , other supported values are clustered and reusable .

      Default

      Default mode will create a new browser instance on each request. When handling multiple concurrent requests, this mode increases memory usage as it will launch multiple browsers at the same time. If you want to set a maximum number of browser to open, you’ll need to use the clustered mode .

      Note

      When using the default mode, it’s recommended to not remove the default Chromium flag --disable-gpu . When receiving a lot of concurrent requests, not using this flag can cause Puppeteer newPage function to freeze, causing request timeouts and leaving browsers open.

      bash Copy
      RENDERING_MODE=default
      json Copy
      {
        "rendering": {
          "mode": "default"
      }

      Clustered

      With the clustered mode, you can configure how many browser instances or incognito pages can execute concurrently. Default is browser and will ensure a maximum amount of browser instances can execute concurrently. Mode context will ensure a maximum amount of incognito pages can execute concurrently. You can also configure the maximum concurrency allowed, which per default is 5 , and the maximum duration of a rendering request, which per default is 30 seconds.

      Using a cluster of incognito pages is more performant and consumes less CPU and memory than a cluster of browsers. However, if one page crashes it can bring down the entire browser with it (making all the rendering requests happening at the same time fail). Also, each page isn’t guaranteed to be totally clean (cookies and storage might bleed-through as seen here ).

      bash Copy
      RENDERING_MODE=clustered
      RENDERING_CLUSTERING_MODE=browser
      RENDERING_CLUSTERING_MAX_CONCURRENCY=5
      RENDERING_CLUSTERING_TIMEOUT=30
      json Copy
      {
        "rendering": {
          "mode": "clustered",
          "clustering": {
            "mode": "browser",
            "maxConcurrency": 5,
            "timeout": 30
      }

      Reusable (experimental)

      When using the rendering mode reusable , one browser instance will be created and reused. A new incognito page will be opened for each request. This mode is experimental since, if the browser instance crashes, it will not automatically be restarted. You can achieve a similar behavior using clustered mode with a high maxConcurrency setting.

      bash Copy
      RENDERING_MODE=reusable
      json Copy
      {
        "rendering": {
          "mode": "reusable"
      }

      Optimize the performance, CPU and memory usage of the image renderer

      The performance and resources consumption of the different modes depend a lot on the number of concurrent requests your service is handling. To understand how many concurrent requests your service is handling, monitor your image renderer service .

      With no concurrent requests, the different modes show very similar performance and CPU / memory usage.

      When handling concurrent requests, we see the following trends:

      • To improve performance and reduce CPU and memory consumption, use clustered mode with RENDERING_CLUSTERING_MODE set as context . This parallelizes incognito pages instead of browsers.
      • If you use the clustered mode with a maxConcurrency setting below your average number of concurrent requests, performance will drop as the rendering requests will need to wait for the other to finish before getting access to an incognito page / browser.

      To achieve better performance, monitor the machine on which your service is running. If you don’t have enough memory and / or CPU, every rendering step will be slower than usual, increasing the duration of every rendering request.

      Other available settings

      Note

      Please note that not all settings are available using environment variables. If there is no example using environment variable below, it means that you need to update the configuration file.

      HTTP host

      Change the listening host of the HTTP server. Default is unset and will use the local host.

      bash Copy
      HTTP_HOST=localhost
      json Copy
      {
        "service": {
          "host": "localhost"
      }

      HTTP port

      Change the listening port of the HTTP server. Default is 8081 . Setting 0 will automatically assign a port not in use.

      bash Copy
      HTTP_PORT=0
      json Copy
      {
        "service": {
          "port": 0
      }

      HTTP protocol

      Note

      HTTPS protocol is supported in the image renderer v3.11.0 and later.

      Change the protocol of the server, it can be http or https . Default is http .

      bash Copy
      HTTP_PROTOCOL=https
      json Copy
      {
        "service": {
          "protocol": "https"
      }

      HTTPS certificate and key file

      Path to the image renderer certificate and key file used to start an HTTPS server.

      bash Copy
      HTTP_CERT_FILE=./path/to/cert
      HTTP_CERT_KEY=./path/to/key
      json Copy
      {
        "service": {
          "certFile": "./path/to/cert",
          "certKey": "./path/to/key"
      }

      HTTPS min TLS version

      Minimum TLS version allowed. Accepted values are: TLSv1.2 , TLSv1.3 . Default is TLSv1.2 .

      bash Copy
      HTTP_MIN_TLS_VERSION=TLSv1.2
      json Copy
      {
        "service": {
          "minTLSVersion": "TLSv1.2"
      }

      Enable Prometheus metrics

      You can enable Prometheus metrics endpoint /metrics using the environment variable ENABLE_METRICS . Node.js and render request duration metrics are included, see Enable Prometheus metrics endpoint for details.

      Default is false .

      bash Copy
      ENABLE_METRICS=true
      json Copy
      {
        "service": {
          "metrics": {
            "enabled": true,
            "collectDefaultMetrics": true,
            "requestDurationBuckets": [1, 5, 7, 9, 11, 13, 15, 20, 30]
      }

      Enable detailed timing metrics

      With the Prometheus metrics enabled , you can also enable detailed metrics to get the duration of every rendering step.

      Default is false .

      bash Copy
      # Available from v3.9.0+
      RENDERING_TIMING_METRICS=true
      json Copy
      {
        "rendering": {
          "timingMetrics": true
      }

      Log level

      Change the log level. Default is info and will include log messages with level error , warning and info .

      bash Copy
      LOG_LEVEL=debug
      json Copy
      {
        "service": {
          "logging": {
            "level": "debug",
            "console": {
              "json": false,
              "colorize": true
      }

      Verbose logging

      Instruct headless browser instance whether to capture and log verbose information when rendering an image. Default is false and will only capture and log error messages. When enabled ( true ) debug messages are captured and logged as well.

      Note that you need to change log level to debug , see above, for the verbose information to be included in the logs.

      bash Copy
      RENDERING_VERBOSE_LOGGING=true
      json Copy
      {
        "rendering": {
          "verboseLogging": true
      }

      Capture browser output

      Instruct headless browser instance whether to output its debug and error messages into running process of remote rendering service. Default is false . This can be useful to enable ( true ) when troubleshooting.

      bash Copy
      RENDERING_DUMPIO=true
      json Copy
      {
        "rendering": {
          "dumpio": true
      }

      Tracing

      Note

      Tracing is supported in the image renderer v3.12.6 and later.

      Set the tracing URL to enable OpenTelemetry Tracing. The default is empty (disabled). You can also configure the service name that will be set in the traces. The default is grafana-image-renderer .

      bash Copy
      RENDERING_TRACING_URL="http://localhost:4318/v1/traces"
      json Copy
      {
        "rendering": {
          "tracing": {
            "url": "http://localhost:4318/v1/traces",
            "serviceName": "grafana-renderer"
      }

      Custom Chrome/Chromium

      If you already have Chrome or Chromium installed on your system, then you can use this instead of the pre-packaged version of Chromium.

      Note

      Please note that this is not recommended, since you may encounter problems if the installed version of Chrome/Chromium is not compatible with the Grafana Image renderer plugin .

      You need to make sure that the Chrome/Chromium executable is available for the Grafana/image rendering service process.

      bash Copy
      CHROME_BIN="/usr/bin/chromium-browser"
      json Copy
      {
        "rendering": {
          "chromeBin": "/usr/bin/chromium-browser"
      }

      Start browser with additional arguments

      Additional arguments to pass to the headless browser instance. Defaults are --no-sandbox,--disable-gpu . The list of Chromium flags can be found here and the list of flags used as defaults by Puppeteer can be found there . Multiple arguments is separated with comma-character.

      bash Copy
      RENDERING_ARGS=--no-sandbox,--disable-setuid-sandbox,--disable-dev-shm-usage,--disable-accelerated-2d-canvas,--disable-gpu,--window-size=1280x758
      json Copy
      {
        "rendering": {
          "args": [
            "--no-sandbox",
            "--disable-setuid-sandbox",
            "--disable-dev-shm-usage",
            "--disable-accelerated-2d-canvas",
            "--disable-gpu",
            "--window-size=1280x758"
      }

      Ignore HTTPS errors

      Instruct headless browser instance whether to ignore HTTPS errors during navigation. Per default HTTPS errors are not ignored. Due to the security risk it’s not recommended to ignore HTTPS errors.

      bash Copy
      IGNORE_HTTPS_ERRORS=true
      json Copy
      {
        "rendering": {
          "ignoresHttpsErrors": true
      }

      Default timezone

      Instruct headless browser instance to use a default timezone when not provided by Grafana, .e.g. when rendering panel image of alert. See ICU’s metaZones.txt for a list of supported timezone IDs. Fallbacks to TZ environment variable if not set.

      bash Copy
      BROWSER_TZ=Europe/Stockholm
      json Copy
      {
        "rendering": {
          "timezone": "Europe/Stockholm"
      }

      Default language

      Instruct headless browser instance to use a default language when not provided by Grafana, e.g. when rendering panel image of alert. Refer to the HTTP header Accept-Language to understand how to format this value.

      bash Copy
      # Available from v3.9.0+
      RENDERING_LANGUAGE="fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5"
      json Copy
      {
        "rendering": {
          "acceptLanguage": "fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5"
      }

      Viewport width

      Default viewport width when width is not specified in the rendering request. Default is 1000 .

      bash Copy
      # Available from v3.9.0+
      RENDERING_VIEWPORT_WIDTH=1000
      json Copy
      {
        "rendering": {
          "width": 1000
      }

      Viewport height

      Default viewport height when height is not specified in the rendering request. Default is 500 .

      bash Copy
      # Available from v3.9.0+
      RENDERING_VIEWPORT_HEIGHT=500
      json Copy
      {
        "rendering": {
          "height": 500
      }

      Viewport maximum width

      Limit the maximum viewport width that can be requested. Default is 3000 .

      bash Copy
      # Available from v3.9.0+
      RENDERING_VIEWPORT_MAX_WIDTH=1000
      json Copy
      {
        "rendering": {
          "maxWidth": 1000
      }

      Viewport maximum height

      Limit the maximum viewport height that can be requested. Default is 3000 .

      bash Copy
      # Available from v3.9.0+
      RENDERING_VIEWPORT_MAX_HEIGHT=500
      json Copy
      {
        "rendering": {
          "maxHeight": 500
      }

      Device scale factor

      Specify default device scale factor for rendering images. 2 is enough for monitor resolutions, 4 would be better for printed material. Setting a higher value affects performance and memory. Default is 1 . This can be overridden in the rendering request.

      bash Copy
      # Available from v3.9.0+
      RENDERING_VIEWPORT_DEVICE_SCALE_FACTOR=2
      json Copy
      {
        "rendering": {
          "deviceScaleFactor": 2
      }

      Maximum device scale factor

      Limit the maximum device scale factor that can be requested. Default is 4 .

      bash Copy
      # Available from v3.9.0+
      RENDERING_VIEWPORT_MAX_DEVICE_SCALE_FACTOR=4
      json Copy
      {
        "rendering": {
          "maxDeviceScaleFactor": 4
      }

      Page zoom level

      The following command sets a page zoom level. The default value is 1 . A value of 1.5 equals 150% zoom.

      bash Copy
      RENDERING_VIEWPORT_PAGE_ZOOM_LEVEL=1
      json Copy
      {
        "rendering": {
          "pageZoomLevel": 1
      }

      Was this page helpful?

      Suggest an edit in GitHub
      Create a GitHub issue
      Email [email protected]
      Help and support
      Community

      Related resources from Grafana Labs

      Additional helpful documentation, links, and articles:
      video icon
      60 min
      Getting started with managing your metrics, logs, and traces using Grafana
      Getting started with managing your metrics, logs, and traces using Grafana
      In this webinar, we’ll demo how to get started using the LGTM Stack: Loki for logs, Grafana for visualization, Tempo for traces, and Mimir for metrics.
      video icon
      60 min
      Getting started with Grafana dashboard design
      Getting started with Grafana dashboard design
      In this webinar, you'll learn how to design stylish and easily accessible Grafana dashboards that tell a story.
      webinar icon
      30 Jul
      Building advanced Grafana dashboards
      Building advanced Grafana dashboards
      In this webinar, we’ll demo how to build and format Grafana dashboards.

      Is this page helpful?

      On this page
      • Alerting and render limits
      • Install Grafana Image Renderer plugin
      • Memory requirements
      • Configuration
      • Configuration file
      • Security
      • Rendering mode
      • Other available settings
      Scroll for more
      Sign up for Grafana stack updates
      Note: By signing up, you agree to be emailed related product-level information.

 
推荐文章
奔放的熊猫  ·  TiDB Dashboard 概况页面 | TiDB 文档中心
1 周前
淡定的葡萄  ·  GitHub - LMacPhail/zabbix-history-influxdb: A loadable module for zabbix which will export history d
4 天前
威武的帽子  ·  Monitoring containers using Glances and Grafana - Tinkering - Roon Labs Community
4 天前
帅气的稀饭  ·  Docker + InfluxDB + Telegraf + Grafana - Installation - openHAB Community
4 天前
爱笑的紫菜汤  ·  Métricas cAdvisor no Kubernetes com Prometheus e Grafana - DEV Community
昨天
睿智的火柴  ·  中华人民共和国全国人民代表大会和地方各级人民代表大会选举法-
2 月前
眼睛小的鞭炮  ·  中国中车 齐车集团沈阳公司地铁工程车将服务沈阳地铁二号线南延线建设
3 月前
强健的南瓜  ·  如果在reportlab的表格中设置单元格自动换行 - CSDN文库
10 月前
独立的胡萝卜  ·  在Java中进行RSA加密正常工作,但在C#中进行加密却无法正常工作。
1 年前
严肃的蜡烛  ·  “对于设置为150%的当前显示比例,AutoCAD需要1536×1152或者更高分辨率”? - 知乎
1 年前
Link管理   ·   Sov5搜索   ·   小百科
link管理 - 链接快照平台