;oauth_auto_login = false # Sets a custom oAuth error message. This is useful if you need to point the users to a specific location for support. ;oauth_login_error_message = oauth.login.error # OAuth state max age cookie duration in seconds. Defaults to 600 seconds. ;oauth_state_cookie_max_age = 600 # Minimum wait time in milliseconds for the server lock retry mechanism. # The server lock retry mechanism is used to prevent multiple Grafana instances from # simultaneously refreshing OAuth tokens. This mechanism waits at least this amount # of time before retrying to acquire the server lock. There are 5 retries in total. # The wait time between retries is calculated as random(n, n + 500) ; oauth_refresh_token_server_lock_min_wait_ms = 1000 # limit of api_key seconds to live before expiration ;api_key_max_seconds_to_live = -1 # Set to true to enable SigV4 authentication option for HTTP-based datasources. ;sigv4_auth_enabled = false # Set to true to enable verbose logging of SigV4 request signing ;sigv4_verbose_logging = false # Set to true to enable Azure authentication option for HTTP-based datasources. ;azure_auth_enabled = false # Use email lookup in addition to the unique ID provided by the IdP ;oauth_allow_insecure_email_lookup = false # Set to true to include id of identity as a response header ;id_response_header_enabled = false # Prefix used for the id response header, X-Grafana-Identity-Id ;id_response_header_prefix = X-Grafana # List of identity namespaces to add id response headers for, separated by space. # Available namespaces are user, api-key and service-account. # The header value will encode the namespace ("user:", "api-key:", "service-account:") ;id_response_header_namespaces = user api-key service-account # Enables the use of managed service accounts for plugin authentication # This feature currently **only supports single-organization deployments** ; managed_service_accounts_enabled = false #################################### Anonymous Auth ###################### [auth.anonymous] # enable anonymous access ;enabled = false # specify organization name that should be used for unauthenticated users ;org_name = Main Org. # specify role for unauthenticated users ;org_role = Viewer # mask the Grafana version number for unauthenticated users ;hide_version = false # number of devices in total ;device_limit = #################################### GitHub Auth ########################## [auth.github] ;name = GitHub ;icon = github ;enabled = false ;allow_sign_up = true ;auto_login = false ;client_id = some_id ;client_secret = some_secret ;scopes = user:email,read:org ;auth_url = https://github.com/login/oauth/authorize ;token_url = https://github.com/login/oauth/access_token ;api_url = https://api.github.com/user ;signout_redirect_url = ;allowed_domains = ;team_ids = ;allowed_organizations = ;role_attribute_path = ;role_attribute_strict = false ;org_mapping = ;allow_assign_grafana_admin = false ;skip_org_role_sync = false ;tls_skip_verify_insecure = false ;tls_client_cert = ;tls_client_key = ;tls_client_ca = # GitHub OAuth apps does not provide refresh tokens and the access tokens never expires. ;use_refresh_token = false #################################### GitLab Auth ######################### [auth.gitlab] ;name = GitLab ;icon = gitlab ;enabled = false ;allow_sign_up = true ;auto_login = false ;client_id = some_id ;client_secret = some_secret ;scopes = openid email profile ;auth_url = https://gitlab.com/oauth/authorize ;token_url = https://gitlab.com/oauth/token ;api_url = https://gitlab.com/api/v4 ;signout_redirect_url = ;allowed_domains = ;allowed_groups = ;role_attribute_path = ;role_attribute_strict = false ;org_mapping = ;allow_assign_grafana_admin = false ;skip_org_role_sync = false ;tls_skip_verify_insecure = false ;tls_client_cert = ;tls_client_key = ;tls_client_ca = ;use_pkce = true ;use_refresh_token = true #################################### Google Auth ########################## [auth.google] ;name = Google ;icon = google ;enabled = false ;allow_sign_up = true ;auto_login = false ;client_id = some_client_id ;client_secret = some_client_secret ;scopes = openid email profile ;auth_url = https://accounts.google.com/o/oauth2/v2/auth ;token_url = https://oauth2.googleapis.com/token ;api_url = https://openidconnect.googleapis.com/v1/userinfo ;signout_redirect_url = ;allowed_domains = ;validate_hd = ;hosted_domain = ;allowed_groups = ;role_attribute_path = ;role_attribute_strict = false ;org_mapping = ;allow_assign_grafana_admin = false ;skip_org_role_sync = false ;tls_skip_verify_insecure = false ;tls_client_cert = ;tls_client_key = ;tls_client_ca = ;use_pkce = true ;use_refresh_token = true #################################### Grafana.com Auth #################### [auth.grafana_com] ;name = Grafana.com ;icon = grafana ;enabled = false ;allow_sign_up = true ;auto_login = false ;client_id = some_id ;client_secret = some_secret ;scopes = user:email ;allowed_organizations = ;skip_org_role_sync = false ;use_refresh_token = false #################################### Azure AD OAuth ####################### [auth.azuread] ;name = Microsoft ;icon = microsoft ;enabled = false ;allow_sign_up = true ;auto_login = false ;client_authentication = ;client_id = some_client_id ;client_secret = some_client_secret ;managed_identity_client_id = ;federated_credential_audience = ;scopes = openid email profile ;auth_url = https://login.microsoftonline.com//oauth2/v2.0/authorize ;token_url = https://login.microsoftonline.com//oauth2/v2.0/token ;signout_redirect_url = ;allowed_domains = ;allowed_groups = ;allowed_organizations = ;role_attribute_strict = false ;org_mapping = ;allow_assign_grafana_admin = false ;use_pkce = true # prevent synchronizing users organization roles ;skip_org_role_sync = false ;use_refresh_token = true #################################### Okta OAuth ####################### [auth.okta] ;name = Okta ;enabled = false ;allow_sign_up = true ;auto_login = false ;client_id = some_id ;client_secret = some_secret ;scopes = openid profile email groups ;auth_url = https://.okta.com/oauth2/v1/authorize ;token_url = https://.okta.com/oauth2/v1/token ;api_url = https://.okta.com/oauth2/v1/userinfo ;signout_redirect_url = ;allowed_domains = ;allowed_groups = ;role_attribute_path = ;role_attribute_strict = false ; org_attribute_path = ; org_mapping = ;allow_assign_grafana_admin = false ;skip_org_role_sync = false ;tls_skip_verify_insecure = false ;tls_client_cert = ;tls_client_key = ;tls_client_ca = ;use_pkce = true ;use_refresh_token = true #################################### Generic OAuth ########################## [auth.generic_oauth] ;name = OAuth ;icon = signin ;enabled = false ;allow_sign_up = true ;auto_login = false ;client_id = some_id ;client_secret = some_secret ;scopes = user:email,read:org ;empty_scopes = false ;email_attribute_name = email:primary ;email_attribute_path = ;login_attribute_path = ;name_attribute_path = ;role_attribute_path = ;role_attribute_strict = false ;groups_attribute_path = ;id_token_attribute_name = ;team_ids_attribute_path ;auth_url = https://foo.bar/login/oauth/authorize ;token_url = https://foo.bar/login/oauth/access_token ;api_url = https://foo.bar/user ;signout_redirect_url = ;teams_url = ;allowed_domains = ;team_ids = ;allowed_organizations = ;org_attribute_path = ;org_mapping = ;team_ids_attribute_path = ;tls_skip_verify_insecure = false ;tls_client_cert = ;tls_client_key = ;tls_client_ca = ;use_pkce = false ;auth_style = ;allow_assign_grafana_admin = false ;skip_org_role_sync = false ;use_refresh_token = false #################################### Basic Auth ########################## [auth.basic] ;enabled = true ;password_policy = false #################################### Auth Proxy ########################## [auth.proxy] ;enabled = false ;header_name = X-WEBAUTH-USER ;header_property = username ;auto_sign_up = true ;sync_ttl = 60 ;whitelist = 192.168.1.1, 192.168.2.1 ;headers = Email:X-User-Email, Name:X-User-Name # Non-ASCII strings in header values are encoded using quoted-printable encoding ;headers_encoded = false # Read the auth proxy docs for details on what the setting below enables ;enable_login_token = false #################################### Auth JWT ########################## [auth.jwt] ;enabled = true ;enable_login_token = false ;header_name = X-JWT-Assertion ;email_claim = sub ;username_claim = sub ;email_attribute_path = jmespath.email ;username_attribute_path = jmespath.username ;jwk_set_url = https://foo.bar/.well-known/jwks.json ;jwk_set_file = /path/to/jwks.json ;cache_ttl = 60m ;expect_claims = {"aud": ["foo", "bar"]} ;key_file = /path/to/key/file # Use in conjunction with key_file in case the JWT token's header specifies a key ID in "kid" field ;key_id = some-key-id ;role_attribute_path = ;role_attribute_strict = false ;groups_attribute_path = ;auto_sign_up = false ;url_login = false ;allow_assign_grafana_admin = false ;skip_org_role_sync = false ;signout_redirect_url = #################################### Auth LDAP ########################## [auth.ldap] ;enabled = false ;config_file = /etc/grafana/ldap.toml ;allow_sign_up = true # prevent synchronizing ldap users organization roles ;skip_org_role_sync = false # LDAP background sync (Enterprise only) # At 1 am every day ;sync_cron = "0 1 * * *" ;active_sync_enabled = true #################################### AWS ########################### [aws] # Enter a comma-separated list of allowed AWS authentication providers. # Options are: default (AWS SDK Default), keys (Access && secret key), credentials (Credentials field), ec2_iam_role (EC2 IAM Role) ; allowed_auth_providers = default,keys,credentials # Allow AWS users to assume a role using temporary security credentials. # If true, assume role will be enabled for all AWS authentication providers that are specified in aws_auth_providers ; assume_role_enabled = true # Specify max no of pages to be returned by the ListMetricPages API ; list_metrics_page_limit = 500 # Experimental, for use in Grafana Cloud only. Please do not set. ; external_id = # Sets the expiry duration of an assumed role. # This setting should be expressed as a duration. Examples: 6h (hours), 10d (days), 2w (weeks), 1M (month). ; session_duration = "15m" # Set the plugins that will receive AWS settings for each request (via plugin context) # By default this will include all Grafana Labs owned AWS plugins, or those that make use of AWS settings (ElasticSearch, Prometheus). ; forward_settings_to_plugins = cloudwatch, grafana-athena-datasource, grafana-redshift-datasource, grafana-x-ray-datasource, grafana-timestream-datasource, grafana-iot-sitewise-datasource, grafana-iot-twinmaker-app, grafana-opensearch-datasource, aws-datasource-provisioner, elasticsearch, prometheus #################################### Azure ############################### [azure] # Azure cloud environment where Grafana is hosted # Possible values are AzureCloud, AzureChinaCloud, AzureUSGovernment and AzureGermanCloud # Default value is AzureCloud (i.e. public cloud) ;cloud = AzureCloud # A customized list of Azure cloud settings and properties, used by data sources which need this information when run in non-standard azure environments # When specified, this list will replace the default cloud list of AzureCloud, AzureChinaCloud, AzureUSGovernment and AzureGermanCloud ;clouds_config = `[ ; { ; "name":"CustomCloud1", ; "displayName":"Custom Cloud 1", ; "aadAuthority":"https://login.cloud1.contoso.com/", ; "properties":{ ; "azureDataExplorerSuffix": ".kusto.windows.cloud1.contoso.com", ; "logAnalytics": "https://api.loganalytics.cloud1.contoso.com", ; "portal": "https://portal.azure.cloud1.contoso.com", ; "prometheusResourceId": "https://prometheus.monitor.azure.cloud1.contoso.com", ; "resourceManager": "https://management.azure.cloud1.contoso.com" ; } ; }]` # Specifies whether Grafana hosted in Azure service with Managed Identity configured (e.g. Azure Virtual Machines instance) # If enabled, the managed identity can be used for authentication of Grafana in Azure services # Disabled by default, needs to be explicitly enabled ;managed_identity_enabled = false # Client ID to use for user-assigned managed identity # Should be set for user-assigned identity and should be empty for system-assigned identity ;managed_identity_client_id = # Specifies whether Azure AD Workload Identity authentication should be enabled in datasources that support it # For more documentation on Azure AD Workload Identity, review this documentation: # https://azure.github.io/azure-workload-identity/docs/ # Disabled by default, needs to be explicitly enabled ;workload_identity_enabled = false # Tenant ID of the Azure AD Workload Identity # Allows to override default tenant ID of the Azure AD identity associated with the Kubernetes service account ;workload_identity_tenant_id = # Client ID of the Azure AD Workload Identity # Allows to override default client ID of the Azure AD identity associated with the Kubernetes service account ;workload_identity_client_id = # Custom path to token file for the Azure AD Workload Identity # Allows to set a custom path to the projected service account token file ;workload_identity_token_file = # Specifies whether user identity authentication (on behalf of currently signed-in user) should be enabled in datasources # that support it (requires AAD authentication) # Disabled by default, needs to be explicitly enabled ;user_identity_enabled = false # Specifies whether user identity authentication fallback credentials should be enabled in data sources # Enabling this allows data source creators to provide fallback credentials for backend initiated requests # e.g. alerting, recorded queries etc. # Enabled by default, needs to be explicitly disabled # Will not have any effect if user identity is disabled above ;user_identity_fallback_credentials_enabled = true # Override token URL for Azure Active Directory # By default is the same as token URL configured for AAD authentication settings ;user_identity_token_url = # Override ADD application ID which would be used to exchange users token to an access token for the datasource # By default is the same as used in AAD authentication or can be set to another application (for OBO flow) ;user_identity_client_id = # Override the AAD application client secret # By default is the same as used in AAD authentication or can be set to another application (for OBO flow) ;user_identity_client_secret = # Allows the usage of a custom token request assertion when Grafana is behind an authentication proxy # In most cases this will not need to be used. To enable this set the value to "username" # The default is empty and any other value will not enable this functionality ;username_assertion = # Set the plugins that will receive Azure settings for each request (via plugin context) # By default this will include all Grafana Labs owned Azure plugins, or those that make use of Azure settings (Azure Monitor, Azure Data Explorer, Prometheus, MSSQL). ;forward_settings_to_plugins = grafana-azure-monitor-datasource, prometheus, grafana-azure-data-explorer-datasource, mssql # Specifies whether Entra password auth can be used for the MSSQL data source # Disabled by default, needs to be explicitly enabled ;azure_entra_password_credentials_enabled = false #################################### Role-based Access Control ########### [rbac] ;permission_cache = true # Reset basic roles permissions on boot # Warning left to true, basic roles permissions will be reset on every boot #reset_basic_roles = false # Validate permissions' action and scope on role creation and update ; permission_validation_enabled = true #################################### SMTP / Emailing ########################## [smtp] ;enabled = false ;host = localhost:25 ;user = # If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;""" ;password = ;cert_file = ;key_file = ;skip_verify = false ;from_address = admin@grafana.localhost ;from_name = Grafana # EHLO identity in SMTP dialog (defaults to instance_name) ;ehlo_identity = dashboard.example.com # SMTP startTLS policy (defaults to 'OpportunisticStartTLS') ;startTLS_policy = NoStartTLS # Enable trace propagation in e-mail headers, using the 'traceparent', 'tracestate' and (optionally) 'baggage' fields (defaults to false) ;enable_tracing = false [smtp.static_headers] # Include custom static headers in all outgoing emails ;Foo-Header = bar ;Foo = bar [emails] ;welcome_email_on_sign_up = false ;templates_pattern = emails/*.html, emails/*.txt ;content_types = text/html #################################### Logging ########################## [log] # Either "console", "file", "syslog". Default is console and file # Use space to separate multiple modes, e.g. "console file" ;mode = console file # Either "debug", "info", "warn", "error", "critical", default is "info" ;level = info # optional settings to set different levels for specific loggers. Ex filters = sqlstore:debug ;filters = # Set the default error message shown to users. This message is displayed instead of sensitive backend errors which should be obfuscated. Default is the same as the sample value. ;user_facing_default_error = "please inspect Grafana server log for details" # For "console" mode only [log.console] ;level = # log line format, valid options are text, console and json ;format = console # For "file" mode only [log.file] ;level = # log line format, valid options are text, console and json ;format = text # This enables automated log rotate(switch of following options), default is true ;log_rotate = true # Max line number of single file, default is 1000000 ;max_lines = 1000000 # Max size shift of single file, default is 28 means 1 << 28, 256MB ;max_size_shift = 28 # Segment log daily, default is true ;daily_rotate = true # Expired days of log file(delete after max days), default is 7 ;max_days = 7 [log.syslog] ;level = # log line format, valid options are text, console and json ;format = text # Syslog network type and address. This can be udp, tcp, or unix. If left blank, the default unix endpoints will be used. ;network = ;address = # Syslog facility. user, daemon and local0 through local7 are valid. ;facility = # Syslog tag. By default, the process' argv[0] is used. ;tag = [log.frontend] # Should Faro javascript agent be initialized ;enabled = false # Custom HTTP endpoint to send events to. Default will log the events to stdout. ;custom_endpoint = /log-grafana-javascript-agent # Requests per second limit enforced an extended period, for Grafana backend log ingestion endpoint (/log). ;log_endpoint_requests_per_second_limit = 3 # Max requests accepted per short interval of time for Grafana backend log ingestion endpoint (/log). ;log_endpoint_burst_limit = 15 # Enables all Faro default instrumentation by using `getWebInstrumentations`. Overrides other instrumentation flags. ;instrumentations_all_enabled = false # Should error instrumentation be enabled, only affects Grafana Javascript Agent ;instrumentations_errors_enabled = true # Should console instrumentation be enabled, only affects Grafana Javascript Agent ;instrumentations_console_enabled = false # Should webvitals instrumentation be enabled, only affects Grafana Javascript Agent ;instrumentations_webvitals_enabled = false # Should tracing instrumentation be enabled, only affects Grafana Javascript Agent ;instrumentations_tracing_enabled = false # Api Key, only applies to Grafana Javascript Agent provider ;api_key = testApiKey #################################### Usage Quotas ######################## [quota] ; enabled = false #### set quotas to -1 to make unlimited. #### # limit number of users per Org. ; org_user = 10 # limit number of dashboards per Org. ; org_dashboard = 100 # limit number of data_sources per Org. ; org_data_source = 10 # limit number of api_keys per Org. ; org_api_key = 10 # limit number of alerts per Org. ;org_alert_rule = 100 # limit number of orgs a user can create. ; user_org = 10 # Global limit of users. ; global_user = -1 # global limit of orgs. ; global_org = -1 # global limit of dashboards ; global_dashboard = -1 # global limit of api_keys ; global_api_key = -1 # global limit on number of logged in users. ; global_session = -1 # global limit of alerts ;global_alert_rule = -1 # global limit of files uploaded to the SQL DB ;global_file = 1000 # global limit of correlations ; global_correlations = -1 # Limit of the number of alert rules per rule group. # This is not strictly enforced yet, but will be enforced over time. ;alerting_rule_group_rules = 100 # Limit the number of query evaluation results per alert rule. # If the condition query of an alert rule produces more results than this limit, # the evaluation results in an error. ;alerting_rule_evaluation_results = -1 #################################### Unified Alerting #################### [unified_alerting] #Enable the Unified Alerting sub-system and interface. When enabled we'll migrate all of your alert rules and notification channels to the new system. New alert rules will be created and your notification channels will be converted into an Alertmanager configuration. Previous data is preserved to enable backwards compatibility but new data is removed.``` ;enabled = true # Comma-separated list of organization IDs for which to disable unified alerting. Only supported if unified alerting is enabled. ;disabled_orgs = # Specify how long to wait for the alerting service to initialize ;initialization_timeout = 30s # Specify the frequency of polling for admin config changes. # The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m. ;admin_config_poll_interval = 60s # Specify the frequency of polling for Alertmanager config changes. # The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m. ;alertmanager_config_poll_interval = 60s # Maximum number of active and pending silences that a tenant can have at once. Default: 0 (no limit). ;alertmanager_max_silences_count = # Maximum silence size in bytes. Default: 0 (no limit). ;alertmanager_max_silence_size_bytes = # Set to true when using redis in cluster mode. ;ha_redis_cluster_mode_enabled = false # The redis server address(es) that should be connected to. # Can either be a single address, or if using redis in cluster mode, # the cluster configuration address or a comma-separated list of addresses. ;ha_redis_address = # The username that should be used to authenticate with the redis server. ;ha_redis_username = # The password that should be used to authenticate with the redis server. ;ha_redis_password = # The redis database, by default it's 0. ;ha_redis_db = # A prefix that is used for every key or channel that is created on the redis server # as part of HA for alerting. ;ha_redis_prefix = # The name of the cluster peer that will be used as identifier. If none is # provided, a random one will be generated. ;ha_redis_peer_name = # The maximum number of simultaneous redis connections. # ha_redis_max_conns = 5 # Enable TLS on the client used to communicate with the redis server. This should be set to true # if using any of the other ha_redis_tls_* fields. # ha_redis_tls_enabled = false # Path to the PEM-encoded TLS client certificate file used to authenticate with the redis server. # Required if using Mutual TLS. # ha_redis_tls_cert_path = # Path to the PEM-encoded TLS private key file. Also requires the client certificate to be configured. # Required if using Mutual TLS. # ha_redis_tls_key_path = # Path to the PEM-encoded CA certificates file. If not set, the host's root CA certificates are used. # ha_redis_tls_ca_path = # Overrides the expected name of the redis server certificate. # ha_redis_tls_server_name = # Skips validating the redis server certificate. # ha_redis_tls_insecure_skip_verify = # Overrides the default TLS cipher suite list. # ha_redis_tls_cipher_suites = # Overrides the default minimum TLS version. # Allowed values: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13 # ha_redis_tls_min_version = # Listen address/hostname and port to receive unified alerting messages for other Grafana instances. The port is used for both TCP and UDP. It is assumed other Grafana instances are also running on the same port. The default value is `0.0.0.0:9094`. ;ha_listen_address = "0.0.0.0:9094" # Listen address/hostname and port to receive unified alerting messages for other Grafana instances. The port is used for both TCP and UDP. It is assumed other Grafana instances are also running on the same port. The default value is `0.0.0.0:9094`. ;ha_advertise_address = "" # Comma-separated list of initial instances (in a format of host:port) that will form the HA cluster. Configuring this setting will enable High Availability mode for alerting. ;ha_peers = "" # Time to wait for an instance to send a notification via the Alertmanager. In HA, each Grafana instance will # be assigned a position (e.g. 0, 1). We then multiply this position with the timeout to indicate how long should # each instance wait before sending the notification to take into account replication lag. # The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m. ;ha_peer_timeout = "15s" # The label is an optional string to include on each packet and stream. # It uniquely identifies the cluster and prevents cross-communication # issues when sending gossip messages in an enviromenet with multiple clusters. ;ha_label = # The interval between sending gossip messages. By lowering this value (more frequent) gossip messages are propagated # across cluster more quickly at the expense of increased bandwidth usage. # The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m. ;ha_gossip_interval = "200ms" # Length of time to attempt to reconnect to a lost peer. Recommended to be short (<15m) when Grafana is running in a Kubernetes cluster. # The string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m. ;ha_reconnect_timeout = 6h # The interval between gossip full state syncs. Setting this interval lower (more frequent) will increase convergence speeds # across larger clusters at the expense of increased bandwidth usage. # The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m. ;ha_push_pull_interval = "60s" # Enable or disable alerting rule execution. The alerting UI remains visible. ;execute_alerts = true # Alert evaluation timeout when fetching data from the datasource. # The timeout string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m. ;evaluation_timeout = 30s # Number of times we'll attempt to evaluate an alert rule before giving up on that evaluation. The default value is 3. ;max_attempts = 3 # Minimum interval to enforce between rule evaluations. Rules will be adjusted if they are less than this value or if they are not multiple of the scheduler interval (10s). Higher values can help with resource management as we'll schedule fewer evaluations over time. # The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m. ;min_interval = 10s # This is an experimental option to add parallelization to saving alert states in the database. # It configures the maximum number of concurrent queries per rule evaluated. The default value is 1 # (concurrent queries per rule disabled). ;max_state_save_concurrency = 1 # If the feature flag 'alertingSaveStatePeriodic' is enabled, this is the interval that is used to persist the alerting instances to the database. # The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m. ;state_periodic_save_interval = 5m # If the feature flag 'alertingSaveStatePeriodic' is enabled, this is the size of the batch that is saved to the database at once. ;state_periodic_save_batch_size = 1 # Disables the smoothing of alert evaluations across their evaluation window. # Rules will evaluate in sync. ;disable_jitter = false # Retention period for Alertmanager notification log entries. ;notification_log_retention = 5d # Duration for which a resolved alert state transition will continue to be sent to the Alertmanager. ;resolved_alert_retention = 15m # Defines the limit of how many alert rule versions # should be stored in the database for each alert rule in an organization including the current one. # 0 value means no limit ;rule_version_record_limit= 0 [unified_alerting.screenshots] # Enable screenshots in notifications. You must have either installed the Grafana image rendering # plugin, or set up Grafana to use a remote rendering service. # For more information on configuration options, refer to [rendering]. ;capture = false # The timeout for capturing screenshots. If a screenshot cannot be captured within the timeout then # the notification is sent without a screenshot. The maximum duration is 30 seconds. This timeout # should be less than the minimum Interval of all Evaluation Groups to avoid back pressure on alert # rule evaluation. ;capture_timeout = 10s # The maximum number of screenshots that can be taken at the same time. This option is different from # concurrent_render_request_limit as max_concurrent_screenshots sets the number of concurrent screenshots # that can be taken at the same time for all firing alerts where as concurrent_render_request_limit sets # the total number of concurrent screenshots across all Grafana services. ;max_concurrent_screenshots = 5 # Uploads screenshots to the local Grafana server or remote storage such as Azure, S3 and GCS. Please # see [external_image_storage] for further configuration options. If this option is false then # screenshots will be persisted to disk for up to temp_data_lifetime. ;upload_external_image_storage = false [unified_alerting.reserved_labels] # Comma-separated list of reserved labels added by the Grafana Alerting engine that should be disabled. # For example: `disabled_labels=grafana_folder` disabled_labels = [unified_alerting.reserved_labels] # Comma-separated list of reserved labels added by the Grafana Alerting engine that should be disabled. # For example: `disabled_labels=grafana_folder` ;disabled_labels = [unified_alerting.state_history] # Enable the state history functionality in Unified Alerting. The previous states of alert rules will be visible in panels and in the UI. ; enabled = true # Select which pluggable state history backend to use. Either "annotations", "loki", or "multiple" # "loki" writes state history to an external Loki instance. "multiple" allows history to be written to multiple backends at once. # Defaults to "annotations". ; backend = "multiple" # For "multiple" only. # Indicates the main backend used to serve state history queries. # Either "annotations" or "loki" ; primary = "loki" # For "multiple" only. # Comma-separated list of additional backends to write state history data to. ; secondaries = "annotations" # For "loki" only. # URL of the external Loki instance. # Either "loki_remote_url", or both of "loki_remote_read_url" and "loki_remote_write_url" is required for the "loki" backend. ; loki_remote_url = "http://loki:3100" # For "loki" only. # URL of the external Loki's read path. To be used in configurations where Loki has separated read and write URLs. # Either "loki_remote_url", or both of "loki_remote_read_url" and "loki_remote_write_url" is required for the "loki" backend. ; loki_remote_read_url = "http://loki-querier:3100" # For "loki" only. # URL of the external Loki's write path. To be used in configurations where Loki has separated read and write URLs. # Either "loki_remote_url", or both of "loki_remote_read_url" and "loki_remote_write_url" is required for the "loki" backend. ; loki_remote_write_url = "http://loki-distributor:3100" # For "loki" only. # Optional tenant ID to attach to requests sent to Loki. ; loki_tenant_id = 123 # For "loki" only. # Optional username for basic authentication on requests sent to Loki. Can be left blank to disable basic auth. ; loki_basic_auth_username = "myuser" # For "loki" only. # Optional password for basic authentication on requests sent to Loki. Can be left blank. ; loki_basic_auth_password = "mypass" # For "loki" only. # Optional max query length for queries sent to Loki. Default is 721h which matches the default Loki value. ; loki_max_query_length = 360h # For "loki" only. # Maximum size in bytes for queries sent to Loki. This limit is applied to user provided filters as well as system defined ones, e.g. applied by access control. # If filter exceeds the limit, API returns error with code "alerting.state-history.loki.requestTooLong". # Default is 64kb ;loki_max_query_size = 65536 [unified_alerting.state_history.external_labels] # Optional extra labels to attach to outbound state history records or log streams. # Any number of label key-value-pairs can be provided. ; mylabelkey = mylabelvalue [unified_alerting.state_history.annotations] # This section controls retention of annotations automatically created while evaluating alert rules # when alerting state history backend is configured to be annotations (a setting [unified_alerting.state_history].backend # Configures for how long alert annotations are stored. Default is 0, which keeps them forever. # This setting should be expressed as an duration. Ex 6h (hours), 10d (days), 2w (weeks), 1M (month). max_age = # Configures max number of alert annotations that Grafana stores. Default value is 0, which keeps all alert annotations. max_annotations_to_keep = #################################### Recording Rules ##################### [recording_rules] # Enable recording rules. You must provide write credentials below. enabled = false # Target URL (including write path) for recording rules. url = # Optional username for basic authentication on recording rule write requests. Can be left blank to disable basic auth basic_auth_username = # Optional assword for basic authentication on recording rule write requests. Can be left blank. basic_auth_password = # Request timeout for recording rule writes. timeout = 30s # Optional custom headers to include in recording rule write requests. [recording_rules.custom_headers] # exampleHeader = exampleValue #################################### Annotations ######################### [annotations] # Configures the batch size for the annotation clean-up job. This setting is used for dashboard, API, and alert annotations. ;cleanupjob_batchsize = 100 # Enforces the maximum allowed length of the tags for any newly introduced annotations. It can be between 500 and 4096 inclusive (which is the respective's column length). Default value is 500. # Setting it to a higher value would impact performance therefore is not recommended. ;tags_length = 500 [annotations.dashboard] # Dashboard annotations means that annotations are associated with the dashboard they are created on. # Configures how long dashboard annotations are stored. Default is 0, which keeps them forever. # This setting should be expressed as a duration. Examples: 6h (hours), 10d (days), 2w (weeks), 1M (month). ;max_age = # Configures max number of dashboard annotations that Grafana stores. Default value is 0, which keeps all dashboard annotations. ;max_annotations_to_keep = [annotations.api] # API annotations means that the annotations have been created using the API without any # association with a dashboard. # Configures how long Grafana stores API annotations. Default is 0, which keeps them forever. # This setting should be expressed as a duration. Examples: 6h (hours), 10d (days), 2w (weeks), 1M (month). ;max_age = # Configures max number of API annotations that Grafana keeps. Default value is 0, which keeps all API annotations. ;max_annotations_to_keep = #################################### Explore ############################# [explore] # Enable the Explore section ;enabled = true #################################### Help ############################# [help] # Enable the Help section ;enabled = true #################################### Profile ############################# [profile] # Enable the Profile section ;enabled = true #################################### News ############################# [news] # Enable the news feed section ; news_feed_enabled = true #################################### Query ############################# [query] # Set the number of data source queries that can be executed concurrently in mixed queries. Default is the number of CPUs. ;concurrent_query_limit = #################################### Query History ############################# [query_history] # Enable the Query history ;enabled = true #################################### Short Links ############################# [short_links] # Short links which are never accessed will be deleted as cleanup. Time is in days. Default is 7 days. Max is 365. 0 means they will be deleted approximately every 10 minutes. ;expire_time = 7 #################################### Internal Grafana Metrics ########################## # Metrics available at HTTP URL /metrics and /metrics/plugins/:pluginId [metrics] # Disable / Enable internal metrics ;enabled = true # Graphite Publish interval ;interval_seconds = 10 # Disable total stats (stat_totals_*) metrics to be generated ;disable_total_stats = false # The interval at which the total stats collector will update the stats. Default is 1800 seconds. ;total_stats_collector_interval_seconds = 1800 #If both are set, basic auth will be required for the metrics endpoints. ; basic_auth_username = ; basic_auth_password = # Metrics environment info adds dimensions to the `grafana_environment_info` metric, which # can expose more information about the Grafana instance. [metrics.environment_info] #exampleLabel1 = exampleValue1 #exampleLabel2 = exampleValue2 # Send internal metrics to Graphite [metrics.graphite] # Enable by setting the address setting (ex localhost:2003) ;address = ;prefix = prod.grafana.%(instance_name)s. #################################### Grafana.com integration ########################## # Url used to import dashboards directly from Grafana.com [grafana_com] ;url = https://grafana.com ;api_url = https://grafana.com/api # Grafana instance - Grafana.com integration SSO API token ;sso_api_token = "" #################################### Distributed tracing ############ # Opentracing is deprecated use opentelemetry instead [tracing.jaeger] # Enable by setting the address sending traces to jaeger (ex localhost:6831) ;address = localhost:6831 # Tag that will always be included in when creating new spans. ex (tag1:value1,tag2:value2) ;always_included_tag = tag1:value1 # Type specifies the type of the sampler: const, probabilistic, rateLimiting, or remote kube-prometheus-stack-grafana-bcbf9cbc9-m9g5b:/usr/share/grafana$