instruction: How do you set up a complete Prometheus monitoring stack?
output: Provision Grafana | 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 Administration Provision Grafana Enterprise Open source Provision Grafana Grafana has an active provisioning system that uses configuration files. This makes GitOps more natural since data sources and dashboards can be defined using files that can be version controlled. Configuration file Refer to Configuration for more information on what you can configure in grafana.ini . Configuration file locations Grafana reads its default configuration from &lt;WORKING DIRECTORY>/conf/defaults.ini . By default, Grafana reads custom configuration from &lt;WORKING DIRECTORY>/conf/custom.ini . You can override the custom configuration path with the --config option. Note The Deb and RPM packages install the configuration file at /etc/grafana/grafana.ini . The Grafana init.d script sets the --config option to that path. Use environment variables You can use environment variable lookups in all provisioning configuration. The syntax for an environment variable is $ENV_VAR_NAME or ${ENV_VAR_NAME} . If the environment variable value has a $ in it (for example, Pa$sw0rd ), use the $ENV_VAR_NAME syntax to avoid double expansion. You can only use environment variables for configuration values and not for keys or bigger parts of the configuration file structure. You can use environment variables in dashboard provisioning configuration but not the dashboard definition files themselves. The following example looks up the data source URL port, user, and password using environment variables: yaml Copy datasources: - name: Graphite url: http://localhost:$PORT user: $USER secureJsonData: password: $PASSWORD To escape a literal $ in your provisioning file values, use $$ . Configuration management tools The Grafana community maintains libraries for many popular configuration management tools. Tool Project Puppet https://forge.puppet.com/puppet/grafana Ansible https://github.com/grafana/grafana-ansible-collection Chef https://github.com/sous-chefs/chef-grafana Saltstack https://github.com/salt-formulas/salt-formula-grafana Jsonnet https://github.com/grafana/grafonnet-lib/ ) NixOS services.grafana.provision module Data sources You can manage data sources in Grafana by adding YAML configuration files in the provisioning/datasources directory. Each configuration file contains a list of data sources, under the datasources key, to add or update during startup. If the data source already exists, Grafana reconfigures it to match the provisioned configuration file. You can also list data sources to automatically delete, using the key deleteDatasources . Grafana deletes the data sources listed in deleteDatasources before adding or updating those in the datasources list. You can configure Grafana to automatically delete provisioned data sources when they&rsquo;re removed from the provisioning file. To do so, add prune: true to the root of your data source provisioning file. With this configuration, Grafana also removes the provisioned data sources if you remove the provisioning file entirely. Run multiple Grafana instances If you run multiple instances of Grafana, add a version number to each data source in the configuration and increase it when you update the configuration. Grafana only updates data sources with the same or lower version number than the one set in the configuration file. This prevents old configurations from overwriting newer ones if you have different versions of the datasource.yaml file that don&rsquo;t define version numbers, and then restart instances at the same time. Example data source configuration file This example provisions a Graphite data source : yaml Copy # Configuration file version apiVersion: 1 # List of data sources to delete from the database. deleteDatasources: - name: Graphite orgId: 1 # Mark provisioned data sources for deletion if they are no longer in a provisioning file. # It takes no effect if data sources are already listed in the deleteDatasources section. prune: true # List of data sources to insert/update depending on what&#39;s # available in the database. datasources: # &lt;string, required&gt; Sets the name you use to refer to # the data source in panels and queries. - name: Graphite # &lt;string, required&gt; Sets the data source type. type: graphite # &lt;string, required&gt; Sets the access mode, either # proxy or direct (Server or Browser in the UI). # Some data sources are incompatible with any setting # but proxy (Server). access: proxy # &lt;int&gt; Sets the organization id. Defaults to orgId 1. orgId: 1 # &lt;string&gt; Sets a custom UID to reference this # data source in other parts of the configuration. # If not specified, Grafana generates one. uid: my_unique_uid # &lt;string&gt; Sets the data source&#39;s URL, including the # port. url: http://localhost:8080 # &lt;string&gt; Sets the database user, if necessary. user: # &lt;string&gt; Sets the database name, if necessary. database: # &lt;bool&gt; Enables basic authorization. basicAuth: # &lt;string&gt; Sets the basic authorization username. basicAuthUser: # &lt;bool&gt; Enables credential headers. withCredentials: # &lt;bool&gt; Toggles whether the data source is pre-selected # for new panels. You can set only one default # data source per organization. isDefault: # &lt;map&gt; Fields to convert to JSON and store in jsonData. jsonData: # &lt;string&gt; Defines the Graphite service&#39;s version. graphiteVersion: &#39;1.1&#39; # &lt;bool&gt; Enables TLS authentication using a client # certificate configured in secureJsonData. tlsAuth: true # &lt;bool&gt; Enables TLS authentication using a CA # certificate. tlsAuthWithCACert: true # &lt;map&gt; Fields to encrypt before storing in jsonData. secureJsonData: # &lt;string&gt; Defines the CA cert, client cert, and # client key for encrypted authentication. tlsCACert: &#39;...&#39; tlsClientCert: &#39;...&#39; tlsClientKey: &#39;...&#39; # &lt;string&gt; Sets the database password, if necessary. password: # &lt;string&gt; Sets the basic authorization password. basicAuthPassword: # &lt;int&gt; Sets the version. Used to compare versions when # updating. Ignored when creating a new data source. version: 1 # &lt;bool&gt; Allows users to edit data sources from the # Grafana UI. editable: false For provisioning examples of specific data sources, refer to that data source&rsquo;s documentation . JSON data Not all data sources have the same configuration settings, only the most common ones are fields in the data source provisioning file. To provision the rest of a data source&rsquo;s settings, include them as JSON in the jsonData field. Common settings in the built-in core data sources include: Name Type Data source Description tlsAuth boolean HTTP* , MySQL Enable TLS authentication using client cert configured in secure JSON data tlsAuthWithCACert boolean HTTP* , MySQL, PostgreSQL Enable TLS authentication using CA cert tlsSkipVerify boolean HTTP* , MySQL, PostgreSQL, MSSQL Controls whether a client verifies the server&rsquo;s certificate chain and host name. serverName string HTTP* , MSSQL Optional. Controls the server name used for certificate common name/subject alternative name verification. Defaults to using the data source URL. timeout string HTTP* Request timeout in seconds. Overrides dataproxy.timeout option graphiteVersion string Graphite Graphite version timeInterval string Prometheus, Elasticsearch, InfluxDB, MySQL, PostgreSQL and MSSQL Lowest interval/step value that should be used for this data source. httpMode string InfluxDB HTTP Method. &lsquo;GET&rsquo;, &lsquo;POST&rsquo;, defaults to GET maxSeries number InfluxDB Max number of series/tables that Grafana processes httpMethod string Prometheus HTTP Method. &lsquo;GET&rsquo;, &lsquo;POST&rsquo;, defaults to POST customQueryParameters string Prometheus Query parameters to add, as a URL-encoded string. manageAlerts boolean Prometheus and Loki Manage alerts via Alerting UI alertmanagerUid string Prometheus and Loki UID of Alertmanager that manages Alert for this data source. timeField string Elasticsearch Which field that should be used as timestamp interval string Elasticsearch Index date time format. nil(No Pattern), &lsquo;Hourly&rsquo;, &lsquo;Daily&rsquo;, &lsquo;Weekly&rsquo;, &lsquo;Monthly&rsquo; or &lsquo;Yearly&rsquo; logMessageField string Elasticsearch Which field should be used as the log message logLevelField string Elasticsearch Which field should be used to indicate the priority of the log message maxConcurrentShardRequests number Elasticsearch Maximum number of concurrent shard requests that each sub-search request executes per node sigV4Auth boolean Elasticsearch and Prometheus Enable usage of SigV4 sigV4AuthType string Elasticsearch and Prometheus SigV4 auth provider. default/credentials/keys sigV4ExternalId string Elasticsearch and Prometheus Optional SigV4 External ID sigV4AssumeRoleArn string Elasticsearch and Prometheus Optional SigV4 ARN role to assume sigV4Region string Elasticsearch and Prometheus SigV4 AWS region sigV4Profile string Elasticsearch and Prometheus Optional SigV4 credentials profile authType string Amazon CloudWatch Auth provider. default/credentials/keys externalId string Amazon CloudWatch Optional External ID assumeRoleArn string Amazon CloudWatch Optional ARN role to assume defaultRegion string Amazon CloudWatch Optional default AWS region customMetricsNamespaces string Amazon CloudWatch Namespaces of Custom Metrics profile string Amazon CloudWatch Optional credentials profile tsdbVersion string OpenTSDB Version tsdbResolution string OpenTSDB Resolution sslmode string PostgreSQL SSL mode. &lsquo;disable&rsquo;, &lsquo;require&rsquo;, &lsquo;verify-ca&rsquo; or &lsquo;verify-full&rsquo; tlsConfigurationMethod string PostgreSQL SSL certificate configuration, either by &lsquo;file-path&rsquo; or &lsquo;file-content&rsquo; sslRootCertFile string PostgreSQL, MSSQL SSL server root certificate file, must be readable by the Grafana user sslCertFile string PostgreSQL SSL client certificate file, must be readable by the Grafana user sslKeyFile string PostgreSQL SSL client key file, must be readable by only the Grafana user encrypt string MSSQL Determines SSL encryption handling. Options include: disable - data sent between client and server is not encrypted; false - data sent between client and server is not encrypted beyond the login packet; true - data sent between client and server is encrypted. Default is false . postgresVersion number PostgreSQL Postgres version as a number (903/904/905/906/1000) meaning v9.3, v9.4, &mldr;, v10 timescaledb boolean PostgreSQL Enable usage of TimescaleDB extension maxOpenConns number MySQL, PostgreSQL and MSSQL Maximum number of open connections to the database (Grafana v5.4+) maxIdleConns number MySQL, PostgreSQL and MSSQL Maximum number of connections in the idle connection pool (Grafana v5.4+) connMaxLifetime number MySQL, PostgreSQL and MSSQL Maximum amount of time in seconds a connection may be reused (Grafana v5.4+) keepCookies array HTTP* Cookies that needs to be passed along while communicating with data sources prometheusVersion string Prometheus The version of the Prometheus data source, such as 2.37.0 , 2.24.0 prometheusType string Prometheus Prometheus database type. Options are Prometheus , Cortex , Mimir or Thanos . cacheLevel string Prometheus Determines the duration of the browser cache. Valid values include: Low , Medium , High , and None . incrementalQuerying string Prometheus Experimental: Turn on incremental querying to enhance dashboard reload performance with slow data sources incrementalQueryOverlapWindow string Prometheus Experimental: Configure incremental query overlap window. Requires a valid duration string, for example, 180s or 15m Default value is 10m (10 minutes). disableRecordingRules boolean Prometheus Experimental: Turn off Prometheus recording rules implementation string Alertmanager The implementation of the Alertmanager data source, such as prometheus , cortex or mimir handleGrafanaManagedAlerts boolean Alertmanager When enabled, Grafana-managed alerts are sent to this Alertmanager Note Data sources tagged with HTTP* communicate using the HTTP protocol, which includes all core data source plugins except MySQL, PostgreSQL, and MSSQL. For examples of specific data sources&rsquo; JSON data, refer to that data source&rsquo;s documentation . Secure JSON data Secure JSON data is a map of settings encrypted with a secret key . The encryption hides the JSON data from the users of Grafana. You should use secure JSON data to store TLS certificates and passwords for data source HTTP requests. All of these settings are optional. Name Type Data source Description tlsCACert string HTTP* , MySQL, PostgreSQL CA cert for out going requests tlsClientCert string HTTP* , MySQL, PostgreSQL TLS Client cert for outgoing requests tlsClientKey string HTTP* , MySQL, PostgreSQL TLS Client key for outgoing requests password string HTTP* , MySQL, PostgreSQL, MSSQL password basicAuthPassword string HTTP* password for basic authentication accessKey string Amazon CloudWatch Access key for connecting to Amazon CloudWatch secretKey string Amazon CloudWatch Secret key for connecting to Amazon CloudWatch sigV4AccessKey string Elasticsearch and Prometheus SigV4 access key. Required when using keys auth provider sigV4SecretKey string Elasticsearch and Prometheus SigV4 secret key. Required when using keys auth provider Note The HTTP* tag denotes data sources that communicate using the HTTP protocol, including all core data source plugins except MySQL, PostgreSQL, and MSSQL. Custom HTTP headers for data sources You can add HTTP headers to all requests sent to data sources managed by Grafana provisioning Configure the header name in the jsonData field and the header value in secureJsonData . The following example sets the HeaderName header to have the value HeaderValue and the Authorization header to have the value Bearer XXXXXXXXX : yaml Copy apiVersion: 1 datasources: - name: Graphite jsonData: httpHeaderName1: &#39;HeaderName&#39; httpHeaderName2: &#39;Authorization&#39; secureJsonData: httpHeaderValue1: &#39;HeaderValue&#39; httpHeaderValue2: &#39;Bearer XXXXXXXXX&#39; Plugins You can manage plugin applications in Grafana by adding one or more YAML configuration files in the provisioning/plugins directory. Each configuration file contains a list of apps that Grafana configures during start up. Grafana configures each app to use the configuration in the file. Note This feature enables you to provision plugin configurations, not the plugins themselves. You must have already installed the plugin to use plugin configuration provisioning. Example plugin configuration file yaml Copy apiVersion: 1 apps: # &lt;string&gt; the type of app, plugin identifier. Required - type: raintank-worldping-app # &lt;int&gt; Org ID. Default to 1, unless org_name is specified org_id: 1 # &lt;string&gt; Org name. Overrides org_id unless org_id not specified org_name: Main Org. # &lt;bool&gt; disable the app. Default to false. disabled: false # &lt;map&gt; fields that will be converted to json and stored in jsonData. Custom per app. jsonData: # key/value pairs of string to object key: value # &lt;map&gt; fields that will be converted to json, encrypted and stored in secureJsonData. Custom per app. secureJsonData: # key/value pairs of string to string key: value Dashboards You can manage dashboards in Grafana by adding one or more YAML configuration files in the provisioning/dashboards directory. Each configuration file contains a list of providers that Grafana uses to load dashboards from the local filesystem. Example dashboard configuration file yaml Copy apiVersion: 1 providers: # &lt;string&gt; an unique provider name. Required - name: &#39;a unique provider name&#39; # &lt;int&gt; Org id. Default to 1 orgId: 1 # &lt;string&gt; name of the dashboard folder. folder: &#39;&#39; # &lt;string&gt; folder UID. will be automatically generated if not specified folderUid: &#39;&#39; # &lt;string&gt; provider type. Default to &#39;file&#39; type: file # &lt;bool&gt; disable dashboard deletion disableDeletion: false # &lt;int&gt; how often Grafana will scan for changed dashboards updateIntervalSeconds: 10 # &lt;bool&gt; allow updating provisioned dashboards from the UI allowUiUpdates: false options: # &lt;string, required&gt; path to dashboard files on disk. Required when using the &#39;file&#39; type path: /var/lib/grafana/dashboards # &lt;bool&gt; use folder names from filesystem to create folders in Grafana foldersFromFilesStructure: true When Grafana starts, it updates or creates all dashboards found in the configured path. It later polls that path every updateIntervalSeconds for updates to the dashboard files and updates its database. Note Grafana installs dashboards at the root level if you don&rsquo;t set the folder field. Make changes to a provisioned dashboard You can make changes to a provisioned dashboard in the Grafana UI but its not possible to automatically save the changes back to the provisioning source. If allowUiUpdates is set to true and you make changes to a provisioned dashboard, when you save the dashboard, Grafana persists the changes to its database. Caution If you save a provisioned dashboard in the UI and then later update the provisioning source, Grafana always overwrites the database dashboard with the one from the provisioning file. Grafana ignores the version property in the JSON file, even if it&rsquo;s lower than the dashboard in the database. Caution If you save a provisioned dashboard in the UI and remove the provisioning source, Grafana deletes the dashboard in the database unless you have set the option disableDeletion to true . If you set allowUiUpdates to false , you can&rsquo;t save changes to a provisioned dashboard. When you try to save changes to a provisioned dashboard, Grafana brings up a Cannot save provisioned dashboard dialog box. Grafana offers options to export the JSON definition of a dashboard. Use either Copy JSON to Clipboard or Save JSON to file to sync your dashboard changes back to the provisioning source. Grafana removes the id field from the dashboard JSON to help the provisioning workflow. The following screenshot illustrates this behavior. Reusable dashboard URLs If the dashboard in the JSON file contains an UID , Grafana updates that the dashboard with that UID in the database. This lets you migrate dashboards between Grafana instances and keep consistent dashboard URLs. When Grafana starts, it creates or updates all dashboards available in the configured folders. Caution You can overwrite existing dashboards with provisioning. Be careful not to reuse the same title multiple times within a folder or uid within the same Grafana instance to avoid inconsistent behavior. Provision folders structure from filesystem to Grafana If you already store your dashboards using folders in a Git repository or on a filesystem, and want to have the same folder names in the Grafana menu, use foldersFromFilesStructure option. For example, to replicate the following dashboards structure from the filesystem to Grafana: Copy /etc/dashboards ├── /server │ ├── /common_dashboard.json │ └── /network_dashboard.json └── /application ├── /requests_dashboard.json └── /resources_dashboard.json use the following provisioning configuration file: yaml Copy apiVersion: 1 providers: - name: dashboards type: file updateIntervalSeconds: 30 options: path: /etc/dashboards foldersFromFilesStructure: true Grafana creates the server and application folders in the UI. To use foldersFromFilesStructure , you must unset the folder and folderUid options. To provision dashboards to the root level, store them in the root of your path . Note This feature doesn&rsquo;t let you create nested folder structures, where you have folders within folders. Alerting For information on provisioning Grafana Alerting, refer to Provision Grafana Alerting resources . Supported settings The following sections detail the supported settings and secure settings for each alert notification type. In the provisioning YAML use settings for settings and secure_settings for secure settings. Grafana encrypts secure settings in the database. Alert notification pushover Name Secure setting apiToken yes userKey yes device priority okPriority retry expire sound okSound Alert notification discord Name Secure setting url yes avatar_url content use_discord_username Alert notification slack Name Secure setting url yes recipient username icon_emoji icon_url uploadImage mentionUsers mentionGroups mentionChannel token yes color Alert notification victorops Name url autoResolve Alert notification kafka Name kafkaRestProxy kafkaTopic Alert notification LINE Name Secure setting token yes Alert notification MQTT Name Secure setting brokerUrl clientId topic messageFormat username password yes retain qos tlsConfig TLS configuration Name Secure setting insecureSkipVerify clientCertificate yes clientKey yes caCertificate yes Alert notification pagerduty Name Secure setting integrationKey yes autoResolve Alert notification sensu Name Secure setting url source handler username password yes Alert notification sensugo Name Secure setting url apikey yes entity check handler namespace Alert notification prometheus-alertmanager Name Secure setting url basicAuthUser basicAuthPassword yes Alert notification teams Name Secure setting url Alert notification dingding Name Secure setting url Alert notification email Name Secure setting singleEmail addresses Alert notification hipchat Name Secure setting url apikey roomid Alert notification opsgenie Name Secure setting apiKey yes apiUrl autoClose overridePriority sendTagsAs Alert notification telegram Name Secure setting bottoken yes chatid uploadImage Alert notification threema Name Secure setting gateway_id recipient_id api_secret yes Alert notification webhook Name Secure setting url http_method username password yes tls_config hmac_config TLS configuration Name Secure setting insecureSkipVerify clientCertificate yes clientKey yes caCertificate yes HMAC signature configuration Name Secure setting secret yes header timestampHeader Alert notification googlechat Name Secure setting url Alert notification Cisco Webex Teams Name Secure setting message room_id api_url bot_token yes Grafana Enterprise Grafana Enterprise supports: Provisioning role-based access control with Grafana Provisioning role-based access control with Terraform 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 Configuration file Configuration file locations Use environment variables Configuration management tools Data sources Run multiple Grafana instances Example data source configuration file Plugins Example plugin configuration file Dashboards Example dashboard configuration file Reusable dashboard URLs Provision folders structure from filesystem to Grafana Alerting Supported settings Grafana Enterprise 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!