<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Configure Grafana Enterprise Logs on Grafana Labs</title><link>https://grafana.com/docs/enterprise-logs/v1.9.x/config/</link><description>Recent content in Configure Grafana Enterprise Logs on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/enterprise-logs/v1.9.x/config/index.xml" rel="self" type="application/rss+xml"/><item><title>GEL Configuration Reference</title><link>https://grafana.com/docs/enterprise-logs/v1.9.x/config/reference/</link><pubDate>Mon, 14 Apr 2025 21:05:47 +0000</pubDate><guid>https://grafana.com/docs/enterprise-logs/v1.9.x/config/reference/</guid><content><![CDATA[&lt;h1 id=&#34;gel-configuration-reference&#34;&gt;GEL Configuration reference&lt;/h1&gt;
&lt;!-- DO NOT EDIT THIS FILE - This file has been automatically generated from its .template --&gt;
&lt;p&gt;Grafana Enterprise Logs can be configured using a YAML file - specified using the &lt;code&gt;-config.file&lt;/code&gt; flag - or CLI flags. In case you combine both, CLI flags take precedence over the YAML config file.&lt;/p&gt;
&lt;p&gt;The current configuration of any GEL component can be seen by visiting the &lt;code&gt;/config&lt;/code&gt; HTTP path.
Passwords are filtered out of this endpoint.&lt;/p&gt;
&lt;h2 id=&#34;reference&#34;&gt;Reference&lt;/h2&gt;
&lt;p&gt;To specify which configuration file to load, pass the &lt;code&gt;-config.file&lt;/code&gt; flag at the command line. The file is written in &lt;a href=&#34;https://en.wikipedia.org/wiki/YAML&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;YAML format&lt;/a&gt;, defined by the scheme below. Brackets indicate that a parameter is optional.
For Loki general configurations (ex: compactor, ingester configuration docs), see the &lt;a href=&#34;/docs/enterprise-logs/latest/config/loki-config-reference/&#34;&gt;Loki Configuration Reference&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;generic-placeholders&#34;&gt;Generic placeholders&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;boolean&amp;gt;&lt;/code&gt;: a boolean that can take the values &lt;code&gt;true&lt;/code&gt; or &lt;code&gt;false&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;int&amp;gt;&lt;/code&gt;: any integer matching the regular expression &lt;code&gt;[1-9]&#43;[0-9]*&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;duration&amp;gt;&lt;/code&gt;: a duration matching the regular expression &lt;code&gt;[0-9]&#43;(ns|us|µs|ms|s|m|h|d|w|y)&lt;/code&gt; where y = 365 days&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;string&amp;gt;&lt;/code&gt;: a regular string&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;url&amp;gt;&lt;/code&gt;: a URL&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;prefix&amp;gt;&lt;/code&gt;: a CLI flag prefix based on the context (look at the parent configuration block to see which CLI flags prefix should be used)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;time&amp;gt;&lt;/code&gt;: a timestamp, with available formats: &lt;code&gt;2006-01-20&lt;/code&gt; (midnight, local timezone), &lt;code&gt;2006-01-20T15:04&lt;/code&gt; (local timezone), and RFC 3339 formats: &lt;code&gt;2006-01-20T15:04:05Z&lt;/code&gt; (UTC) or &lt;code&gt;2006-01-20T15:04:05&#43;07:00&lt;/code&gt; (explicit timezone)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;use-environment-variables-in-the-configuration&#34;&gt;Use environment variables in the configuration&lt;/h3&gt;
&lt;p&gt;You can use environment variable references in the config file to set values that need to be configurable during deployment by using the &lt;code&gt;-config.expand-env&lt;/code&gt; flag.
To do this, use:&lt;/p&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;${VAR}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Where VAR is the name of the environment variable.&lt;/p&gt;
&lt;p&gt;Each variable reference is replaced at startup by the value of the environment variable.
The replacement is case-sensitive and occurs before the YAML file is parsed.
References to undefined variables are replaced by empty strings unless you specify a default value or custom error text.&lt;/p&gt;
&lt;p&gt;To specify a default value, use:&lt;/p&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;${VAR:default_value}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Where default_value is the value to use if the environment variable is undefined.&lt;/p&gt;
&lt;h3 id=&#34;gel-specific-supported-contents-and-default-values-of-the-config-file&#34;&gt;GEL specific supported contents and default values of the config file&lt;/h3&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;# The admin_api_config configures the admin API.
[admin_api: &amp;lt;admin_api_config&amp;gt;]

# The admin_client_config configures how the Admin API service connects to the
# storage backend.
[admin_client: &amp;lt;admin_client_config&amp;gt;]

# The auth_config configures the authentication type to use.
[auth: &amp;lt;auth_config&amp;gt;]

# Unique ID of this GEL cluster.
# CLI flag: -cluster-name
[cluster_name: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

# The gateway_config configures the gateway proxy.
[gateway: &amp;lt;gateway_config&amp;gt;]

# The license_config configures the license validation module.
[license: &amp;lt;license_config&amp;gt;]

# The tokengen_config configures the tokengen target.
[tokengen: &amp;lt;tokengen_config&amp;gt;]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;admin_api_config&#34;&gt;admin_api_config&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;admin_api_config&lt;/code&gt; configures the admin API.&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;# Designated header to parse when searching for the grafana user ID of the user
# accessing the API.
# CLI flag: -admin.api.user-header-name
[user_header_name: &amp;lt;string&amp;gt; | default = &amp;#34;X-WEBAUTH-USER&amp;#34;]

leader_election:
  # This flag enables leader election for the admin api.
  # CLI flag: -admin-api.leader-election.enabled
  [enabled: &amp;lt;boolean&amp;gt; | default = true]

  ring:
    kvstore:
      # Backend storage to use for the ring. Supported values are: consul, etcd,
      # inmemory, memberlist, multi.
      # CLI flag: -admin-api.leader-election.ring.store
      [store: &amp;lt;string&amp;gt; | default = &amp;#34;consul&amp;#34;]

      # The prefix for the keys in the store. Should end with a /.
      # CLI flag: -admin-api.leader-election.ring.prefix
      [prefix: &amp;lt;string&amp;gt; | default = &amp;#34;leader-election/&amp;#34;]

      consul:
        # Hostname and port of Consul.
        # CLI flag: -admin-api.leader-election.ring.consul.hostname
        [host: &amp;lt;string&amp;gt; | default = &amp;#34;localhost:8500&amp;#34;]

        # ACL Token used to interact with Consul.
        # CLI flag: -admin-api.leader-election.ring.consul.acl-token
        [acl_token: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

        # HTTP timeout when talking to Consul
        # CLI flag: -admin-api.leader-election.ring.consul.client-timeout
        [http_client_timeout: &amp;lt;duration&amp;gt; | default = 20s]

        # Enable consistent reads to Consul.
        # CLI flag: -admin-api.leader-election.ring.consul.consistent-reads
        [consistent_reads: &amp;lt;boolean&amp;gt; | default = false]

        # Rate limit when watching key or prefix in Consul, in requests per
        # second. 0 disables the rate limit.
        # CLI flag: -admin-api.leader-election.ring.consul.watch-rate-limit
        [watch_rate_limit: &amp;lt;float&amp;gt; | default = 1]

        # Burst size used in rate limit. Values less than 1 are treated as 1.
        # CLI flag: -admin-api.leader-election.ring.consul.watch-burst-size
        [watch_burst_size: &amp;lt;int&amp;gt; | default = 1]

        # Maximum duration to wait before retrying a Compare And Swap (CAS)
        # operation.
        # CLI flag: -admin-api.leader-election.ring.consul.cas-retry-delay
        [cas_retry_delay: &amp;lt;duration&amp;gt; | default = 1s]

      etcd:
        # The etcd endpoints to connect to.
        # CLI flag: -admin-api.leader-election.ring.etcd.endpoints
        [endpoints: &amp;lt;list of string&amp;gt; | default = []]

        # The dial timeout for the etcd connection.
        # CLI flag: -admin-api.leader-election.ring.etcd.dial-timeout
        [dial_timeout: &amp;lt;duration&amp;gt; | default = 10s]

        # The maximum number of retries to do for failed ops.
        # CLI flag: -admin-api.leader-election.ring.etcd.max-retries
        [max_retries: &amp;lt;int&amp;gt; | default = 10]

        # Enable TLS.
        # CLI flag: -admin-api.leader-election.ring.etcd.tls-enabled
        [tls_enabled: &amp;lt;boolean&amp;gt; | default = false]

        # Path to the client certificate, which will be used for authenticating
        # with the server. Also requires the key path to be configured.
        # CLI flag: -admin-api.leader-election.ring.etcd.tls-cert-path
        [tls_cert_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

        # Path to the key for the client certificate. Also requires the client
        # certificate to be configured.
        # CLI flag: -admin-api.leader-election.ring.etcd.tls-key-path
        [tls_key_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

        # Path to the CA certificates to validate server certificate against. If
        # not set, the host&amp;#39;s root CA certificates are used.
        # CLI flag: -admin-api.leader-election.ring.etcd.tls-ca-path
        [tls_ca_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

        # Override the expected name on the server certificate.
        # CLI flag: -admin-api.leader-election.ring.etcd.tls-server-name
        [tls_server_name: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

        # Skip validating server certificate.
        # CLI flag: -admin-api.leader-election.ring.etcd.tls-insecure-skip-verify
        [tls_insecure_skip_verify: &amp;lt;boolean&amp;gt; | default = false]

        # Override the default cipher suite list (separated by commas).
        # CLI flag: -admin-api.leader-election.ring.etcd.tls-cipher-suites
        [tls_cipher_suites: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

        # Override the default minimum TLS version. Allowed values:
        # VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13
        # CLI flag: -admin-api.leader-election.ring.etcd.tls-min-version
        [tls_min_version: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

        # Etcd username.
        # CLI flag: -admin-api.leader-election.ring.etcd.username
        [username: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

        # Etcd password.
        # CLI flag: -admin-api.leader-election.ring.etcd.password
        [password: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

      multi:
        # Primary backend storage used by multi-client.
        # CLI flag: -admin-api.leader-election.ring.multi.primary
        [primary: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

        # Secondary backend storage used by multi-client.
        # CLI flag: -admin-api.leader-election.ring.multi.secondary
        [secondary: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

        # Mirror writes to secondary store.
        # CLI flag: -admin-api.leader-election.ring.multi.mirror-enabled
        [mirror_enabled: &amp;lt;boolean&amp;gt; | default = false]

        # Timeout for storing value to secondary store.
        # CLI flag: -admin-api.leader-election.ring.multi.mirror-timeout
        [mirror_timeout: &amp;lt;duration&amp;gt; | default = 2s]

    # Period at which to heartbeat to the ring.
    # CLI flag: -admin-api.leader-election.ring.heartbeat-period
    [heartbeat_period: &amp;lt;duration&amp;gt; | default = 15s]

    # The heartbeat timeout after which admin-api instances are considered
    # unhealthy within the ring.
    # CLI flag: -admin-api.leader-election.ring.heartbeat-timeout
    [heartbeat_timeout: &amp;lt;duration&amp;gt; | default = 1m]

    # Period to wait after generating tokens to resolve collisions. Required
    # when using a gossip ring KV store.
    # CLI flag: -admin-api.leader-election.ring.tokens-observe-period
    [tokens_observe_period: &amp;lt;duration&amp;gt; | default = 1m]

    # Name of network interface to read address from.
    # CLI flag: -admin-api.leader-election.ring.instance-interface-names
    [instance_interface_names: &amp;lt;list of string&amp;gt; | default = [eth0]]

    # Port to advertize in the ring (defaults to server.grpc-listen-port).
    # CLI flag: -admin-api.leader-election.ring.instance-port
    [instance_port: &amp;lt;int&amp;gt; | default = 0]

    # IP address to advertize in the ring.
    # CLI flag: -admin-api.leader-election.ring.instance-addr
    [instance_addr: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Enable using a IPv6 instance address.
    # CLI flag: -admin-api.leader-election.ring.instance-enable-ipv6
    [instance_enable_ipv6: &amp;lt;boolean&amp;gt; | default = false]

  client_config:
    # gRPC client max receive message size (bytes).
    # CLI flag: -admin-api.leader-election.client.grpc-max-recv-msg-size
    [max_recv_msg_size: &amp;lt;int&amp;gt; | default = 104857600]

    # gRPC client max send message size (bytes).
    # CLI flag: -admin-api.leader-election.client.grpc-max-send-msg-size
    [max_send_msg_size: &amp;lt;int&amp;gt; | default = 104857600]

    # Use compression when sending messages. Supported values are: &amp;#39;gzip&amp;#39;,
    # &amp;#39;snappy&amp;#39; and &amp;#39;&amp;#39; (disable compression)
    # CLI flag: -admin-api.leader-election.client.grpc-compression
    [grpc_compression: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Rate limit for gRPC client; 0 means disabled.
    # CLI flag: -admin-api.leader-election.client.grpc-client-rate-limit
    [rate_limit: &amp;lt;float&amp;gt; | default = 0]

    # Rate limit burst for gRPC client.
    # CLI flag: -admin-api.leader-election.client.grpc-client-rate-limit-burst
    [rate_limit_burst: &amp;lt;int&amp;gt; | default = 0]

    # Enable backoff and retry when we hit rate limits.
    # CLI flag: -admin-api.leader-election.client.backoff-on-ratelimits
    [backoff_on_ratelimits: &amp;lt;boolean&amp;gt; | default = false]

    backoff_config:
      # Minimum delay when backing off.
      # CLI flag: -admin-api.leader-election.client.backoff-min-period
      [min_period: &amp;lt;duration&amp;gt; | default = 100ms]

      # Maximum delay when backing off.
      # CLI flag: -admin-api.leader-election.client.backoff-max-period
      [max_period: &amp;lt;duration&amp;gt; | default = 10s]

      # Number of times to backoff and retry before failing.
      # CLI flag: -admin-api.leader-election.client.backoff-retries
      [max_retries: &amp;lt;int&amp;gt; | default = 10]

    # Initial stream window size. Values less than the default are not supported
    # and are ignored. Setting this to a value other than the default disables
    # the BDP estimator.
    # CLI flag: -admin-api.leader-election.client.initial-stream-window-size
    [initial_stream_window_size: &amp;lt;int&amp;gt; | default = 63KiB1023B]

    # Initial connection window size. Values less than the default are not
    # supported and are ignored. Setting this to a value other than the default
    # disables the BDP estimator.
    # CLI flag: -admin-api.leader-election.client.initial-connection-window-size
    [initial_connection_window_size: &amp;lt;int&amp;gt; | default = 63KiB1023B]

    # Enable TLS in the gRPC client. This flag needs to be enabled when any
    # other TLS flag is set. If set to false, insecure connection to gRPC server
    # will be used.
    # CLI flag: -admin-api.leader-election.client.tls-enabled
    [tls_enabled: &amp;lt;boolean&amp;gt; | default = false]

    # Path to the client certificate, which will be used for authenticating with
    # the server. Also requires the key path to be configured.
    # CLI flag: -admin-api.leader-election.client.tls-cert-path
    [tls_cert_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Path to the key for the client certificate. Also requires the client
    # certificate to be configured.
    # CLI flag: -admin-api.leader-election.client.tls-key-path
    [tls_key_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Path to the CA certificates to validate server certificate against. If not
    # set, the host&amp;#39;s root CA certificates are used.
    # CLI flag: -admin-api.leader-election.client.tls-ca-path
    [tls_ca_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Override the expected name on the server certificate.
    # CLI flag: -admin-api.leader-election.client.tls-server-name
    [tls_server_name: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Skip validating server certificate.
    # CLI flag: -admin-api.leader-election.client.tls-insecure-skip-verify
    [tls_insecure_skip_verify: &amp;lt;boolean&amp;gt; | default = false]

    # Override the default cipher suite list (separated by commas).
    # CLI flag: -admin-api.leader-election.client.tls-cipher-suites
    [tls_cipher_suites: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Override the default minimum TLS version. Allowed values: VersionTLS10,
    # VersionTLS11, VersionTLS12, VersionTLS13
    # CLI flag: -admin-api.leader-election.client.tls-min-version
    [tls_min_version: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # The maximum amount of time to establish a connection. A value of 0 means
    # default gRPC client connect timeout and backoff.
    # CLI flag: -admin-api.leader-election.client.connect-timeout
    [connect_timeout: &amp;lt;duration&amp;gt; | default = 5s]

    # Initial backoff delay after first connection failure. Only relevant if
    # ConnectTimeout &amp;gt; 0.
    # CLI flag: -admin-api.leader-election.client.connect-backoff-base-delay
    [connect_backoff_base_delay: &amp;lt;duration&amp;gt; | default = 1s]

    # Maximum backoff delay when establishing a connection. Only relevant if
    # ConnectTimeout &amp;gt; 0.
    # CLI flag: -admin-api.leader-election.client.connect-backoff-max-delay
    [connect_backoff_max_delay: &amp;lt;duration&amp;gt; | default = 5s]

limits:
  # Enable API based limits per-tenant.
  # CLI flag: -admin-api.limits.enabled
  [enabled: &amp;lt;boolean&amp;gt; | default = true]

  # Period with which to refresh per-tenant limits.
  # CLI flag: -admin-api.limits.refresh-period
  [refresh_period: &amp;lt;duration&amp;gt; | default = 1m]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;admin_client_config&#34;&gt;admin_client_config&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;admin_client_config&lt;/code&gt; configures how the Admin API service connects to the storage backend.&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;storage:
  # Enable caching on the versioned client.
  # CLI flag: -admin.client.cache.enabled
  [enable_cache: &amp;lt;boolean&amp;gt; | default = true]

  cache:
    # Cache backend type. Supported values are: memcached, redis, inmemory.
    # CLI flag: -admin.client.cache.backend
    [backend: &amp;lt;string&amp;gt; | default = &amp;#34;inmemory&amp;#34;]

    memcached:
      # Comma-separated list of memcached addresses. Each address can be an IP
      # address, hostname, or an entry specified in the DNS Service Discovery
      # format.
      # CLI flag: -admin.client.cache.memcached.addresses
      [addresses: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

      # The socket read/write timeout.
      # CLI flag: -admin.client.cache.memcached.timeout
      [timeout: &amp;lt;duration&amp;gt; | default = 200ms]

      # The connection timeout.
      # CLI flag: -admin.client.cache.memcached.connect-timeout
      [connect_timeout: &amp;lt;duration&amp;gt; | default = 200ms]

      # The minimum number of idle connections to keep open as a percentage
      # (0-100) of the number of recently used idle connections. If negative,
      # idle connections are kept open indefinitely.
      # CLI flag: -admin.client.cache.memcached.min-idle-connections-headroom-percentage
      [min_idle_connections_headroom_percentage: &amp;lt;float&amp;gt; | default = -1]

      # The maximum number of idle connections that will be maintained per
      # address.
      # CLI flag: -admin.client.cache.memcached.max-idle-connections
      [max_idle_connections: &amp;lt;int&amp;gt; | default = 100]

      # The maximum number of concurrent asynchronous operations can occur.
      # CLI flag: -admin.client.cache.memcached.max-async-concurrency
      [max_async_concurrency: &amp;lt;int&amp;gt; | default = 50]

      # The maximum number of enqueued asynchronous operations allowed.
      # CLI flag: -admin.client.cache.memcached.max-async-buffer-size
      [max_async_buffer_size: &amp;lt;int&amp;gt; | default = 25000]

      # The maximum number of concurrent connections running get operations. If
      # set to 0, concurrency is unlimited.
      # CLI flag: -admin.client.cache.memcached.max-get-multi-concurrency
      [max_get_multi_concurrency: &amp;lt;int&amp;gt; | default = 100]

      # The maximum number of keys a single underlying get operation should run.
      # If more keys are specified, internally keys are split into multiple
      # batches and fetched concurrently, honoring the max concurrency. If set
      # to 0, the max batch size is unlimited.
      # CLI flag: -admin.client.cache.memcached.max-get-multi-batch-size
      [max_get_multi_batch_size: &amp;lt;int&amp;gt; | default = 100]

      # The maximum size of an item stored in memcached, in bytes. Bigger items
      # are not stored. If set to 0, no maximum size is enforced.
      # CLI flag: -admin.client.cache.memcached.max-item-size
      [max_item_size: &amp;lt;int&amp;gt; | default = 1048576]

      # Enable connecting to Memcached with TLS.
      # CLI flag: -admin.client.cache.memcached.tls-enabled
      [tls_enabled: &amp;lt;boolean&amp;gt; | default = false]

      # Path to the client certificate, which will be used for authenticating
      # with the server. Also requires the key path to be configured.
      # CLI flag: -admin.client.cache.memcached.tls-cert-path
      [tls_cert_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

      # Path to the key for the client certificate. Also requires the client
      # certificate to be configured.
      # CLI flag: -admin.client.cache.memcached.tls-key-path
      [tls_key_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

      # Path to the CA certificates to validate server certificate against. If
      # not set, the host&amp;#39;s root CA certificates are used.
      # CLI flag: -admin.client.cache.memcached.tls-ca-path
      [tls_ca_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

      # Override the expected name on the server certificate.
      # CLI flag: -admin.client.cache.memcached.tls-server-name
      [tls_server_name: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

      # Skip validating server certificate.
      # CLI flag: -admin.client.cache.memcached.tls-insecure-skip-verify
      [tls_insecure_skip_verify: &amp;lt;boolean&amp;gt; | default = false]

      # Override the default cipher suite list (separated by commas).
      # CLI flag: -admin.client.cache.memcached.tls-cipher-suites
      [tls_cipher_suites: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

      # Override the default minimum TLS version. Allowed values: VersionTLS10,
      # VersionTLS11, VersionTLS12, VersionTLS13
      # CLI flag: -admin.client.cache.memcached.tls-min-version
      [tls_min_version: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    redis:
      # Redis Server or Cluster configuration endpoint to use for caching. A
      # comma-separated list of endpoints for Redis Cluster or Redis Sentinel.
      # CLI flag: -admin.client.cache.redis.endpoint
      [endpoint: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

      # Username to use when connecting to Redis.
      # CLI flag: -admin.client.cache.redis.username
      [username: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

      # Password to use when connecting to Redis.
      # CLI flag: -admin.client.cache.redis.password
      [password: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

      # Database index.
      # CLI flag: -admin.client.cache.redis.db
      [db: &amp;lt;int&amp;gt; | default = 0]

      # Redis Sentinel master name. An empty string for Redis Server or Redis
      # Cluster.
      # CLI flag: -admin.client.cache.redis.master-name
      [master_name: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

      # Client dial timeout.
      # CLI flag: -admin.client.cache.redis.dial-timeout
      [dial_timeout: &amp;lt;duration&amp;gt; | default = 5s]

      # Client read timeout.
      # CLI flag: -admin.client.cache.redis.read-timeout
      [read_timeout: &amp;lt;duration&amp;gt; | default = 3s]

      # Client write timeout.
      # CLI flag: -admin.client.cache.redis.write-timeout
      [write_timeout: &amp;lt;duration&amp;gt; | default = 3s]

      # Maximum number of connections in the pool.
      # CLI flag: -admin.client.cache.redis.connection-pool-size
      [connection_pool_size: &amp;lt;int&amp;gt; | default = 100]

      # Maximum duration to wait to get a connection from pool.
      # CLI flag: -admin.client.cache.redis.connection-pool-timeout
      [connection_pool_timeout: &amp;lt;duration&amp;gt; | default = 4s]

      # Minimum number of idle connections.
      # CLI flag: -admin.client.cache.redis.min-idle-connections
      [min_idle_connections: &amp;lt;int&amp;gt; | default = 10]

      # Amount of time after which client closes idle connections.
      # CLI flag: -admin.client.cache.redis.idle-timeout
      [idle_timeout: &amp;lt;duration&amp;gt; | default = 5m]

      # Close connections older than this duration. If the value is zero, then
      # the pool does not close connections based on age.
      # CLI flag: -admin.client.cache.redis.max-connection-age
      [max_connection_age: &amp;lt;duration&amp;gt; | default = 0s]

      # The maximum size of an item stored in Redis. Bigger items are not
      # stored. If set to 0, no maximum size is enforced.
      # CLI flag: -admin.client.cache.redis.max-item-size
      [max_item_size: &amp;lt;int&amp;gt; | default = 16777216]

      # The maximum number of concurrent asynchronous operations can occur.
      # CLI flag: -admin.client.cache.redis.max-async-concurrency
      [max_async_concurrency: &amp;lt;int&amp;gt; | default = 50]

      # The maximum number of enqueued asynchronous operations allowed.
      # CLI flag: -admin.client.cache.redis.max-async-buffer-size
      [max_async_buffer_size: &amp;lt;int&amp;gt; | default = 25000]

      # The maximum number of concurrent connections running get operations. If
      # set to 0, concurrency is unlimited.
      # CLI flag: -admin.client.cache.redis.max-get-multi-concurrency
      [max_get_multi_concurrency: &amp;lt;int&amp;gt; | default = 100]

      # The maximum size per batch for mget operations.
      # CLI flag: -admin.client.cache.redis.max-get-multi-batch-size
      [max_get_multi_batch_size: &amp;lt;int&amp;gt; | default = 100]

      # Enable connecting to Redis with TLS.
      # CLI flag: -admin.client.cache.redis.tls-enabled
      [tls_enabled: &amp;lt;boolean&amp;gt; | default = false]

      # Path to the client certificate, which will be used for authenticating
      # with the server. Also requires the key path to be configured.
      # CLI flag: -admin.client.cache.redis.tls-cert-path
      [tls_cert_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

      # Path to the key for the client certificate. Also requires the client
      # certificate to be configured.
      # CLI flag: -admin.client.cache.redis.tls-key-path
      [tls_key_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

      # Path to the CA certificates to validate server certificate against. If
      # not set, the host&amp;#39;s root CA certificates are used.
      # CLI flag: -admin.client.cache.redis.tls-ca-path
      [tls_ca_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

      # Override the expected name on the server certificate.
      # CLI flag: -admin.client.cache.redis.tls-server-name
      [tls_server_name: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

      # Skip validating server certificate.
      # CLI flag: -admin.client.cache.redis.tls-insecure-skip-verify
      [tls_insecure_skip_verify: &amp;lt;boolean&amp;gt; | default = false]

      # Override the default cipher suite list (separated by commas).
      # CLI flag: -admin.client.cache.redis.tls-cipher-suites
      [tls_cipher_suites: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

      # Override the default minimum TLS version. Allowed values: VersionTLS10,
      # VersionTLS11, VersionTLS12, VersionTLS13
      # CLI flag: -admin.client.cache.redis.tls-min-version
      [tls_min_version: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # How long an item should be cached before being evicted. Only available for
    # remote cache types (memcached, redis).
    # CLI flag: -admin.client.cache.expiration
    [expiration: &amp;lt;duration&amp;gt; | default = 24h]

    # How frequently to reload tokens from storage to keep the cache warm.
    # Default disabled.
    # CLI flag: -admin.client.cache.refresh-interval
    [refresh_interval: &amp;lt;duration&amp;gt; | default = 0s]

  # Backend storage to use. Supported backends are: s3, gcs, azure, swift,
  # filesystem.
  # CLI flag: -admin.client.backend
  [backend: &amp;lt;string&amp;gt; | default = &amp;#34;s3&amp;#34;]

  s3:
    # The S3 bucket endpoint. It could be an AWS S3 endpoint listed at
    # https://docs.aws.amazon.com/general/latest/gr/s3.html or the address of an
    # S3-compatible service in hostname:port format.
    # CLI flag: -admin.client.s3.endpoint
    [endpoint: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # S3 region. If unset, the client will issue a S3 GetBucketLocation API call
    # to autodetect it.
    # CLI flag: -admin.client.s3.region
    [region: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # S3 bucket name
    # CLI flag: -admin.client.s3.bucket-name
    [bucket_name: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # S3 secret access key
    # CLI flag: -admin.client.s3.secret-access-key
    [secret_access_key: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # S3 session token
    # CLI flag: -admin.client.s3.session-token
    [session_token: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # S3 access key ID
    # CLI flag: -admin.client.s3.access-key-id
    [access_key_id: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # If enabled, use http:// for the S3 endpoint instead of https://. This
    # could be useful in local dev/test environments while using an
    # S3-compatible backend storage, like Minio.
    # CLI flag: -admin.client.s3.insecure
    [insecure: &amp;lt;boolean&amp;gt; | default = false]

    # The signature version to use for authenticating against S3. Supported
    # values are: v4, v2.
    # CLI flag: -admin.client.s3.signature-version
    [signature_version: &amp;lt;string&amp;gt; | default = &amp;#34;v4&amp;#34;]

    # The S3 storage class to use. Details can be found at
    # https://aws.amazon.com/s3/storage-classes/.
    # CLI flag: -admin.client.s3.storage-class
    [storage_class: &amp;lt;string&amp;gt; | default = &amp;#34;STANDARD&amp;#34;]

    sse:
      # Enable AWS Server Side Encryption. Supported values: SSE-KMS, SSE-S3.
      # CLI flag: -admin.client.s3.sse.type
      [type: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

      # KMS Key ID used to encrypt objects in S3
      # CLI flag: -admin.client.s3.sse.kms-key-id
      [kms_key_id: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

      # KMS Encryption Context used for object encryption. It expects JSON
      # formatted string.
      # CLI flag: -admin.client.s3.sse.kms-encryption-context
      [kms_encryption_context: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    http:
      # The time an idle connection will remain idle before closing.
      # CLI flag: -admin.client.s3.http.idle-conn-timeout
      [idle_conn_timeout: &amp;lt;duration&amp;gt; | default = 1m30s]

      # The amount of time the client will wait for a servers response headers.
      # CLI flag: -admin.client.s3.http.response-header-timeout
      [response_header_timeout: &amp;lt;duration&amp;gt; | default = 2m]

      # If the client connects via HTTPS and this option is enabled, the client
      # will accept any certificate and hostname.
      # CLI flag: -admin.client.s3.http.insecure-skip-verify
      [insecure_skip_verify: &amp;lt;boolean&amp;gt; | default = false]

      # Maximum time to wait for a TLS handshake. 0 means no limit.
      # CLI flag: -admin.client.s3.tls-handshake-timeout
      [tls_handshake_timeout: &amp;lt;duration&amp;gt; | default = 10s]

      # The time to wait for a server&amp;#39;s first response headers after fully
      # writing the request headers if the request has an Expect header. 0 to
      # send the request body immediately.
      # CLI flag: -admin.client.s3.expect-continue-timeout
      [expect_continue_timeout: &amp;lt;duration&amp;gt; | default = 1s]

      # Maximum number of idle (keep-alive) connections across all hosts. 0
      # means no limit.
      # CLI flag: -admin.client.s3.max-idle-connections
      [max_idle_connections: &amp;lt;int&amp;gt; | default = 100]

      # Maximum number of idle (keep-alive) connections to keep per-host. If 0,
      # a built-in default value is used.
      # CLI flag: -admin.client.s3.max-idle-connections-per-host
      [max_idle_connections_per_host: &amp;lt;int&amp;gt; | default = 100]

      # Maximum number of connections per host. 0 means no limit.
      # CLI flag: -admin.client.s3.max-connections-per-host
      [max_connections_per_host: &amp;lt;int&amp;gt; | default = 0]

  gcs:
    # GCS bucket name
    # CLI flag: -admin.client.gcs.bucket-name
    [bucket_name: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # JSON representing either a Google Developers Console
    # client_credentials.json file or a Google Developers service account key
    # file. If empty, fallback to Google default logic.
    # CLI flag: -admin.client.gcs.service-account
    [service_account: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

  azure:
    # Azure storage account name
    # CLI flag: -admin.client.azure.account-name
    [account_name: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Azure storage account key
    # CLI flag: -admin.client.azure.account-key
    [account_key: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Azure storage container name
    # CLI flag: -admin.client.azure.container-name
    [container_name: &amp;lt;string&amp;gt; | default = &amp;#34;loki&amp;#34;]

    # Azure storage endpoint suffix without schema. The account name will be
    # prefixed to this value to create the FQDN
    # CLI flag: -admin.client.azure.endpoint-suffix
    [endpoint_suffix: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Number of retries for recoverable errors
    # CLI flag: -admin.client.azure.max-retries
    [max_retries: &amp;lt;int&amp;gt; | default = 20]

    http:
      # The time an idle connection will remain idle before closing.
      # CLI flag: -admin.client.azure.http.idle-conn-timeout
      [idle_conn_timeout: &amp;lt;duration&amp;gt; | default = 1m30s]

      # The amount of time the client will wait for a servers response headers.
      # CLI flag: -admin.client.azure.http.response-header-timeout
      [response_header_timeout: &amp;lt;duration&amp;gt; | default = 2m]

      # If the client connects via HTTPS and this option is enabled, the client
      # will accept any certificate and hostname.
      # CLI flag: -admin.client.azure.http.insecure-skip-verify
      [insecure_skip_verify: &amp;lt;boolean&amp;gt; | default = false]

      # Maximum time to wait for a TLS handshake. 0 means no limit.
      # CLI flag: -admin.client.azure.tls-handshake-timeout
      [tls_handshake_timeout: &amp;lt;duration&amp;gt; | default = 10s]

      # The time to wait for a server&amp;#39;s first response headers after fully
      # writing the request headers if the request has an Expect header. 0 to
      # send the request body immediately.
      # CLI flag: -admin.client.azure.expect-continue-timeout
      [expect_continue_timeout: &amp;lt;duration&amp;gt; | default = 1s]

      # Maximum number of idle (keep-alive) connections across all hosts. 0
      # means no limit.
      # CLI flag: -admin.client.azure.max-idle-connections
      [max_idle_connections: &amp;lt;int&amp;gt; | default = 100]

      # Maximum number of idle (keep-alive) connections to keep per-host. If 0,
      # a built-in default value is used.
      # CLI flag: -admin.client.azure.max-idle-connections-per-host
      [max_idle_connections_per_host: &amp;lt;int&amp;gt; | default = 100]

      # Maximum number of connections per host. 0 means no limit.
      # CLI flag: -admin.client.azure.max-connections-per-host
      [max_connections_per_host: &amp;lt;int&amp;gt; | default = 0]

  swift:
    # OpenStack Swift authentication API version. 0 to autodetect.
    # CLI flag: -admin.client.swift.auth-version
    [auth_version: &amp;lt;int&amp;gt; | default = 0]

    # OpenStack Swift authentication URL
    # CLI flag: -admin.client.swift.auth-url
    [auth_url: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Set this to true to use the internal OpenStack Swift endpoint URL
    # CLI flag: -admin.client.swift.internal
    [internal: &amp;lt;boolean&amp;gt; | default = false]

    # OpenStack Swift username.
    # CLI flag: -admin.client.swift.username
    [username: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # OpenStack Swift user&amp;#39;s domain name.
    # CLI flag: -admin.client.swift.user-domain-name
    [user_domain_name: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # OpenStack Swift user&amp;#39;s domain ID.
    # CLI flag: -admin.client.swift.user-domain-id
    [user_domain_id: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # OpenStack Swift user ID.
    # CLI flag: -admin.client.swift.user-id
    [user_id: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # OpenStack Swift API key.
    # CLI flag: -admin.client.swift.password
    [password: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # OpenStack Swift user&amp;#39;s domain ID.
    # CLI flag: -admin.client.swift.domain-id
    [domain_id: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # OpenStack Swift user&amp;#39;s domain name.
    # CLI flag: -admin.client.swift.domain-name
    [domain_name: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # OpenStack Swift project ID (v2,v3 auth only).
    # CLI flag: -admin.client.swift.project-id
    [project_id: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # OpenStack Swift project name (v2,v3 auth only).
    # CLI flag: -admin.client.swift.project-name
    [project_name: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # ID of the OpenStack Swift project&amp;#39;s domain (v3 auth only), only needed if
    # it differs the from user domain.
    # CLI flag: -admin.client.swift.project-domain-id
    [project_domain_id: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Name of the OpenStack Swift project&amp;#39;s domain (v3 auth only), only needed
    # if it differs from the user domain.
    # CLI flag: -admin.client.swift.project-domain-name
    [project_domain_name: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # OpenStack Swift Region to use (v2,v3 auth only).
    # CLI flag: -admin.client.swift.region-name
    [region_name: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Name of the OpenStack Swift container to put chunks in.
    # CLI flag: -admin.client.swift.container-name
    [container_name: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Max retries on requests error.
    # CLI flag: -admin.client.swift.max-retries
    [max_retries: &amp;lt;int&amp;gt; | default = 3]

    # Time after which a connection attempt is aborted.
    # CLI flag: -admin.client.swift.connect-timeout
    [connect_timeout: &amp;lt;duration&amp;gt; | default = 10s]

    # Time after which an idle request is aborted. The timeout watchdog is reset
    # each time some data is received, so the timeout triggers after X time no
    # data is received on a request.
    # CLI flag: -admin.client.swift.request-timeout
    [request_timeout: &amp;lt;duration&amp;gt; | default = 5s]

  filesystem:
    # Local filesystem storage directory.
    # CLI flag: -admin.client.filesystem.dir
    [dir: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

  # Set a backend to use, (gcs, s3, azure). Deprecated, please use
  # &amp;#39;-admin.client.backend&amp;#39; instead.
  # CLI flag: -admin.client.backend-type
  [type: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

# If set to true, the built-in __admin__ access policy will not be active.
# CLI flag: -admin.client.disable-default-admin-policy
[disable_default_admin_policy: &amp;lt;boolean&amp;gt; | default = false]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;auth_config&#34;&gt;auth_config&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;auth_config&lt;/code&gt; configures the authentication type to use.&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;# method for authenticating incoming HTTP requests, (trust, enterprise).
# CLI flag: -auth.type
[type: &amp;lt;string&amp;gt; | default = &amp;#34;enterprise&amp;#34;]

# requires admin level auth for the /metrics endpoint.
# CLI flag: -auth.required-for-metrics
[required_for_metrics: &amp;lt;boolean&amp;gt; | default = false]

override:
  # Override admin token. If set, this string will always be accepted as a token
  # with admin level scope.
  # CLI flag: -auth.override.token
  [token: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

  # If set, this file will be read at startup and the string from that file will
  # be used as a admin scoped token.
  # CLI flag: -auth.override.token-file
  [token_file: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

admin:
  # how long auth responses should be cached
  # CLI flag: -auth.cache.ttl
  [cache_ttl: &amp;lt;duration&amp;gt; | default = 10m]

  cache_refresh:
    # Whether asynchronous background refreshes are enabled.
    # CLI flag: -auth.cache.refresh.enabled
    [enabled: &amp;lt;boolean&amp;gt; | default = false]

    # Number of workers for background asynchronous refresh.
    # CLI flag: -auth.cache.refresh.concurrency
    [concurrency: &amp;lt;int&amp;gt; | default = 2]

    # Maximum number of pending background refreshes.
    # CLI flag: -auth.cache.refresh.buffer
    [buffer: &amp;lt;int&amp;gt; | default = 256]

    # Remaining time to live of an item when background refreshes may begin to
    # occur.
    # CLI flag: -auth.cache.refresh.refresh-ttl
    [refresh_ttl: &amp;lt;duration&amp;gt; | default = 3m]

    # Minimum time distance between retries if a refresh attempt fails, 0 means
    # that every sub-sequent get operation will result in a retry.
    # CLI flag: -auth.cache.refresh.retry-interval
    [retry_interval: &amp;lt;duration&amp;gt; | default = 30s]

  oidc:
    # JWT token issuer URL (example &amp;#34;https://accounts.google.com&amp;#34;)
    # CLI flag: -auth.admin.oidc.issuer-url
    [issuer_url: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # claim in the JWT token containing the access policy
    # CLI flag: -auth.admin.oidc.access-policy-claim
    [access_policy_claim: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # regex to extract the access policy from the JWT token. The first submatch
    # of the provided regex expression will be used.
    # CLI flag: -auth.admin.oidc.access-policy-regex
    [access_policy_regex: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # optional audience to check in JWT token
    # CLI flag: -auth.admin.oidc.audience
    [audience: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # name of the access policy to use when the token doesn&amp;#39;t contain an access
    # policy
    # CLI flag: -auth.admin.oidc.default-access-policy
    [default_access_policy: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # enable ADFS compatibility
    # CLI flag: -auth.admin.oidc.adfs-compatibility
    [adfs_compatibility: &amp;lt;boolean&amp;gt; | default = false]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;gateway_config&#34;&gt;gateway_config&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;gateway_config&lt;/code&gt; configures the gateway proxy.&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;proxy:
  default:
    # URL for the backend. Use the scheme dns:// for HTTP over GPRC and the
    # scheme h2c:// for HTTP2 proxying.
    # CLI flag: -gateway.proxy.default.url
    [url: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Enable keep alive for the backend.
    # CLI flag: -gateway.proxy.default.enable-keepalive
    [enable_keepalive: &amp;lt;boolean&amp;gt; | default = true]

    # Enable TLS in the GRPC client. This flag needs to be enabled when any
    # other TLS flag is set. If set to false, insecure connection to gRPC server
    # will be used.
    # CLI flag: -gateway.proxy.default.tls-enabled
    [tls_enabled: &amp;lt;boolean&amp;gt; | default = false]

    # Timeout when dialing backend. For proxying over GRPC, this will be used
    # only during the initial dial at startup. For proxying over HTTP this is
    # the connection timeout. Set to 0 to disable.
    # CLI flag: -gateway.proxy.default.dial-timeout
    [dial_timeout: &amp;lt;duration&amp;gt; | default = 5s]

    # Path to the client certificate, which will be used for authenticating with
    # the server. Also requires the key path to be configured.
    # CLI flag: -gateway.proxy.default.tls-cert-path
    [tls_cert_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Path to the key for the client certificate. Also requires the client
    # certificate to be configured.
    # CLI flag: -gateway.proxy.default.tls-key-path
    [tls_key_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Path to the CA certificates to validate server certificate against. If not
    # set, the host&amp;#39;s root CA certificates are used.
    # CLI flag: -gateway.proxy.default.tls-ca-path
    [tls_ca_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Override the expected name on the server certificate.
    # CLI flag: -gateway.proxy.default.tls-server-name
    [tls_server_name: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Skip validating server certificate.
    # CLI flag: -gateway.proxy.default.tls-insecure-skip-verify
    [tls_insecure_skip_verify: &amp;lt;boolean&amp;gt; | default = false]

    # Override the default cipher suite list (separated by commas).
    # CLI flag: -gateway.proxy.default.tls-cipher-suites
    [tls_cipher_suites: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Override the default minimum TLS version. Allowed values: VersionTLS10,
    # VersionTLS11, VersionTLS12, VersionTLS13
    # CLI flag: -gateway.proxy.default.tls-min-version
    [tls_min_version: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Timeout for write requests to the backend, set to &amp;lt;=0 to disable.
    # CLI flag: -gateway.proxy.default.write-timeout
    [write_timeout: &amp;lt;duration&amp;gt; | default = 30s]

    # Timeout for read requests the backend, set to &amp;lt;=0 to disable.
    # CLI flag: -gateway.proxy.default.read-timeout
    [read_timeout: &amp;lt;duration&amp;gt; | default = 2m]

  admin_api:
    # URL for the backend. Use the scheme dns:// for HTTP over GPRC and the
    # scheme h2c:// for HTTP2 proxying.
    # CLI flag: -gateway.proxy.admin-api.url
    [url: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Enable keep alive for the backend.
    # CLI flag: -gateway.proxy.admin-api.enable-keepalive
    [enable_keepalive: &amp;lt;boolean&amp;gt; | default = true]

    # Enable TLS in the GRPC client. This flag needs to be enabled when any
    # other TLS flag is set. If set to false, insecure connection to gRPC server
    # will be used.
    # CLI flag: -gateway.proxy.admin-api.tls-enabled
    [tls_enabled: &amp;lt;boolean&amp;gt; | default = false]

    # Timeout when dialing backend. For proxying over GRPC, this will be used
    # only during the initial dial at startup. For proxying over HTTP this is
    # the connection timeout. Set to 0 to disable.
    # CLI flag: -gateway.proxy.admin-api.dial-timeout
    [dial_timeout: &amp;lt;duration&amp;gt; | default = 5s]

    # Path to the client certificate, which will be used for authenticating with
    # the server. Also requires the key path to be configured.
    # CLI flag: -gateway.proxy.admin-api.tls-cert-path
    [tls_cert_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Path to the key for the client certificate. Also requires the client
    # certificate to be configured.
    # CLI flag: -gateway.proxy.admin-api.tls-key-path
    [tls_key_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Path to the CA certificates to validate server certificate against. If not
    # set, the host&amp;#39;s root CA certificates are used.
    # CLI flag: -gateway.proxy.admin-api.tls-ca-path
    [tls_ca_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Override the expected name on the server certificate.
    # CLI flag: -gateway.proxy.admin-api.tls-server-name
    [tls_server_name: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Skip validating server certificate.
    # CLI flag: -gateway.proxy.admin-api.tls-insecure-skip-verify
    [tls_insecure_skip_verify: &amp;lt;boolean&amp;gt; | default = false]

    # Override the default cipher suite list (separated by commas).
    # CLI flag: -gateway.proxy.admin-api.tls-cipher-suites
    [tls_cipher_suites: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Override the default minimum TLS version. Allowed values: VersionTLS10,
    # VersionTLS11, VersionTLS12, VersionTLS13
    # CLI flag: -gateway.proxy.admin-api.tls-min-version
    [tls_min_version: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Timeout for write requests to the backend, set to &amp;lt;=0 to disable.
    # CLI flag: -gateway.proxy.admin-api.write-timeout
    [write_timeout: &amp;lt;duration&amp;gt; | default = 30s]

    # Timeout for read requests the backend, set to &amp;lt;=0 to disable.
    # CLI flag: -gateway.proxy.admin-api.read-timeout
    [read_timeout: &amp;lt;duration&amp;gt; | default = 2m]

  compactor:
    # URL for the backend. Use the scheme dns:// for HTTP over GPRC and the
    # scheme h2c:// for HTTP2 proxying.
    # CLI flag: -gateway.proxy.compactor.url
    [url: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Enable keep alive for the backend.
    # CLI flag: -gateway.proxy.compactor.enable-keepalive
    [enable_keepalive: &amp;lt;boolean&amp;gt; | default = true]

    # Enable TLS in the GRPC client. This flag needs to be enabled when any
    # other TLS flag is set. If set to false, insecure connection to gRPC server
    # will be used.
    # CLI flag: -gateway.proxy.compactor.tls-enabled
    [tls_enabled: &amp;lt;boolean&amp;gt; | default = false]

    # Timeout when dialing backend. For proxying over GRPC, this will be used
    # only during the initial dial at startup. For proxying over HTTP this is
    # the connection timeout. Set to 0 to disable.
    # CLI flag: -gateway.proxy.compactor.dial-timeout
    [dial_timeout: &amp;lt;duration&amp;gt; | default = 5s]

    # Path to the client certificate, which will be used for authenticating with
    # the server. Also requires the key path to be configured.
    # CLI flag: -gateway.proxy.compactor.tls-cert-path
    [tls_cert_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Path to the key for the client certificate. Also requires the client
    # certificate to be configured.
    # CLI flag: -gateway.proxy.compactor.tls-key-path
    [tls_key_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Path to the CA certificates to validate server certificate against. If not
    # set, the host&amp;#39;s root CA certificates are used.
    # CLI flag: -gateway.proxy.compactor.tls-ca-path
    [tls_ca_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Override the expected name on the server certificate.
    # CLI flag: -gateway.proxy.compactor.tls-server-name
    [tls_server_name: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Skip validating server certificate.
    # CLI flag: -gateway.proxy.compactor.tls-insecure-skip-verify
    [tls_insecure_skip_verify: &amp;lt;boolean&amp;gt; | default = false]

    # Override the default cipher suite list (separated by commas).
    # CLI flag: -gateway.proxy.compactor.tls-cipher-suites
    [tls_cipher_suites: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Override the default minimum TLS version. Allowed values: VersionTLS10,
    # VersionTLS11, VersionTLS12, VersionTLS13
    # CLI flag: -gateway.proxy.compactor.tls-min-version
    [tls_min_version: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Timeout for write requests to the backend, set to &amp;lt;=0 to disable.
    # CLI flag: -gateway.proxy.compactor.write-timeout
    [write_timeout: &amp;lt;duration&amp;gt; | default = 30s]

    # Timeout for read requests the backend, set to &amp;lt;=0 to disable.
    # CLI flag: -gateway.proxy.compactor.read-timeout
    [read_timeout: &amp;lt;duration&amp;gt; | default = 2m]

  distributor:
    # URL for the backend. Use the scheme dns:// for HTTP over GPRC and the
    # scheme h2c:// for HTTP2 proxying.
    # CLI flag: -gateway.proxy.distributor.url
    [url: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Enable keep alive for the backend.
    # CLI flag: -gateway.proxy.distributor.enable-keepalive
    [enable_keepalive: &amp;lt;boolean&amp;gt; | default = true]

    # Enable TLS in the GRPC client. This flag needs to be enabled when any
    # other TLS flag is set. If set to false, insecure connection to gRPC server
    # will be used.
    # CLI flag: -gateway.proxy.distributor.tls-enabled
    [tls_enabled: &amp;lt;boolean&amp;gt; | default = false]

    # Timeout when dialing backend. For proxying over GRPC, this will be used
    # only during the initial dial at startup. For proxying over HTTP this is
    # the connection timeout. Set to 0 to disable.
    # CLI flag: -gateway.proxy.distributor.dial-timeout
    [dial_timeout: &amp;lt;duration&amp;gt; | default = 5s]

    # Path to the client certificate, which will be used for authenticating with
    # the server. Also requires the key path to be configured.
    # CLI flag: -gateway.proxy.distributor.tls-cert-path
    [tls_cert_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Path to the key for the client certificate. Also requires the client
    # certificate to be configured.
    # CLI flag: -gateway.proxy.distributor.tls-key-path
    [tls_key_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Path to the CA certificates to validate server certificate against. If not
    # set, the host&amp;#39;s root CA certificates are used.
    # CLI flag: -gateway.proxy.distributor.tls-ca-path
    [tls_ca_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Override the expected name on the server certificate.
    # CLI flag: -gateway.proxy.distributor.tls-server-name
    [tls_server_name: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Skip validating server certificate.
    # CLI flag: -gateway.proxy.distributor.tls-insecure-skip-verify
    [tls_insecure_skip_verify: &amp;lt;boolean&amp;gt; | default = false]

    # Override the default cipher suite list (separated by commas).
    # CLI flag: -gateway.proxy.distributor.tls-cipher-suites
    [tls_cipher_suites: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Override the default minimum TLS version. Allowed values: VersionTLS10,
    # VersionTLS11, VersionTLS12, VersionTLS13
    # CLI flag: -gateway.proxy.distributor.tls-min-version
    [tls_min_version: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Timeout for write requests to the backend, set to &amp;lt;=0 to disable.
    # CLI flag: -gateway.proxy.distributor.write-timeout
    [write_timeout: &amp;lt;duration&amp;gt; | default = 30s]

    # Timeout for read requests the backend, set to &amp;lt;=0 to disable.
    # CLI flag: -gateway.proxy.distributor.read-timeout
    [read_timeout: &amp;lt;duration&amp;gt; | default = 2m]

  ingester:
    # URL for the backend. Use the scheme dns:// for HTTP over GPRC and the
    # scheme h2c:// for HTTP2 proxying.
    # CLI flag: -gateway.proxy.ingester.url
    [url: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Enable keep alive for the backend.
    # CLI flag: -gateway.proxy.ingester.enable-keepalive
    [enable_keepalive: &amp;lt;boolean&amp;gt; | default = true]

    # Enable TLS in the GRPC client. This flag needs to be enabled when any
    # other TLS flag is set. If set to false, insecure connection to gRPC server
    # will be used.
    # CLI flag: -gateway.proxy.ingester.tls-enabled
    [tls_enabled: &amp;lt;boolean&amp;gt; | default = false]

    # Timeout when dialing backend. For proxying over GRPC, this will be used
    # only during the initial dial at startup. For proxying over HTTP this is
    # the connection timeout. Set to 0 to disable.
    # CLI flag: -gateway.proxy.ingester.dial-timeout
    [dial_timeout: &amp;lt;duration&amp;gt; | default = 5s]

    # Path to the client certificate, which will be used for authenticating with
    # the server. Also requires the key path to be configured.
    # CLI flag: -gateway.proxy.ingester.tls-cert-path
    [tls_cert_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Path to the key for the client certificate. Also requires the client
    # certificate to be configured.
    # CLI flag: -gateway.proxy.ingester.tls-key-path
    [tls_key_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Path to the CA certificates to validate server certificate against. If not
    # set, the host&amp;#39;s root CA certificates are used.
    # CLI flag: -gateway.proxy.ingester.tls-ca-path
    [tls_ca_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Override the expected name on the server certificate.
    # CLI flag: -gateway.proxy.ingester.tls-server-name
    [tls_server_name: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Skip validating server certificate.
    # CLI flag: -gateway.proxy.ingester.tls-insecure-skip-verify
    [tls_insecure_skip_verify: &amp;lt;boolean&amp;gt; | default = false]

    # Override the default cipher suite list (separated by commas).
    # CLI flag: -gateway.proxy.ingester.tls-cipher-suites
    [tls_cipher_suites: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Override the default minimum TLS version. Allowed values: VersionTLS10,
    # VersionTLS11, VersionTLS12, VersionTLS13
    # CLI flag: -gateway.proxy.ingester.tls-min-version
    [tls_min_version: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Timeout for write requests to the backend, set to &amp;lt;=0 to disable.
    # CLI flag: -gateway.proxy.ingester.write-timeout
    [write_timeout: &amp;lt;duration&amp;gt; | default = 30s]

    # Timeout for read requests the backend, set to &amp;lt;=0 to disable.
    # CLI flag: -gateway.proxy.ingester.read-timeout
    [read_timeout: &amp;lt;duration&amp;gt; | default = 2m]

  query_frontend:
    # URL for the backend. Use the scheme dns:// for HTTP over GPRC and the
    # scheme h2c:// for HTTP2 proxying.
    # CLI flag: -gateway.proxy.query-frontend.url
    [url: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Enable keep alive for the backend.
    # CLI flag: -gateway.proxy.query-frontend.enable-keepalive
    [enable_keepalive: &amp;lt;boolean&amp;gt; | default = true]

    # Enable TLS in the GRPC client. This flag needs to be enabled when any
    # other TLS flag is set. If set to false, insecure connection to gRPC server
    # will be used.
    # CLI flag: -gateway.proxy.query-frontend.tls-enabled
    [tls_enabled: &amp;lt;boolean&amp;gt; | default = false]

    # Timeout when dialing backend. For proxying over GRPC, this will be used
    # only during the initial dial at startup. For proxying over HTTP this is
    # the connection timeout. Set to 0 to disable.
    # CLI flag: -gateway.proxy.query-frontend.dial-timeout
    [dial_timeout: &amp;lt;duration&amp;gt; | default = 5s]

    # Path to the client certificate, which will be used for authenticating with
    # the server. Also requires the key path to be configured.
    # CLI flag: -gateway.proxy.query-frontend.tls-cert-path
    [tls_cert_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Path to the key for the client certificate. Also requires the client
    # certificate to be configured.
    # CLI flag: -gateway.proxy.query-frontend.tls-key-path
    [tls_key_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Path to the CA certificates to validate server certificate against. If not
    # set, the host&amp;#39;s root CA certificates are used.
    # CLI flag: -gateway.proxy.query-frontend.tls-ca-path
    [tls_ca_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Override the expected name on the server certificate.
    # CLI flag: -gateway.proxy.query-frontend.tls-server-name
    [tls_server_name: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Skip validating server certificate.
    # CLI flag: -gateway.proxy.query-frontend.tls-insecure-skip-verify
    [tls_insecure_skip_verify: &amp;lt;boolean&amp;gt; | default = false]

    # Override the default cipher suite list (separated by commas).
    # CLI flag: -gateway.proxy.query-frontend.tls-cipher-suites
    [tls_cipher_suites: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Override the default minimum TLS version. Allowed values: VersionTLS10,
    # VersionTLS11, VersionTLS12, VersionTLS13
    # CLI flag: -gateway.proxy.query-frontend.tls-min-version
    [tls_min_version: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Timeout for write requests to the backend, set to &amp;lt;=0 to disable.
    # CLI flag: -gateway.proxy.query-frontend.write-timeout
    [write_timeout: &amp;lt;duration&amp;gt; | default = 30s]

    # Timeout for read requests the backend, set to &amp;lt;=0 to disable.
    # CLI flag: -gateway.proxy.query-frontend.read-timeout
    [read_timeout: &amp;lt;duration&amp;gt; | default = 2m]

  ruler:
    # URL for the backend. Use the scheme dns:// for HTTP over GPRC and the
    # scheme h2c:// for HTTP2 proxying.
    # CLI flag: -gateway.proxy.ruler.url
    [url: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Enable keep alive for the backend.
    # CLI flag: -gateway.proxy.ruler.enable-keepalive
    [enable_keepalive: &amp;lt;boolean&amp;gt; | default = true]

    # Enable TLS in the GRPC client. This flag needs to be enabled when any
    # other TLS flag is set. If set to false, insecure connection to gRPC server
    # will be used.
    # CLI flag: -gateway.proxy.ruler.tls-enabled
    [tls_enabled: &amp;lt;boolean&amp;gt; | default = false]

    # Timeout when dialing backend. For proxying over GRPC, this will be used
    # only during the initial dial at startup. For proxying over HTTP this is
    # the connection timeout. Set to 0 to disable.
    # CLI flag: -gateway.proxy.ruler.dial-timeout
    [dial_timeout: &amp;lt;duration&amp;gt; | default = 5s]

    # Path to the client certificate, which will be used for authenticating with
    # the server. Also requires the key path to be configured.
    # CLI flag: -gateway.proxy.ruler.tls-cert-path
    [tls_cert_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Path to the key for the client certificate. Also requires the client
    # certificate to be configured.
    # CLI flag: -gateway.proxy.ruler.tls-key-path
    [tls_key_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Path to the CA certificates to validate server certificate against. If not
    # set, the host&amp;#39;s root CA certificates are used.
    # CLI flag: -gateway.proxy.ruler.tls-ca-path
    [tls_ca_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Override the expected name on the server certificate.
    # CLI flag: -gateway.proxy.ruler.tls-server-name
    [tls_server_name: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Skip validating server certificate.
    # CLI flag: -gateway.proxy.ruler.tls-insecure-skip-verify
    [tls_insecure_skip_verify: &amp;lt;boolean&amp;gt; | default = false]

    # Override the default cipher suite list (separated by commas).
    # CLI flag: -gateway.proxy.ruler.tls-cipher-suites
    [tls_cipher_suites: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Override the default minimum TLS version. Allowed values: VersionTLS10,
    # VersionTLS11, VersionTLS12, VersionTLS13
    # CLI flag: -gateway.proxy.ruler.tls-min-version
    [tls_min_version: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Timeout for write requests to the backend, set to &amp;lt;=0 to disable.
    # CLI flag: -gateway.proxy.ruler.write-timeout
    [write_timeout: &amp;lt;duration&amp;gt; | default = 30s]

    # Timeout for read requests the backend, set to &amp;lt;=0 to disable.
    # CLI flag: -gateway.proxy.ruler.read-timeout
    [read_timeout: &amp;lt;duration&amp;gt; | default = 2m]

  query_scheduler:
    # URL for the backend. Use the scheme dns:// for HTTP over GPRC and the
    # scheme h2c:// for HTTP2 proxying.
    # CLI flag: -gateway.proxy.query-scheduler.url
    [url: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Enable keep alive for the backend.
    # CLI flag: -gateway.proxy.query-scheduler.enable-keepalive
    [enable_keepalive: &amp;lt;boolean&amp;gt; | default = true]

    # Enable TLS in the GRPC client. This flag needs to be enabled when any
    # other TLS flag is set. If set to false, insecure connection to gRPC server
    # will be used.
    # CLI flag: -gateway.proxy.query-scheduler.tls-enabled
    [tls_enabled: &amp;lt;boolean&amp;gt; | default = false]

    # Timeout when dialing backend. For proxying over GRPC, this will be used
    # only during the initial dial at startup. For proxying over HTTP this is
    # the connection timeout. Set to 0 to disable.
    # CLI flag: -gateway.proxy.query-scheduler.dial-timeout
    [dial_timeout: &amp;lt;duration&amp;gt; | default = 5s]

    # Path to the client certificate, which will be used for authenticating with
    # the server. Also requires the key path to be configured.
    # CLI flag: -gateway.proxy.query-scheduler.tls-cert-path
    [tls_cert_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Path to the key for the client certificate. Also requires the client
    # certificate to be configured.
    # CLI flag: -gateway.proxy.query-scheduler.tls-key-path
    [tls_key_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Path to the CA certificates to validate server certificate against. If not
    # set, the host&amp;#39;s root CA certificates are used.
    # CLI flag: -gateway.proxy.query-scheduler.tls-ca-path
    [tls_ca_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Override the expected name on the server certificate.
    # CLI flag: -gateway.proxy.query-scheduler.tls-server-name
    [tls_server_name: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Skip validating server certificate.
    # CLI flag: -gateway.proxy.query-scheduler.tls-insecure-skip-verify
    [tls_insecure_skip_verify: &amp;lt;boolean&amp;gt; | default = false]

    # Override the default cipher suite list (separated by commas).
    # CLI flag: -gateway.proxy.query-scheduler.tls-cipher-suites
    [tls_cipher_suites: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Override the default minimum TLS version. Allowed values: VersionTLS10,
    # VersionTLS11, VersionTLS12, VersionTLS13
    # CLI flag: -gateway.proxy.query-scheduler.tls-min-version
    [tls_min_version: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]

    # Timeout for write requests to the backend, set to &amp;lt;=0 to disable.
    # CLI flag: -gateway.proxy.query-scheduler.write-timeout
    [write_timeout: &amp;lt;duration&amp;gt; | default = 30s]

    # Timeout for read requests the backend, set to &amp;lt;=0 to disable.
    # CLI flag: -gateway.proxy.query-scheduler.read-timeout
    [read_timeout: &amp;lt;duration&amp;gt; | default = 2m]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;license_config&#34;&gt;license_config&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;license_config&lt;/code&gt; configures the license validation module.&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;# Filepath to license jwt file.
# CLI flag: -license.path
[path: &amp;lt;string&amp;gt; | default = &amp;#34;./license.jwt&amp;#34;]

# Interval to check for new or existing licenses.
# CLI flag: -license.sync-interval
[sync_interval: &amp;lt;duration&amp;gt; | default = 1h]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;tokengen_config&#34;&gt;tokengen_config&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;tokengen_config&lt;/code&gt; configures the tokengen target.&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;# The name of the access policy to generate a token for. It defaults to the
# built-in admin policy.
# CLI flag: -tokengen.access-policy
[access_policy: &amp;lt;string&amp;gt; | default = &amp;#34;__admin__&amp;#34;]

# If set, the generated token will be written to a file at the provided path in
# addition to being logged. Note that if the file already exists, it will not be
# overwritten, and tokengen will fail with an error.
# CLI flag: -tokengen.token-file
[token_file: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34;]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="gel-configuration-reference">GEL Configuration reference&lt;/h1>
&lt;!-- DO NOT EDIT THIS FILE - This file has been automatically generated from its .template -->
&lt;p>Grafana Enterprise Logs can be configured using a YAML file - specified using the &lt;code>-config.file&lt;/code> flag - or CLI flags. In case you combine both, CLI flags take precedence over the YAML config file.&lt;/p></description></item><item><title>Integrate Grafana Enterprise Logs with an existing OAuth</title><link>https://grafana.com/docs/enterprise-logs/v1.9.x/config/oauth/</link><pubDate>Tue, 16 Jul 2024 15:42:20 +0000</pubDate><guid>https://grafana.com/docs/enterprise-logs/v1.9.x/config/oauth/</guid><content><![CDATA[&lt;h1 id=&#34;integrate-grafana-enterprise-logs-with-an-existing-oauth&#34;&gt;Integrate Grafana Enterprise Logs with an existing OAuth&lt;/h1&gt;
&lt;p&gt;Grafana Enterprise Logs (GEL) supports the &lt;a href=&#34;https://openid.net/specs/openid-connect-core-1_0.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;strong&gt;OpenID Connect (OIDC)&lt;/strong&gt;&lt;/a&gt; core standard to validate tokens. This allows you to integrate GEL with an existing OAuth token provider at your organization.&lt;/p&gt;
&lt;p&gt;To support OIDC, provide a URL in the &lt;code&gt;auth.admin.oidc.url&lt;/code&gt; setting. This corresponds to the &lt;code&gt;jwks_uri&lt;/code&gt; field in the JSON object found at the &lt;a href=&#34;https://openid.net/specs/openid-connect-discovery-1_0.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;OpenID Connect Discovery&lt;/a&gt; endpoints such as &lt;code&gt;https://&amp;lt;example.com&amp;gt;/.well-known/openid-configuration&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;A JSON web token (JWT) is included as the password in HTTP basic authentication or as part of a bearer token in bearer authentication. The bearer token should have two parts separated by a &lt;code&gt;:&lt;/code&gt;. The first part is the tenant ID. The second part is the JWT.&lt;/p&gt;
&lt;p&gt;The JWT is validated against the URL specified above. If it is valid then an access policy name is extracted. The regular expression in &lt;code&gt;auth.admin.oidc.access_policy_regex&lt;/code&gt; is run against the JWT claim field specified in &lt;code&gt;auth.admin.oidc.access_policy_claim&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;A sub-match has to be present to extract the access policy. Only the first sub-match is used. You can use the regular expression &lt;code&gt;(.*)&lt;/code&gt; for the whole claim field.&lt;/p&gt;
&lt;p&gt;The regular expression syntax is &lt;a href=&#34;https://github.com/google/re2/wiki/Syntax&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;RE2&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;example-oauth-configuration&#34;&gt;Example OAuth configuration&lt;/h2&gt;
&lt;p&gt;To use OIDC specify the &lt;code&gt;auth.type&lt;/code&gt; as &lt;code&gt;enterprise&lt;/code&gt;. Here is an example auth section:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;auth:
  type: enterprise
  admin:
    oidc:
      url: http://127.0.0.1:5556/dex/keys
      access_policy_claim: &amp;#34;sub&amp;#34;
      access_policy_regex: &amp;#34;pref-([0-9]&amp;#43;)-.*&amp;#34;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Here is an example payload section of a valid JWT:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-json&#34;&gt;{
  &amp;#34;sub&amp;#34;: &amp;#34;pref-1234567890-abc&amp;#34;,
  &amp;#34;name&amp;#34;: &amp;#34;John Doe&amp;#34;,
  &amp;#34;admin&amp;#34;: true
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The extracted access policy is &lt;code&gt;1234567890&lt;/code&gt;.&lt;/p&gt;
]]></content><description>&lt;h1 id="integrate-grafana-enterprise-logs-with-an-existing-oauth">Integrate Grafana Enterprise Logs with an existing OAuth&lt;/h1>
&lt;p>Grafana Enterprise Logs (GEL) supports the &lt;a href="https://openid.net/specs/openid-connect-core-1_0.html" target="_blank" rel="noopener noreferrer">&lt;strong>OpenID Connect (OIDC)&lt;/strong>&lt;/a> core standard to validate tokens. This allows you to integrate GEL with an existing OAuth token provider at your organization.&lt;/p></description></item><item><title>Configure the Grafana Enterprise Logs gateway</title><link>https://grafana.com/docs/enterprise-logs/v1.9.x/config/gateway/</link><pubDate>Mon, 14 Apr 2025 21:05:47 +0000</pubDate><guid>https://grafana.com/docs/enterprise-logs/v1.9.x/config/gateway/</guid><content><![CDATA[&lt;h1 id=&#34;configure-the-grafana-enterprise-logs-gateway&#34;&gt;Configure the Grafana Enterprise Logs gateway&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This feature is only available in v1.1.0 release candidates. For the latest release candidates, refer to &lt;a href=&#34;/docs/enterprise-logs/v1.9.x/gel-releases/&#34;&gt;Download Grafana Enterprise Logs&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The Grafana Enterprise Logs (GEL) gateway is a service target. It can proxy requests to other GEL microservices. You can also use it for client-side load balancing of requests proxied to the distributors.&lt;/p&gt;
&lt;h2 id=&#34;configuration&#34;&gt;Configuration&lt;/h2&gt;
&lt;p&gt;There is more than one way to configure the gateway: you can configure it via a code block in the YAML configuration file for GEL, or you can use command-line flags.&lt;/p&gt;
&lt;h3 id=&#34;configuration-code-block&#34;&gt;Configuration code block&lt;/h3&gt;
&lt;p&gt;The gateway has its own configuration block in the GEL configuration files:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;gateway:
  proxy:
    default: &amp;lt;backend_proxy_config&amp;gt;
    [ admin_api: &amp;lt;backend_proxy_config&amp;gt; ]
    [ compactor: &amp;lt;backend_proxy_config&amp;gt; ]
    [ distributor: &amp;lt;backend_proxy_config&amp;gt; ]
    [ ingester: &amp;lt;backend_proxy_config&amp;gt; ]
    [ query_frontend: &amp;lt;backend_proxy_config&amp;gt; ]
    [ ruler: &amp;lt;backend_proxy_config&amp;gt; ]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;configuration-flags&#34;&gt;Configuration flags&lt;/h3&gt;
&lt;p&gt;To configure the gateway via command-line flags, make sure that each flag contains the path to the equivalent configuration field.&lt;/p&gt;
&lt;p&gt;To configure the distributor backend proxy URL, use the flag &lt;code&gt;-gateway.proxy.distributor.url=&amp;lt;distributor URL&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Likewise, given a configuration file field path of &lt;code&gt;gateway.proxy.query_frontend.url&lt;/code&gt;, the flag is &lt;code&gt;gateway.proxy.query-frontend.url&lt;/code&gt;.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;A path is joined by a period (&lt;code&gt;.&lt;/code&gt;) and dashes (&lt;code&gt;-&lt;/code&gt;). Underscores (&lt;code&gt;_&lt;/code&gt;) are invalid within these command-line flags.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h3 id=&#34;configure-the-backend-proxy&#34;&gt;Configure the backend proxy&lt;/h3&gt;
&lt;p&gt;A &lt;code&gt;backend_proxy&lt;/code&gt; section specifies the URL and configuration of the backend that you want proxied.
A URL is only required for the &lt;code&gt;default&lt;/code&gt; proxy configuration. All other proxy configurations use the &lt;code&gt;default&lt;/code&gt; URL if it is not explicitly configured.
Other proxy configurations do not inherit any other configuration from the &lt;code&gt;default&lt;/code&gt; proxy configuration.&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;url: &amp;lt;url&amp;gt; | default = &amp;lt;gateway.proxy.default.url&amp;gt;
[ enable_keepalive: &amp;lt;boolean&amp;gt; | default = true ]
[ tls_enabled: &amp;lt;boolean&amp;gt; | default = false ]
[ tls_ca_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34; ]
[ tls_cert_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34; ]
[ tls_key_path: &amp;lt;string&amp;gt; | default = &amp;#34;&amp;#34; ]
[ tls_insecure_skip_verify: &amp;lt;boolean&amp;gt; | default = false ]
[ read_timeout: &amp;lt;duration&amp;gt; | default = &amp;#34;120s&amp;#34; ]
[ write_timeout: &amp;lt;duration&amp;gt; | default = &amp;#34;30s&amp;#34; ]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;client-side-load-balancing&#34;&gt;Client-side load balancing&lt;/h2&gt;
&lt;p&gt;If you use a backend proxy URL that beings with &lt;code&gt;dns:///&lt;/code&gt;, the gateway creates a gRPC proxy with client-side round-robin load balancing instead of the default HTTP reverse proxy.
To configure client-side load balancing for requests to the distributors only, set the &lt;code&gt;gateway.proxy.distributor.url&lt;/code&gt; to &lt;code&gt;dns:///&amp;lt;distributor service&amp;gt;&lt;/code&gt;.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;There are three &lt;code&gt;/&lt;/code&gt; characters in the preceding DNS URL, which means that you are using the default DNS authority. For details about DNS URLs, refer to &lt;a href=&#34;https://tools.ietf.org/html/rfc4501&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;RFC 4501&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;Client-side load balancing is useful in ensuring that distributors are evenly loaded with requests.
Prometheus remote-write clients use HTTP persistent connections, also known as HTTP keep-alive, the clients re-use a single TCP connection for multiple requests and responses, which results in reduced latency for subsequent requests.&lt;/p&gt;
&lt;p&gt;Kubernetes Services are not load balancers; initial TCP connections are made using a random endpoint. After the connection is established, the same remote-write client talks to the same distributor server for its lifetime. This can mean an uneven load for your distributors and worse cluster performance overall.&lt;/p&gt;
&lt;p&gt;The GEL gateway solves this problem by exposing an HTTP server for receiving the client requests while using gRPC to talk to the distributors.
The gRPC proxy maintains a list of endpoints that are returned from the DNS lookup, and keeps persistent connections to each endpoint. The proxies are also configured to perform per-request, client-side load balancing across the endpoints.&lt;/p&gt;
&lt;h2 id=&#34;ring-endpoints&#34;&gt;Ring endpoints&lt;/h2&gt;
&lt;p&gt;The Gateway exposes the ring endpoints for the rulers, distributors, ingesters and compactors. These
endpoints require &lt;code&gt;admin&lt;/code&gt; scope permissions.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/ring&lt;/code&gt; for the ingesters&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/ruler/ring&lt;/code&gt; for the rulers&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/compactor/ring&lt;/code&gt; for the compactors&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/distributor/ring&lt;/code&gt; for the distributors&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="configure-the-grafana-enterprise-logs-gateway">Configure the Grafana Enterprise Logs gateway&lt;/h1>
&lt;blockquote>
&lt;p>&lt;strong>Note:&lt;/strong> This feature is only available in v1.1.0 release candidates. For the latest release candidates, refer to &lt;a href="/docs/enterprise-logs/v1.9.x/gel-releases/">Download Grafana Enterprise Logs&lt;/a>.&lt;/p></description></item></channel></rss>