instruction: How do you set up a complete Prometheus monitoring stack?
output: Grafana dashboard best practices | Grafana documentation Path: Copied! Products Open Source Solutions Learn Docs Pricing Downloads Contact us Sign in Create free account Contact us Products All 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 All 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 Solutions All 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 Windows Docker Postgres MySQL AWS Kafka Jenkins RabbitMQ MongoDB Microsoft Azure Google Cloud All monitoring solutions visualize any data Instantly connect all your data sources to Grafana MongoDB AppDynamics Oracle GitLab Jira Salesforce Splunk Datadog New Relic Snowflake All visualization solutions Learn All Learn Stay up to date ObservabilityCON 2025 (7-9 Oct) Our flagship observability event New GrafanaCON 2025 Our annual OSS community conference 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 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 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 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 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 monitor infrastructure Out-of-the-box KPIs, dashboards, and alerts for observability Linux Windows Docker Postgres MySQL AWS Kafka Jenkins RabbitMQ MongoDB Microsoft Azure Google Cloud visualize any data Instantly connect all your data sources to Grafana MongoDB AppDynamics Oracle GitLab Jira Salesforce Splunk Datadog New Relic Snowflake All monitoring and visualization solutions Stay up to date ObservabilityCON 2025 (7-9 Oct) Our flagship observability event New GrafanaCON 2025 Our annual OSS community conference 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 managing your metrics, logs, and traces using Grafana Learn how to unify, correlate, and visualize data with dashboards using Grafana. Learn more → Site search Ask Grot AI init()"> Menu Technical documentation Plugin catalog Choose a product Cloud Alerting Application Observability Asserts Cloud Provider Observability Drilldown apps Fleet Management Frontend Observability IRM k6 Performance Testing Kubernetes Monitoring Logs AI and Machine Learning Metrics Profiles SLO Synthetic Monitoring Traces Grafana Enterprise Alerting Drilldown apps Helm Charts Logs Metrics Traces Alerting Alloy Beyla Drilldown apps Faro Grafana Helm Charts k6 k6 Studio Loki Mimir OnCall OpenTelemetry Pyroscope Tempo Viewing: v12.1 (latest) Find another version Grafana documentation What's new What's new in Grafana v12.1 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 Breaking changes in Grafana v11.0 Breaking changes in Grafana v10.3 Breaking changes in Grafana v10.0 Upgrade Grafana Upgrade strategies Upgrade to v12.1 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 About Grafana Grafana Enterprise Grafana Cloud Introduction What is Prometheus? Dashboard overview Introduction to time series Time series dimensions Histograms and heatmaps Exemplars Glossary Get started with Grafana Open Source Build your first dashboard Get started with Grafana and Prometheus Get started with Grafana and InfluxDB Get started with Grafana and MS SQL Server Set up Install Grafana Debian or Ubuntu RHEL or Fedora SUSE or openSUSE Grafana Docker image Grafana on Kubernetes Grafana on Helm Charts macOS Windows Configure Grafana 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 Configure security Plan your IAM integration strategy Configure authentication Basic auth Passwordless Anonymous access LDAP LDAP user interface Enhanced LDAP SAML 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 Configure SCIM provisioning Manage users and teams with SCIM Configure SCIM with Azure AD Configure SCIM with Okta Configure database encryption 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 Set up image rendering Monitor the image renderer Troubleshooting Set up Grafana Live Configure a Docker image Administration Back up Grafana Data source management Label Based Access Control (LBAC) for data sources 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 Grafana Teams Configure Grafana Teams Administer Grafana Teams Manage organizations User management Server user management 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 Roles and permissions Role-based access control (RBAC) 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 Grafana Enterprise license Activate a Grafana Enterprise license purchased through AWS Marketplace 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 Plugin management Customize navigation placement of plugin pages Provision Grafana Service accounts Migrate API keys Correlations Correlation Permissions Add permissions Create a new correlation Use variables and transformations in a correlation Use correlations in visualizations Announcement banner Migrate from Grafana OSS/Enterprise to Grafana Cloud Manually migrate to Grafana Cloud Migrate to Grafana Cloud using the Grafana Cloud Migration Assistant Data sources Alertmanager Amazon CloudWatch AWS authentication Query editor Template variables Azure Monitor Query editor Template variables Elasticsearch Configure Elasticsearch Query editor Template variables Google Cloud Monitoring Authentication Query editor Template variables Graphite Configure Query editor Template variables InfluxDB Configure the InfluxDB data source Query editor Template variables Loki Configure Loki Query editor Template variables Jaeger Microsoft SQL Server Configure Query editor Template variables MySQL Configure the MySQL data source MySQL query editor OpenTSDB Parca PostgreSQL Configure Query editor Prometheus Configure the Prometheus data source Prometheus query editor Prometheus template variables Pyroscope Configure Pyroscope How profiling and tracing work together Configure traces to profiles Query profile data Tempo Configure Tempo Best practices Use traces in Grafana Link to a trace ID Upload JSON trace file Trace correlations Query tracing data TraceQL query structure Search traces Write TraceQL queries Service Graph and Service Graph view Span filters TestData Zipkin Dashboards Use dashboards Build 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 Reporting Settings Sharing Shared dashboards Variables Add variables Inspect variables Variable syntax Assess dashboard usage Troubleshoot dashboards Panels and visualizations Visualizations 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 Query and transform data 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 Explore Get started with Explore Query management in Explore Query inspector in Explore Correlations Editor in Explore Logs in Explore Traces in Explore Simplified exploration Logs Drilldown Access or Install Get started Labels and Fields Log patterns Viewing JSON logs Sorting and ordering Troubleshooting Profiles Drilldown Access or install Profile settings Concepts What is profiling? Continuous profiling Understand profiling types Flame graphs Get started Determine your use case Choose a view Investigate trends and spikes Use Flame graph AI Traces Drilldown Access or install Concepts Traces and telemetry Trace structure Visualize data Glossary Get started Investigate trends and spikes Choose span data Choose a RED metric Analyze tracing data Add filters View exemplars UI reference Metrics Drilldown Metrics and telemetry Get started Drill down your metrics Investigations app Investigations Start investigations Compare time ranges Observability as Code Get started with Observability as Code Grafana CLI Install Grafana CLI Set up Grafana CLI Manage resources with Grafana CLI JSON schema v2 annotations schema PanelKind schema LibraryPanelKind schema layout schema links schema timesettings schema variables schema Foundation SDK Automate dashboard provisioning with CI/CD Provision resources and sync dashboards Git Sync Set up Git Sync Set up file provisioning Work with provisioned dashboards Manage repositories Alerting Introduction Alert rules Queries and conditions Labels and annotations Alert rule evaluation No Data and Error states Stale alert instances Alert rule state and health Evaluation within a group Notifications Contact points Notification policies Grouping Templates Configure alert rules Configure Grafana-managed alert rules Create and link alert rules to panels Import to Grafana-managed rules Configure data source-managed alert rules Create recording rules Create Grafana-managed recording rules Create data source-managed recording rules Migrate recorded queries Template annotations and labels Template reference Examples Template language Configure notifications Configure contact points Alertmanager 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 Template notifications Manage templates Template reference Examples Template language Use images Monitor alerts View alert rules View alert state View alert state history View active notifications Declare incidents from firing alerts Additional configuration Configure roles and permissions Configure RBAC Manage access using roles Manage access using folders or data sources Configure Alertmanagers Configure alert state history Provision Alerting resources 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 Best Practices Handle connectivity errors Handle missing data Examples of multi-dimensional alerts Examples of table data Examples of dynamic thresholds Examples of dynamic labels Tutorials Troubleshooting Send panel to support Send a support bundle to support Generate a HAR capture Developers HTTP API Authentication Examples 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) Angular support deprecation Plugins using AngularJS Grafana server CLI Release notes Copyright notice Scroll for more Documentation Grafana documentation Dashboards Build dashboards Best practices Grafana Cloud Enterprise Open source Grafana dashboard best practices This section provides information about best practices for intermediate Grafana administrators and users about how to build and maintain Grafana dashboards. For more information about the different kinds of dashboards you can create, refer to Grafana dashboards: A complete guide to all the different types you can build . Common observability strategies When you have a lot to monitor, like a server farm, you need a strategy to decide what is important enough to monitor. This page describes several common methods for choosing what to monitor. A logical strategy allows you to make uniform dashboards and scale your observability platform more easily. Guidelines for usage The USE method tells you how happy your machines are, the RED method tells you how happy your users are. USE reports on causes of issues. RED reports on user experience and is more likely to report symptoms of problems. The best practice of alerting is to alert on symptoms rather than causes, so alerting should be done on RED dashboards. USE method USE stands for: Utilization - Percent time the resource is busy, such as node CPU usage Saturation - Amount of work a resource has to do, often queue length or node load Errors - Count of error events This method is best for hardware resources in infrastructure, such as CPU, memory, and network devices. For more information, refer to The USE Method . RED method RED stands for: Rate - Requests per second Errors - Number of requests that are failing Duration - Amount of time these requests take, distribution of latency measurements This method is most applicable to services, especially a microservices environment. For each of your services, instrument the code to expose these metrics for each component. RED dashboards are good for alerting and SLAs. A well-designed RED dashboard is a proxy for user experience. For more information, refer to Tom Wilkie&rsquo;s blog post The RED method: How to instrument your services . The Four Golden Signals According to the Google SRE handbook , if you can only measure four metrics of your user-facing system, focus on these four. This method is similar to the RED method, but it includes saturation. Latency - Time taken to serve a request Traffic - How much demand is placed on your system Errors - Rate of requests that are failing Saturation - How &ldquo;full&rdquo; your system is Give it a try using Grafana Play With Grafana Play, you can explore and see how it works, learning from practical examples to accelerate your development. This feature can be seen on The Four Golden Signals . Try it Dashboard management maturity model Dashboard management maturity refers to how well-designed and efficient your dashboard ecosystem is. It&rsquo;s recommended that you periodically review your dashboard setup to gauge where you are and how you can improve. Broadly speaking, dashboard maturity can be defined as low, medium, or high. Much of the content for this topic was taken from the KubeCon 2019 talk Fool-Proof Kubernetes Dashboards for Sleep-Deprived Oncalls . Low - default state At this stage, you have no coherent dashboard management strategy. Almost everyone starts here. How can you tell you are here? Everyone can modify your dashboards. Lots of copied dashboards, little to no dashboard reuse. One-off dashboards that hang around forever. No version control (dashboard JSON in version control). Lots of browsing for dashboards, searching for the right dashboard. This means lots of wasted time trying to find the dashboard you need. Not having any alerts to direct you to the right dashboard. Medium - methodical dashboards At this stage, you are starting to manage your dashboard use with methodical dashboards. You might have laid out a strategy, but there are some things you could improve. How can you tell you are here? Prevent sprawl by using template variables. For example, you don&rsquo;t need a separate dashboard for each node, you can use query variables. Even better, you can make the data source a template variable too, so you can reuse the same dashboard across different clusters and monitoring backends. Refer to the list of Variable examples if you want some ideas. Methodical dashboards according to an observability strategy . Hierarchical dashboards with drill-downs to the next level. Example of using drill-down Dashboard design reflects service hierarchies. The example shown below uses the RED method (request and error rate on the left, latency duration on the right) with one row per service. The row order reflects the data flow. Example of a service hierarchy Compare like to like: split service dashboards when the magnitude differs. Make sure aggregated metrics don&rsquo;t drown out important information. Expressive charts with meaningful use of color and normalizing axes where you can. Example of meaningful color: Blue means it&rsquo;s good, red means it&rsquo;s bad. Thresholds can help with that. Example of normalizing axes: When comparing CPU usage, measure by percentage rather than raw number, because machines can have a different number of cores. Normalizing CPU usage by the number of cores reduces cognitive load because the viewer can trust that at 100% all cores are being used, without having to know the number of CPUs. Directed browsing cuts down on &ldquo;guessing.&rdquo; Template variables make it harder to &ldquo;just browse&rdquo; randomly or aimlessly. Most dashboards should be linked to by alerts. Browsing is directed with links. For more information, refer to Manage dashboard links . Version-controlled dashboard JSON. High - optimized use At this stage, you have optimized your dashboard management use with a consistent and thoughtful strategy. It requires maintenance, but the results are worth it. Actively reducing sprawl. Regularly review existing dashboards to make sure they are still relevant. Only approved dashboards added to master dashboard list. Tracking dashboard use. If you&rsquo;re an Enterprise user, you can take advantage of Usage insights . Consistency by design. Use scripting libraries to generate dashboards, ensure consistency in pattern and style. grafonnet (Jsonnet) grafanalib (Python) No editing in the browser. Dashboard viewers change views with variables. Browsing for dashboards is the exception, not the rule. Perform experimentation and testing in a separate Grafana instance dedicated to that purpose, not your production instance. When a dashboard in the test environment is proven useful, then add that dashboard to your main Grafana instance. Best practices for creating dashboards This page outlines some best practices to follow when creating Grafana dashboards. Before you begin Here are some principles to consider before you create a dashboard. A dashboard should tell a story or answer a question What story are you trying to tell with your dashboard? Try to create a logical progression of data, such as large to small or general to specific. What is the goal for this dashboard? (Hint: If the dashboard doesn&rsquo;t have a goal, then ask yourself if you really need the dashboard.) Keep your graphs simple and focused on answering the question that you are asking. For example, if your question is &ldquo;which servers are in trouble?&rdquo;, then maybe you don&rsquo;t need to show all the server data. Just show data for the ones in trouble. Dashboards should reduce cognitive load, not add to it Cognitive load is basically how hard you need to think about something in order to figure it out. Make your dashboard easy to interpret. Other users and future you (when you&rsquo;re trying to figure out what broke at 2 AM) will appreciate it. Ask yourself: Can I tell what exactly each graph represents? Is it obvious, or do I have to think about it? If I show this to someone else, how long will it take them to figure it out? Will they get lost? Have a monitoring strategy It&rsquo;s easy to make new dashboards. It&rsquo;s harder to optimize dashboard creation and adhere to a plan, but it&rsquo;s worth it. This strategy should govern both your overall dashboard scheme and enforce consistency in individual dashboard design. Refer to Common observability strategies and Dashboard management maturity levels for more information. Write it down Once you have a strategy or design guidelines, write them down to help maintain consistency over time. Check out this Wikimedia runbook example . Best practices to follow When creating a new dashboard, make sure it has a meaningful name. If you are creating a dashboard to play or experiment, then put the word TEST or TMP in the name. Consider including your name or initials in the dashboard name or as a tag so that people know who owns the dashboard. Remove temporary experiment dashboards when you are done with them. If you create many related dashboards, think about how to cross-reference them for easy navigation. Refer to Best practices for managing dashboards for more information. Grafana retrieves data from a data source. A basic understanding of data sources in general and your specific is important. Avoid unnecessary dashboard refreshing to reduce the load on the network or backend. For example, if your data changes every hour, then you don&rsquo;t need to set the dashboard refresh rate to 30 seconds. Use the left and right Y-axes when displaying time series with different units or ranges. Add documentation to dashboards and panels. To add documentation to a dashboard, add a Text panel visualization to the dashboard. Record things like the purpose of the dashboard, useful resource links, and any instructions users might need to interact with the dashboard. Check out this Wikimedia example . To add documentation to a panel, edit the panel settings and add a description. Any text you add appears if you hover your cursor over the small i in the top left corner of the panel. Reuse your dashboards and enforce consistency by using templates and variables . Be careful with stacking graph data. The visualizations can be misleading, and hide important data. It&rsquo;s recommended that you turn it off in most cases. Best practices for managing dashboards This page outlines some best practices to follow when managing Grafana dashboards. Before you begin Here are some principles to consider before you start managing dashboards. Strategic observability There are several common observability strategies . You should research them and decide whether one of them works for you or if you want to come up with your own. Either way, have a plan, write it down, and stick to it. Adapt your strategy to changing needs as necessary. Maturity level What is your dashboard maturity level? Analyze your current dashboard setup and compare it to the Dashboard management maturity model . Understanding where you are can help you decide how to get to where you want to be. Best practices to follow Avoid dashboard sprawl, meaning the uncontrolled growth of dashboards. Dashboard sprawl negatively affects time to find the right dashboard. Duplicating dashboards and changing &ldquo;one thing&rdquo; (worse: keeping original tags) is the easiest kind of sprawl. Periodically review the dashboards and remove unnecessary ones. If you create a temporary dashboard, perhaps to test something, prefix the name with TEST: . Delete the dashboard when you are finished. Copying dashboards with no significant changes is not a good idea. You miss out on updates to the original dashboard, such as documentation changes, bug fixes, or additions to metrics. In many cases copies are being made to simply customize the view by setting template parameters. This should instead be done by maintaining a link to the master dashboard and customizing the view with URL parameters . When you must copy a dashboard, clearly rename it and do not copy the dashboard tags. Tags are important metadata for dashboards that are used during search. Copying tags can result in false matches. Maintain a dashboard of dashboards or cross-reference dashboards. This can be done in several ways: Create dashboard links, panel, or data links. Links can go to other dashboards or to external systems. For more information, refer to Manage dashboard links . Add a Dashboard list panel . You can then customize what you see by doing tag or folder searches. Add a Text panel and use markdown to customize the display. Was this page helpful? Yes No Suggest an edit in GitHub Create a GitHub issue Email docs@grafana.com Help and support Community Related resources from Grafana Labs Additional helpful documentation, links, and articles: 17 Sep 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. 60 min 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. 60 min Building advanced Grafana dashboards In this webinar, we’ll demo how to build and format Grafana dashboards. Is this page helpful? Yes No On this page Common observability strategies Guidelines for usage USE method RED method The Four Golden Signals Dashboard management maturity model Low - default state Medium - methodical dashboards High - optimized use Best practices for creating dashboards Before you begin Best practices to follow Best practices for managing dashboards Before you begin Best practices to follow Scroll for more Sign up for Grafana stack updates Subscribe Sorry, an error occurred. Email update@grafana.com for help. Note: By signing up, you agree to be emailed related product-level information. Products Grafana Cloud Grafana Enterprise Stack Grafana visualizations Plugins Grafana Cloud Logs Grafana Cloud Metrics Grafana Cloud Traces Grafana Cloud Profiles AI/ML tools for observability Application Observability Frontend Observability Grafana Cloud Asserts Grafana IRM Grafana k6 Grafana SLO Synthetic Monitoring Solutions Pricing Open Source Grafana Grafana Alloy Grafana Beyla Grafana Faro Grafana k6 Grafana Loki Grafana Mimir Grafana OnCall Grafana Pyroscope Grafana Tanka Grafana Tempo Graphite OpenTelemetry Prometheus Dashboard templates Downloads &nbsp; GitHub Learn Documentation Grafana Labs blog Webinars and videos Tutorials Workshops Events Community Professional Services Community forums Community Slack Grafana Champions Community organizers Observability Survey Report 2025 OSS vs Cloud Writers' Toolkit Plugin development Load testing OpenTelemetry Report Log monitoring Company Partnerships Our team Careers Success stories Newsroom Contact us Getting help Merch Open positions We're hiring The Story of Grafana Compare Grafana vs. Datadog Localized content Japanese pages German pages French pages Spanish pages Portuguese pages Grafana Cloud status Legal and Security Terms of Service Privacy Policy Trademark Policy Copyright 2025 &copy; Grafana Labs Grafana Labs uses cookies for the normal operation of this website. Learn more. Got it!