grafana

Application

grafana/grafana

Open-source observability and data visualization platform for metrics, logs, and traces.

Overview

Grafana allows querying, visualizing, and alerting on metrics, logs, and traces from multiple data sources. It provides dynamic dashboards, explore features for ad-hoc analysis, and a powerful alerting engine. The platform supports plugins for extensibility.

README Preview

\n\n\nThe open-source platform for monitoring and observability\n\n[](LICENSE)\n[](https://goreportcard.com/report/github.com/grafana/grafana)\n\nGrafana allows you to query, visualize, alert on and understand your metrics no matter where they are stored. Create, explore, and share dashboards with your team and foster a data-driven culture:\n\n- **Visualizations:** Fast and flexible client side graphs with a multitude of options. Panel plugins offer many different ways to visualize metrics and logs.\n- **Dynamic Dashboards:** Create dynamic & reusable dashboards with template variables that appear as dropdowns at the top of the dashboard.\n- **Explore Metrics:** Explore your data through ad-hoc queries and dynamic drilldown. Split view and compare different time ranges, queries and data sources side by side.\n- **Explore Logs:** Experience the magic of switching from metrics to logs with preserved label filters. Quickly search through all your logs or streaming them live.\n- **Alerting:** Visually define alert rules for your most important metrics. Grafana will continuously evaluate and send notifications to systems like Slack, PagerDuty, VictorOps, OpsGenie.\n- **Mixed Data Sources:** Mix different data sources in the same graph! You can specify a data source on a per-query basis. This works for even custom datasources.\n\n## Get started\n\n- [Get Grafana](https://grafana.com/get)\n- [Installation guides](https://grafana.com/docs/grafana/latest/setup-grafana/installation/)\n\nUnsure if Grafana is for you? Watch Grafana in action on [play.grafana.org](https://play.grafana.org/)!\n\n## Documentation\n\nThe Grafana documentation is available at [grafana.com/docs](https://grafana.com/docs/).\n\n## Contributing\n\nIf you're interested in contributing to the Grafana project:\n\n- Start by reading the [Contributing guide](https://github.com/grafana/grafana/blob/HEAD/CONTRIBUTING.md).\n- Learn how to set up your local environment, in our [Developer guide](https://github.co

FAQ (4)

Troubleshooting
How do I fix Signal Explorer showing "Unknown type" for metrics such as `*_total` when metadata is missing?

Upgrade to a Grafana/Cloud release containing the PR "Explore: Infer metric type from its name in the Signal Explorer when metadata is missing." The fix applies metric-name heuristics before falling back to **Unknown type**; for example, grafanacloud_instance_discarded_attributed_samples_total is identified as a counter because of its _total suffix. When backporting, reuse the logic from grafana/metrics-drilldown: src/shared/GmdVizPanel/matchers/getMetricType.ts and src/shared/GmdVizPanel/matchers/isCounterMetric.ts (verify current paths on main; the issue references commit 97ec532).

GitHub Issue #132821
Troubleshooting
How can I see the full label value in Signal Explorer when it is truncated?

This was fixed by adding hover tooltips to truncated label keys and values in the Signal Explorer rail. Upgrade to a release containing the PR "Signal Explorer: Reveal full label keys and values on hover," then hover over the truncated label to view its full text. In older versions, there is no in-product workaround other than obtaining a build with this fix.

GitHub Issue #132822
Troubleshooting
Why do Grafana singlestat panels with gauges enabled migrate to stat instead of gauge after an upgrade?

The automatic migration maps every singlestat and grafana-singlestat-panel to stat, ignoring the old gauge.show setting. Fix the panel-type selection in public/app/features/dashboard/state/PanelModel.ts inside restoreModel() before assigning the migrated type:

let newType = getPanelPluginToMigrateTo(this);

if (this.type === 'singlestat' || this.type === 'grafana-singlestat-panel') {
  if ((this as any).gauge?.show) {
    newType = 'gauge';
  } else {
    newType = 'stat';
  }
}

if (newType) {
  this.autoMigrateFrom = this.type;
  this.type = newType;
}

This preserves the previous v24 behavior: panels with gauge.show === true migrate to gauge; all other singlestat panels migrate to stat. Add a regression test that runs the migration against a legacy singlestat dashboard with gauge.show: true and verifies the resulting panel type is gauge.

GitHub Issue #112236
how_to
How do I sort a Grafana table by multiple columns using the Sort by transformation?

Use a single **Sort by** transformation and add multiple fields to it. In the panel, go to **Transformations → Add transformation → Sort by**, add the first field, then add additional fields. Drag the fields into priority order: the first field is the primary sort, and each later field breaks ties from the previous one. Set ascending/descending order separately for each field. Do not stack multiple separate Sort by transformations, because each one re-sorts the full dataset and does not preserve the previous ordering. If your Grafana UI only allows one sort field, upgrade to a release that includes the multi-field Sort by transformation PR.

GitHub Issue #77141