<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Static mode on Grafana Labs</title><link>https://grafana.com/docs/agent/v0.37/static/</link><description>Recent content in Static mode on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/agent/v0.37/static/index.xml" rel="self" type="application/rss+xml"/><item><title>Set up Grafana Agent in static mode</title><link>https://grafana.com/docs/agent/v0.37/static/set-up/</link><pubDate>Fri, 06 Mar 2026 07:23:54 +0000</pubDate><guid>https://grafana.com/docs/agent/v0.37/static/set-up/</guid><content><![CDATA[&lt;h1 id=&#34;set-up-grafana-agent-in-static-mode&#34;&gt;Set up Grafana Agent in static mode&lt;/h1&gt;
&lt;p&gt;This section includes information that helps you get Grafana Agent in static mode installed and configured.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.37/static/set-up/install/&#34;&gt;Install Grafana Agent in static mode&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.37/static/set-up/start-agent/&#34;&gt;Start, restart, and stop Grafana Agent in static mode&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.37/static/set-up/deploy-agent/&#34;&gt;Deploy Grafana Agent in static mode&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.37/static/set-up/quick-starts/&#34;&gt;Grafana Agent quick starts&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
]]></content><description>&lt;h1 id="set-up-grafana-agent-in-static-mode">Set up Grafana Agent in static mode&lt;/h1>
&lt;p>This section includes information that helps you get Grafana Agent in static mode installed and configured.&lt;/p>
&lt;ul>&lt;li>
&lt;a href="/docs/agent/v0.37/static/set-up/install/">Install Grafana Agent in static mode&lt;/a>&lt;/li>&lt;li>
&lt;a href="/docs/agent/v0.37/static/set-up/start-agent/">Start, restart, and stop Grafana Agent in static mode&lt;/a>&lt;/li>&lt;li>
&lt;a href="/docs/agent/v0.37/static/set-up/deploy-agent/">Deploy Grafana Agent in static mode&lt;/a>&lt;/li>&lt;li>
&lt;a href="/docs/agent/v0.37/static/set-up/quick-starts/">Grafana Agent quick starts&lt;/a>&lt;/li>&lt;/ul></description></item><item><title>Configure static mode</title><link>https://grafana.com/docs/agent/v0.37/static/configuration/</link><pubDate>Fri, 06 Mar 2026 07:23:54 +0000</pubDate><guid>https://grafana.com/docs/agent/v0.37/static/configuration/</guid><content><![CDATA[&lt;h1 id=&#34;configure-static-mode&#34;&gt;Configure static mode&lt;/h1&gt;
&lt;p&gt;The configuration of static mode is split across two places:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A YAML file&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.37/static/configuration/flags/&#34;&gt;Command-line flags&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The YAML file is used to configure settings which are dynamic and can be
changed at runtime. The command-line flags then configure things which cannot
change at runtime, such as the listen port for the HTTP server.&lt;/p&gt;
&lt;p&gt;This file describes the YAML configuration, which is usually in a file named &lt;code&gt;config.yaml&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.37/static/configuration/server-config/&#34;&gt;server_config&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.37/static/configuration/metrics-config/&#34;&gt;metrics_config&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.37/static/configuration/logs-config/&#34;&gt;logs_config&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.37/static/configuration/traces-config/&#34;&gt;traces_config&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.37/static/configuration/integrations/&#34;&gt;integrations_config&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The configuration of Grafana Agent is &amp;ldquo;stable,&amp;rdquo; but subject to breaking changes
as individual features change. Breaking changes to configuration will be
well-documented.&lt;/p&gt;
&lt;h2 id=&#34;updating-configuration&#34;&gt;Updating configuration&lt;/h2&gt;
&lt;p&gt;The configuration file can be reloaded at runtime using the &lt;code&gt;/-/reload&lt;/code&gt; API
endpoint or sending a SIGHUP signal to the process.&lt;/p&gt;
&lt;h2 id=&#34;variable-substitution&#34;&gt;Variable substitution&lt;/h2&gt;
&lt;p&gt;You can use environment variables in the configuration file to set values that
need to be configurable during deployment. To enable this functionality, you
must pass &lt;code&gt;-config.expand-env&lt;/code&gt; as a command-line flag to the Agent.&lt;/p&gt;
&lt;p&gt;To refer to an environment variable in the config file, 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. The full list of supported syntax can be found at Drone&amp;rsquo;s
&lt;a href=&#34;https://github.com/drone/envsubst&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;envsubst repository&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;regex-capture-group-references&#34;&gt;Regex capture group references&lt;/h3&gt;
&lt;p&gt;When using &lt;code&gt;-config.expand-env&lt;/code&gt;, &lt;code&gt;VAR&lt;/code&gt; must be an alphanumeric string with at
least one non-digit character. If &lt;code&gt;VAR&lt;/code&gt; is a number, the expander will assume
you&amp;rsquo;re trying to use a regex capture group reference, and will coerce the result
to be one.&lt;/p&gt;
&lt;p&gt;This means references in your config file like &lt;code&gt;${1}&lt;/code&gt; will remain
untouched, but edge cases like &lt;code&gt;${1:-default}&lt;/code&gt; will also be coerced to &lt;code&gt;${1}&lt;/code&gt;,
which may be slightly unexpected.&lt;/p&gt;
&lt;h2 id=&#34;reloading-beta&#34;&gt;Reloading (beta)&lt;/h2&gt;
&lt;p&gt;The configuration file can be reloaded at runtime. Read the 
    &lt;a href=&#34;/docs/agent/v0.37/static/api/#reload-configuration-file-beta&#34;&gt;API documentation&lt;/a&gt; for more information.&lt;/p&gt;
&lt;p&gt;This functionality is in beta, and may have issues. Please open GitHub issues
for any problems you encounter.&lt;/p&gt;
&lt;h2 id=&#34;file-format&#34;&gt;File format&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 the &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 non-list parameters the
value is set to the specified default.&lt;/p&gt;
&lt;p&gt;Generic placeholders are defined as follows:&lt;/p&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|[smh])&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;labelname&amp;gt;&lt;/code&gt;: a string matching the regular expression &lt;code&gt;[a-zA-Z_][a-zA-Z0-9_]*&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;labelvalue&amp;gt;&lt;/code&gt;: a string of unicode characters&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;filename&amp;gt;&lt;/code&gt;: a valid path relative to current working directory or an
absolute path.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;host&amp;gt;&lt;/code&gt;: a valid string consisting of a hostname or IP followed by an optional port number&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;secret&amp;gt;&lt;/code&gt;: a regular string that is a secret, such as a password&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Support contents and default values of &lt;code&gt;config.yaml&lt;/code&gt;:&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;# Configures the server of the Agent used to enable self-scraping.
[server: &amp;lt;server_config&amp;gt;]

# Configures metric collection.
# In previous versions of the agent, this field was called &amp;#34;prometheus&amp;#34;.
[metrics: &amp;lt;metrics_config&amp;gt;]

# Configures log collection.
# In previous versions of the agent, this field was called &amp;#34;loki&amp;#34;.
[logs: &amp;lt;logs_config&amp;gt;]

# Configures Traces trace collection.
# In previous versions of the agent, this field was called &amp;#34;tempo&amp;#34;.
[traces: &amp;lt;traces_config&amp;gt;]

# Configures integrations for the Agent.
[integrations: &amp;lt;integrations_config&amp;gt;]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;remote-configuration-experimental&#34;&gt;Remote Configuration (Experimental)&lt;/h2&gt;
&lt;p&gt;An experimental feature for fetching remote configuration files over HTTP/S can be
enabled by passing the &lt;code&gt;-enable-features=remote-configs&lt;/code&gt; flag at the command line.
With this feature enabled, you may pass an HTTP/S URL to the &lt;code&gt;-config.file&lt;/code&gt; flag.&lt;/p&gt;
&lt;p&gt;The following flags will configure basic auth for requests made to HTTP/S remote config URLs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-config.url.basic-auth-user &amp;lt;user&amp;gt;&lt;/code&gt;: the basic auth username&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-config.url.basic-auth-password-file &amp;lt;file&amp;gt;&lt;/code&gt;: path to a file containing the basic auth password&lt;/li&gt;
&lt;/ul&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;This beta feature is subject to change in future releases.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

]]></content><description>&lt;h1 id="configure-static-mode">Configure static mode&lt;/h1>
&lt;p>The configuration of static mode is split across two places:&lt;/p>
&lt;ul>
&lt;li>A YAML file&lt;/li>
&lt;li>
&lt;a href="/docs/agent/v0.37/static/configuration/flags/">Command-line flags&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>The YAML file is used to configure settings which are dynamic and can be
changed at runtime. The command-line flags then configure things which cannot
change at runtime, such as the listen port for the HTTP server.&lt;/p></description></item><item><title>Static mode APIs (Stable)</title><link>https://grafana.com/docs/agent/v0.37/static/api/</link><pubDate>Fri, 06 Mar 2026 07:23:54 +0000</pubDate><guid>https://grafana.com/docs/agent/v0.37/static/api/</guid><content><![CDATA[&lt;h1 id=&#34;static-mode-apis-stable&#34;&gt;Static mode APIs (Stable)&lt;/h1&gt;
&lt;p&gt;The API for static mode is divided into several parts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#config-management-api-beta&#34;&gt;Config Management API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#agent-api&#34;&gt;Agent API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#integrations-api-experimental&#34;&gt;Integrations API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#ready--health-api&#34;&gt;Ready/Healthy API&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;API endpoints are stable unless otherwise noted.&lt;/p&gt;
&lt;h2 id=&#34;config-management-api-beta&#34;&gt;Config management API (Beta)&lt;/h2&gt;
&lt;p&gt;Grafana Agent exposes a configuration management REST API for managing instance configurations when it&amp;rsquo;s running in 
    &lt;a href=&#34;/docs/agent/v0.37/static/configuration/scraping-service/&#34;&gt;scraping service mode&lt;/a&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;The scraping service mode is a requirement for the configuration management
API, however this isn&amp;rsquo;t a prerequisite for the Agent API or Ready/Healthy API.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;The following endpoints are exposed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;List configs: &lt;a href=&#34;#list-configs&#34;&gt;&lt;code&gt;GET /agent/api/v1/configs&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Get config: &lt;a href=&#34;#get-config&#34;&gt;&lt;code&gt;GET /agent/api/v1/configs/{name}&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update config: &lt;a href=&#34;#update-config&#34;&gt;&lt;code&gt;PUT /agent/api/v1/config/{name}&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Delete config: &lt;a href=&#34;#delete-config&#34;&gt;&lt;code&gt;DELETE /agent/api/v1/config/{name}&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&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;If you are running Grafana Agent in a Docker container and you want to expose the API outside the Docker container, you must change the default HTTP listen address from &lt;code&gt;127.0.0.1:12345&lt;/code&gt; to a valid network interface address.
You can change the HTTP listen address with the command-line flag: &lt;code&gt;-server.http.address=0.0.0.0:12345&lt;/code&gt;.
For more information, refer to the &lt;a href=&#34;/docs/agent/latest/static/configuration/flags/#server&#34;&gt;Server&lt;/a&gt; command-line flag documentation.&lt;/p&gt;
&lt;p&gt;You must also publish the port in Docker. Refer to &lt;a href=&#34;https://docs.docker.com/network/#published-ports&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Published ports&lt;/a&gt; in the Docker documentation for more information.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h3 id=&#34;api-response&#34;&gt;API response&lt;/h3&gt;
&lt;p&gt;All Config Management API endpoints will return responses in the following
form, unless an internal service error prevents the server from responding
properly:&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;{
  &amp;#34;status&amp;#34;: &amp;#34;success&amp;#34; | &amp;#34;error&amp;#34;,
  &amp;#34;data&amp;#34;: {}
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Status will be either &lt;code&gt;success&lt;/code&gt; or &lt;code&gt;error&lt;/code&gt;. All 2xx responses will be
accompanied by a &lt;code&gt;success&lt;/code&gt; value for the status field. 4xx and 5xx
responses will provide a value of &lt;code&gt;error&lt;/code&gt;. All requests may potentially
return 500 on an internal error. Other non-500 responses will be documented
per API.&lt;/p&gt;
&lt;p&gt;The data field may or may not be present, depending on the endpoint. It
provides extra information for the query. The documentation for each endpoint
will describe the full response provided.&lt;/p&gt;
&lt;h3 id=&#34;list-configs&#34;&gt;List configs&lt;/h3&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;GET /agent/api/v1/configs&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;List configs returns a list of the named configurations currently known by the
underlying KV store.&lt;/p&gt;
&lt;p&gt;Status code: 200 on success.
Response:&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;{
  &amp;#34;status&amp;#34;: &amp;#34;success&amp;#34;,
  &amp;#34;data&amp;#34;: {
    &amp;#34;configs&amp;#34;: [
      // list of config names:
      &amp;#34;a&amp;#34;,
      &amp;#34;b&amp;#34;,
      &amp;#34;c&amp;#34;,
      // ...
    ]
  }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;get-config&#34;&gt;Get config&lt;/h3&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;GET /agent/api/v1/configs/{name}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Get config returns a single configuration by name. The configuration must
exist or an error will be returned. URL-encoded names will be retrieved in decoded
form. e.g., &lt;code&gt;hello%2Fworld&lt;/code&gt; will represent the config named &lt;code&gt;hello/world&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Status code: 200 on success, 400 on invalid config name.
Response on success:&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;{
  &amp;#34;status&amp;#34;: &amp;#34;success&amp;#34;,
  &amp;#34;data&amp;#34;: {
    &amp;#34;value&amp;#34;: &amp;#34;/* YAML configuration */&amp;#34;
  }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;update-config&#34;&gt;Update config&lt;/h3&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;PUT /agent/api/v1/config/{name}
POST /agent/api/v1/config/{name}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Update config updates or adds a new configuration by name. If a configuration
with the same name already exists, then it will be completely overwritten.&lt;/p&gt;
&lt;p&gt;URL-encoded names are stored in decoded form. e.g., &lt;code&gt;hello%2Fworld&lt;/code&gt; will
represent the config named &lt;code&gt;hello/world&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The request body passed to this endpoint must match the format of 
    &lt;a href=&#34;/docs/agent/v0.37/static/configuration/metrics-config/&#34;&gt;metrics_instance_config&lt;/a&gt;
defined in the Configuration Reference. The name field of the configuration is
ignored and the name in the URL takes precedence. The request body must be
formatted as YAML.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-warning&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Warning&lt;/p&gt;&lt;p&gt;By default, all instance configuration files that read
credentials from a file on disk will be rejected. This prevents malicious users
from reading the contents of arbitrary files as passwords and sending their
contents to fake remote_write endpoints. To change the behavior, set
&lt;code&gt;dangerous_allow_reading_files&lt;/code&gt; to true in the &lt;code&gt;scraping_service&lt;/code&gt; block.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;Status code: 201 with a new config, 200 on updated config.
Response on success:&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;{
  &amp;#34;status&amp;#34;: &amp;#34;success&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;delete-config&#34;&gt;Delete config&lt;/h3&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;DELETE /agent/api/v1/config/{name}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Delete config attempts to delete a configuration by name. The named
configuration must exist; deleting a nonexistent config will result in an
error.&lt;/p&gt;
&lt;p&gt;URL-encoded names will be interpreted in decoded form. e.g., &lt;code&gt;hello%2Fworld&lt;/code&gt;
will represent the config named &lt;code&gt;hello/world&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Status code: 200 on success, 400 with invalid config name.
Response on success:&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;{
  &amp;#34;status&amp;#34;: &amp;#34;success&amp;#34;
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;agent-api&#34;&gt;Agent API&lt;/h2&gt;
&lt;h3 id=&#34;list-current-running-instances-of-metrics-subsystem&#34;&gt;List current running instances of metrics subsystem&lt;/h3&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;GET /agent/api/v1/metrics/instances&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&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;The deprecated alias is &lt;code&gt;/agent/api/v1/instances&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;Status code: 200 on success.
Response on success:&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;{
  &amp;#34;status&amp;#34;: &amp;#34;success&amp;#34;,
  &amp;#34;data&amp;#34;: [
    &amp;lt;strings of instance names that are currently running&amp;gt;
  ]
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;list-current-scrape-targets-of-metrics-subsystem&#34;&gt;List current scrape targets of metrics subsystem&lt;/h3&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;GET /agent/api/v1/metrics/targets&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&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;The deprecated alias is &lt;code&gt;/agent/api/v1/targets&lt;/code&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;This endpoint collects all metrics subsystem targets known to the Agent across all
running instances. Only targets being scraped from the local Agent will be returned. If
running in scraping service mode, this endpoint must be invoked in all Agents
separately to get the combined set of targets across the whole Agent cluster.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;labels&lt;/code&gt; fields shows the labels that will be added to metrics from the
target, while the &lt;code&gt;discovered_labels&lt;/code&gt; field shows all labels found during
service discovery.&lt;/p&gt;
&lt;p&gt;Status code: 200 on success.
Response on success:&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;{
  &amp;#34;status&amp;#34;: &amp;#34;success&amp;#34;,
  &amp;#34;data&amp;#34;: [
    {
      &amp;#34;instance&amp;#34;: &amp;lt;string, instance config name&amp;gt;,
      &amp;#34;target_group&amp;#34;: &amp;lt;string, scrape config group name&amp;gt;,
      &amp;#34;endpoint&amp;#34;: &amp;lt;string, URL being scraped&amp;gt;
      &amp;#34;state&amp;#34;: &amp;lt;string, one of up, down, unknown&amp;gt;,
      &amp;#34;discovered_labels&amp;#34;: {
        &amp;#34;__address__&amp;#34;: &amp;#34;&amp;lt;address&amp;gt;&amp;#34;,
        ...
      },
      &amp;#34;labels&amp;#34;: {
        &amp;#34;label_a&amp;#34;: &amp;#34;value_a&amp;#34;,
        ...
      },
      &amp;#34;last_scrape&amp;#34;: &amp;lt;string, RFC 3339 timestamp of last scrape&amp;gt;,
      &amp;#34;scrape_duration_ms&amp;#34;: &amp;lt;number, last scrape duration in milliseconds&amp;gt;,
      &amp;#34;scrape_error&amp;#34;: &amp;lt;string, last error. empty if scrape succeeded&amp;gt;
    },
    ...
  ]
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;accept-remote_write-requests&#34;&gt;Accept remote_write requests&lt;/h3&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;POST /agent/api/v1/metrics/instance/{instance}/write&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint accepts Prometheus-compatible remote_write POST requests, and
appends their contents into an instance&amp;rsquo;s WAL.&lt;/p&gt;
&lt;p&gt;Replace &lt;code&gt;{instance}&lt;/code&gt; with the name of the metrics instance from your config
file. For example, this block defines the &amp;ldquo;dev&amp;rdquo; and &amp;ldquo;prod&amp;rdquo; instances:&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;metrics:
  configs:
  - name: dev     # /agent/api/v1/metrics/instance/dev/write
    ...
  - name: prod    # /agent/api/v1/metrics/instance/prod/write
    ...&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Status code: 204 on success, 400 for bad requests related to the provided
instance or POST payload format and content, 500 for cases where appending
to the WAL failed.&lt;/p&gt;
&lt;h3 id=&#34;list-current-running-instances-of-logs-subsystem&#34;&gt;List current running instances of logs subsystem&lt;/h3&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;GET /agent/api/v1/logs/instances&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Status code: 200 on success.
Response on success:&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;{
  &amp;#34;status&amp;#34;: &amp;#34;success&amp;#34;,
  &amp;#34;data&amp;#34;: [
    &amp;lt;strings of instance names that are currently running&amp;gt;
  ]
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;list-current-scrape-targets-of-logs-subsystem&#34;&gt;List current scrape targets of logs subsystem&lt;/h3&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;GET /agent/api/v1/logs/targets&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint collects all logs subsystem targets known to the Agent across
all running instances. Only targets being scraped from Promtail will be returned.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;labels&lt;/code&gt; fields shows the labels that will be added to metrics from the
target, while the &lt;code&gt;discovered_labels&lt;/code&gt; field shows all labels found during
service discovery.&lt;/p&gt;
&lt;p&gt;Status code: 200 on success.
Response on success:&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;{
  &amp;#34;status&amp;#34;: &amp;#34;success&amp;#34;,
  &amp;#34;data&amp;#34;: [
    {
      &amp;#34;instance&amp;#34;: &amp;#34;default&amp;#34;,
      &amp;#34;target_group&amp;#34;: &amp;#34;varlogs&amp;#34;,
      &amp;#34;type&amp;#34;: &amp;#34;File&amp;#34;,
      &amp;#34;labels&amp;#34;: {
        &amp;#34;job&amp;#34;: &amp;#34;varlogs&amp;#34;
      },
      &amp;#34;discovered_labels&amp;#34;: {
        &amp;#34;__address__&amp;#34;: &amp;#34;localhost&amp;#34;,
        &amp;#34;__path__&amp;#34;: &amp;#34;/var/log/*log&amp;#34;,
        &amp;#34;job&amp;#34;: &amp;#34;varlogs&amp;#34;
      },
      &amp;#34;ready&amp;#34;: true,
      &amp;#34;details&amp;#34;: {
        &amp;#34;/var/log/alternatives.log&amp;#34;: 13386,
        &amp;#34;/var/log/apport.log&amp;#34;: 0,
        &amp;#34;/var/log/auth.log&amp;#34;: 37009,
        &amp;#34;/var/log/bootstrap.log&amp;#34;: 107347,
        &amp;#34;/var/log/dpkg.log&amp;#34;: 374420,
        &amp;#34;/var/log/faillog&amp;#34;: 0,
        &amp;#34;/var/log/fontconfig.log&amp;#34;: 11629,
        &amp;#34;/var/log/gpu-manager.log&amp;#34;: 1541,
        &amp;#34;/var/log/kern.log&amp;#34;: 782582,
        &amp;#34;/var/log/lastlog&amp;#34;: 0,
        &amp;#34;/var/log/syslog&amp;#34;: 788450
      }
    }
  ]
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;reload-configuration-file-beta&#34;&gt;Reload configuration file (beta)&lt;/h3&gt;
&lt;p&gt;This endpoint is currently in beta and may have issues. Please open any issues
you encounter.&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;GET /-/reload
POST /-/reload&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint will re-read the configuration file from disk and refresh the
entire state of the Agent to reflect the new file on disk:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HTTP Server&lt;/li&gt;
&lt;li&gt;Prometheus metrics subsystem&lt;/li&gt;
&lt;li&gt;Loki logs subsystem&lt;/li&gt;
&lt;li&gt;Tempo traces subsystem&lt;/li&gt;
&lt;li&gt;Integrations&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Valid configurations will be applied to each of the subsystems listed above, and
&lt;code&gt;/-/reload&lt;/code&gt; will return with a status code of 200 once all subsystems have been
updated. Malformed configuration files (invalid YAML, failed validation checks)
will be immediately rejected with a status code of 400.&lt;/p&gt;
&lt;p&gt;Well-formed configuration files can still be invalid for various reasons, such
as not having permissions to read the WAL directory. Issues such as these will
cause per-subsystem problems while reloading the configuration, and will leave
that subsystem in an undefined state. Specific errors encountered during reload
will be logged, and should be fixed before calling &lt;code&gt;/-/reload&lt;/code&gt; again.&lt;/p&gt;
&lt;p&gt;Status code: 200 on success, 400 otherwise.&lt;/p&gt;
&lt;h3 id=&#34;show-configuration-file&#34;&gt;Show configuration file&lt;/h3&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;GET /-/config&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint prints out the currently loaded configuration the Agent is using.
The returned YAML has defaults applied, and only shows changes to the state that
validated successfully, so the results will not identically match the
configuration file on disk.&lt;/p&gt;
&lt;p&gt;Status code: 200 on success.&lt;/p&gt;
&lt;h3 id=&#34;generate-support-bundle&#34;&gt;Generate support bundle&lt;/h3&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;GET /-/support?duration=N&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint returns a &amp;lsquo;support bundle&amp;rsquo;, a zip file that contains information
about a running agent, and can be used as a baseline of information when trying
to debug an issue.&lt;/p&gt;
&lt;p&gt;The duration parameter is optional, must be less than or equal to the
configured HTTP server write timeout, and if not provided, defaults to it.
The endpoint is only exposed to the agent&amp;rsquo;s HTTP server listen address, which
defaults to &lt;code&gt;localhost:12345&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The support bundle contains all information in plain text, so that it can be
inspected before sharing, to verify that no sensitive information has leaked.&lt;/p&gt;
&lt;p&gt;In addition, you can inspect the &lt;a href=&#34;https://github.com/grafana/agent/tree/main/pkg/supportbundle&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;supportbundle package&lt;/a&gt;
to verify the code that is being used to generate these bundles.&lt;/p&gt;
&lt;p&gt;A support bundle contains the following data:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;agent-config.yaml&lt;/code&gt; contains the current agent configuration (when the &lt;code&gt;-config.enable-read-api&lt;/code&gt; flag is passed).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;agent-logs.txt&lt;/code&gt; contains the agent logs during the bundle generation.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;agent-metadata.yaml&lt;/code&gt; contains the agent&amp;rsquo;s build version, operating system, architecture, uptime, plus a string payload defining which extra agent features have been enabled via command-line flags.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;agent-metrics-instances.json&lt;/code&gt; and &lt;code&gt;agent-metrics-targets.json&lt;/code&gt; contain the active metric subsystem instances and the discovered scrape targets for each one.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;agent-logs-instances.json&lt;/code&gt; and &lt;code&gt;agent-logs-targets.json&lt;/code&gt; contains the active logs subsystem instances and the discovered log targets for each one.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;agent-metrics.txt&lt;/code&gt; contains a snapshot of the agent&amp;rsquo;s internal metrics.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;pprof/&lt;/code&gt; directory contains Go runtime profiling data (CPU, heap, goroutine, mutex, block profiles) as exported by the pprof package.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;integrations-api-experimental&#34;&gt;Integrations API (Experimental)&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;WARNING&lt;/strong&gt;: This API is currently only available when the experimental

    &lt;a href=&#34;/docs/agent/v0.37/static/configuration/integrations/integrations-next/&#34;&gt;integrations revamp&lt;/a&gt;
is enabled. Both the revamp and this API are subject to change while they
are still experimental.&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;integrations-sd-api&#34;&gt;Integrations SD API&lt;/h3&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;GET /agent/api/v1/metrics/integrations/sd&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint returns all running metrics-based integrations. It conforms to
the Prometheus &lt;a href=&#34;https://prometheus.io/docs/prometheus/2.45/configuration/configuration/#http_sd_config&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;http_sd_config API&lt;/a&gt;.
Targets include integrations regardless of autoscrape being enabled; this
allows for manually configuring scrape jobs to collect metrics from an
integration running on an external agent.&lt;/p&gt;
&lt;p&gt;The following labels will be present on all returned targets:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;instance&lt;/code&gt;: The unique instance ID of the running integration.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;job&lt;/code&gt;: &lt;code&gt;integrations/&amp;lt;__meta_agent_integration_name&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;agent_hostname&lt;/code&gt;: &lt;code&gt;hostname:port&lt;/code&gt; of the agent running the integration.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;__meta_agent_integration_name&lt;/code&gt;: The name of the integration.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;__meta_agent_integration_instance&lt;/code&gt;: The unique instance ID for the running integration.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;__meta_agent_integration_autoscrape&lt;/code&gt;: &lt;code&gt;1&lt;/code&gt; if autoscrape is enabled for this integration, &lt;code&gt;0&lt;/code&gt; otherwise.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To reduce the load on the agent&amp;rsquo;s HTTP server, the following query parameters
may also be provided to the URL:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;integrations&lt;/code&gt;: Comma-delimited list of integrations to return. i.e., &lt;code&gt;agent,node_exporter&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;instance&lt;/code&gt;: Return all integrations matching a specific value for instance.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Status code: 200 if successful.
Response on success:&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;[
  {
    &amp;#34;targets&amp;#34;: [ &amp;#34;&amp;lt;host&amp;gt;&amp;#34;, ... ],
    &amp;#34;labels&amp;#34;: {
      &amp;#34;&amp;lt;labelname&amp;gt;&amp;#34;: &amp;#34;&amp;lt;labelvalue&amp;gt;&amp;#34;, ...
    }
  },
  ...
]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;integrations-autoscrape-targets&#34;&gt;Integrations autoscrape targets&lt;/h3&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;GET /agent/api/v1/metrics/integrations/targets&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This endpoint returns all integrations for which autoscrape is enabled. The
response is identical to &lt;a href=&#34;#list-current-scrape-targets-of-logs-subsystem&#34;&gt;&lt;code&gt;/agent/api/v1/metrics/targets&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Status code: 200 on success.
Response on success:&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;{
  &amp;#34;status&amp;#34;: &amp;#34;success&amp;#34;,
  &amp;#34;data&amp;#34;: [
    {
      &amp;#34;instance&amp;#34;: &amp;lt;string, metrics instance where autoscraped metrics are sent&amp;gt;,
      &amp;#34;target_group&amp;#34;: &amp;lt;string, scrape config group name&amp;gt;,
      &amp;#34;endpoint&amp;#34;: &amp;lt;string, URL being scraped&amp;gt;
      &amp;#34;state&amp;#34;: &amp;lt;string, one of up, down, unknown&amp;gt;,
      &amp;#34;discovered_labels&amp;#34;: {
        &amp;#34;__address__&amp;#34;: &amp;#34;&amp;lt;address&amp;gt;&amp;#34;,
        ...
      },
      &amp;#34;labels&amp;#34;: {
        &amp;#34;label_a&amp;#34;: &amp;#34;value_a&amp;#34;,
        ...
      },
      &amp;#34;last_scrape&amp;#34;: &amp;lt;string, RFC 3339 timestamp of last scrape&amp;gt;,
      &amp;#34;scrape_duration_ms&amp;#34;: &amp;lt;number, last scrape duration in milliseconds&amp;gt;,
      &amp;#34;scrape_error&amp;#34;: &amp;lt;string, last error. empty if scrape succeeded&amp;gt;
    },
    ...
  ]
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;ready--health-api&#34;&gt;Ready / health API&lt;/h2&gt;
&lt;h3 id=&#34;readiness-check&#34;&gt;Readiness check&lt;/h3&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;GET /-/ready&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Status code: 200 if ready.&lt;/p&gt;
&lt;p&gt;Response:&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;Agent is Ready.&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;healthiness-check&#34;&gt;Healthiness check&lt;/h3&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;GET /-/healthy&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Status code: 200 if healthy.&lt;/p&gt;
&lt;p&gt;Response:&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;Agent is Healthy.&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="static-mode-apis-stable">Static mode APIs (Stable)&lt;/h1>
&lt;p>The API for static mode is divided into several parts:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="#config-management-api-beta">Config Management API&lt;/a>&lt;/li>
&lt;li>&lt;a href="#agent-api">Agent API&lt;/a>&lt;/li>
&lt;li>&lt;a href="#integrations-api-experimental">Integrations API&lt;/a>&lt;/li>
&lt;li>&lt;a href="#ready--health-api">Ready/Healthy API&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>API endpoints are stable unless otherwise noted.&lt;/p></description></item><item><title>Operation guide</title><link>https://grafana.com/docs/agent/v0.37/static/operation-guide/</link><pubDate>Fri, 06 Mar 2026 07:23:54 +0000</pubDate><guid>https://grafana.com/docs/agent/v0.37/static/operation-guide/</guid><content><![CDATA[&lt;h1 id=&#34;operation-guide&#34;&gt;Operation guide&lt;/h1&gt;
&lt;p&gt;This guide helps you operate Grafana Agent.&lt;/p&gt;
&lt;h2 id=&#34;horizontal-scaling&#34;&gt;Horizontal Scaling&lt;/h2&gt;
&lt;p&gt;There are three options to horizontally scale your deployment of Grafana Agents:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#host-filtering-beta&#34;&gt;Host filtering&lt;/a&gt; requires you to run one Agent on every
machine you wish to collect metrics from. Agents will only collect metrics
from the machines they run on.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#hashmod-sharding-stable&#34;&gt;Hashmod sharding&lt;/a&gt; allows you to roughly shard the
discovered set of targets by using hashmod/keep relabel rules.&lt;/li&gt;
&lt;li&gt;The 
    &lt;a href=&#34;/docs/agent/v0.37/static/configuration/scraping-service/&#34;&gt;scraping service&lt;/a&gt; allows you to cluster Grafana
Agents and have them distribute per-tenant configs throughout the cluster.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each has their own set of tradeoffs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Host Filtering (Beta)
&lt;ul&gt;
&lt;li&gt;Pros
&lt;ul&gt;
&lt;li&gt;Does not need specialized configs per agent&lt;/li&gt;
&lt;li&gt;No external dependencies required to operate&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cons
&lt;ul&gt;
&lt;li&gt;Can cause significant load on service discovery APIs&lt;/li&gt;
&lt;li&gt;Requires each Agent to have the same list of scrape configs/remote_writes&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Hashmod sharding (Stable)
&lt;ul&gt;
&lt;li&gt;Pros
&lt;ul&gt;
&lt;li&gt;Exact control on the number of shards to run&lt;/li&gt;
&lt;li&gt;Smaller load on SD compared to host filtering (as there are a smaller # of
Agents)&lt;/li&gt;
&lt;li&gt;No external dependencies required to operate&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cons
&lt;ul&gt;
&lt;li&gt;Each Agent must have a specialized config with their shard number inserted
into the hashmod/keep relabel rule pair.&lt;/li&gt;
&lt;li&gt;Requires each Agent to have the same list of scrape configs/remote_writes,
with the exception of the hashmod rule being different.&lt;/li&gt;
&lt;li&gt;Hashmod is not &lt;a href=&#34;https://en.wikipedia.org/wiki/Consistent_hashing&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;consistent hashing&lt;/a&gt;,
so up to 100% of jobs will move to a new machine when scaling shards.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Scraping service (Beta)
&lt;ul&gt;
&lt;li&gt;Pros
&lt;ul&gt;
&lt;li&gt;Agents don&amp;rsquo;t have to have a synchronized set of scrape configs / remote_writes
(they pull from a centralized location).&lt;/li&gt;
&lt;li&gt;Exact control on the number of shards to run.&lt;/li&gt;
&lt;li&gt;Uses &lt;a href=&#34;https://en.wikipedia.org/wiki/Consistent_hashing&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;consistent hashing&lt;/a&gt;,
so only 1/N jobs will move to a new machine when scaling shards.&lt;/li&gt;
&lt;li&gt;Smallest load on SD compared to host filtering, as only one Agent is
responsible for a config.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cons
&lt;ul&gt;
&lt;li&gt;Centralized configs must discover a 
    &lt;a href=&#34;/docs/agent/v0.37/static/configuration/scraping-service/#best-practices&#34;&gt;minimal set of targets&lt;/a&gt;
to distribute evenly.&lt;/li&gt;
&lt;li&gt;Requires running a separate KV store to store the centralized configs.&lt;/li&gt;
&lt;li&gt;Managing centralized configs adds operational burden over managing a config
file.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;host-filtering-beta&#34;&gt;Host filtering (Beta)&lt;/h2&gt;
&lt;p&gt;Host filtering implements a form of &amp;ldquo;dumb sharding,&amp;rdquo; where operators may deploy
one Grafana Agent instance per machine in a cluster, all using the same
configuration, and the Grafana Agents will only scrape targets that are
running on the same node as the Agent.&lt;/p&gt;
&lt;p&gt;Running with &lt;code&gt;host_filter: true&lt;/code&gt; means that if you have a target whose host
machine is not also running a Grafana Agent process, &lt;em&gt;that target will not
be scraped!&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Host filtering is usually paired with a dedicated Agent process that is used for
scraping targets that are running outside of a given cluster. For example, when
running the Grafana Agent on GKE, you would have a DaemonSet with
&lt;code&gt;host_filter&lt;/code&gt; for scraping in-cluster targets, and a single dedicated Deployment
for scraping other targets that are not running on a cluster node, such as the
Kubernetes control plane API.&lt;/p&gt;
&lt;p&gt;If you want to scale your scrape load without host filtering, you can use the

    &lt;a href=&#34;/docs/agent/v0.37/static/configuration/scraping-service/&#34;&gt;scraping service&lt;/a&gt; instead.&lt;/p&gt;
&lt;p&gt;The host name of the Agent is determined by reading &lt;code&gt;$HOSTNAME&lt;/code&gt;. If &lt;code&gt;$HOSTNAME&lt;/code&gt;
isn&amp;rsquo;t defined, the Agent will use Go&amp;rsquo;s &lt;a href=&#34;https://golang.org/pkg/os/#Hostname&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;os.Hostname&lt;/a&gt;
to determine the hostname.&lt;/p&gt;
&lt;p&gt;The following meta-labels are used to determine if a target is running on the
same machine as the Agent:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;__address__&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;__meta_consul_node&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;__meta_dockerswarm_node_id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;__meta_dockerswarm_node_hostname&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;__meta_dockerswarm_node_address&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;__meta_kubernetes_pod_node_name&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;__meta_kubernetes_node_name&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;__host__&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The final label, &lt;code&gt;__host__&lt;/code&gt;, isn&amp;rsquo;t a label added by any Prometheus service
discovery mechanism. Rather, &lt;code&gt;__host__&lt;/code&gt; can be generated by using
&lt;code&gt;host_filter_relabel_configs&lt;/code&gt;. This allows for custom relabeling
rules to determine the hostname where the predefined ones fail. Relabeling rules
added with &lt;code&gt;host_filter_relabel_configs&lt;/code&gt; are temporary and just used for the
host_filtering mechanism. Full relabeling rules should be applied in the
appropriate &lt;code&gt;scrape_config&lt;/code&gt; instead.&lt;/p&gt;
&lt;p&gt;Note that scrape_config &lt;code&gt;relabel_configs&lt;/code&gt; do not apply to the host filtering
logic; only &lt;code&gt;host_filter_relabel_configs&lt;/code&gt; will work.&lt;/p&gt;
&lt;p&gt;If the determined hostname matches any of the meta labels, the discovered target
is allowed. Otherwise, the target is ignored, and will not show up in the

    &lt;a href=&#34;/docs/agent/v0.37/static/api/#agent-api&#34;&gt;targets API&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;hashmod-sharding-stable&#34;&gt;Hashmod sharding (Stable)&lt;/h2&gt;
&lt;p&gt;Grafana Agents can be sharded by using a pair of hashmod/keep relabel rules.
These rules will hash the address of a target and modulus it with the number
of Agent shards that are running.&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;scrape_configs:
- job_name: some_job
  # Add usual service discovery here, such as static_configs
  relabel_configs:
  - source_labels: [__address__]
    modulus:       4    # 4 shards
    target_label:  __tmp_hash
    action:        hashmod
  - source_labels: [__tmp_hash]
    regex:         ^1$  # This is the 2nd shard
    action:        keep&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Add the &lt;code&gt;relabel_configs&lt;/code&gt; to all of your scrape_config blocks. Ensure that each
running Agent shard has a different value for the &lt;code&gt;regex&lt;/code&gt;; the first Agent shard
should have &lt;code&gt;^0$&lt;/code&gt;, the second should have &lt;code&gt;^1$&lt;/code&gt;, and so on, up to &lt;code&gt;^3$&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This sharding mechanism means each Agent will ignore roughly 1/N of the total
targets, where N is the number of shards. This allows for horizontal scaling the
number of Agents and distributing load between them.&lt;/p&gt;
&lt;p&gt;Note that the hashmod used here is not a consistent hashing algorithm; this
means that changing the number of shards may cause any number of targets to move
to a new shard, up to 100%. When moving to a new shard, any existing data in the
WAL from the old machine is effectively discarded.&lt;/p&gt;
&lt;h2 id=&#34;prometheus-instances&#34;&gt;Prometheus instances&lt;/h2&gt;
&lt;p&gt;The Grafana Agent defines a concept of a Prometheus &lt;em&gt;Instance&lt;/em&gt;, which is
its own mini Prometheus-lite server. The instance runs a combination of
Prometheus service discovery, scraping, a WAL for storage, and &lt;code&gt;remote_write&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Instances allow for fine grained control of what data gets scraped and where it
gets sent. Users can easily define two Instances that scrape different subsets
of metrics and send them to two completely different remote_write systems.&lt;/p&gt;
&lt;p&gt;Instances are especially relevant to the 
    &lt;a href=&#34;/docs/agent/v0.37/static/configuration/scraping-service/&#34;&gt;scraping service mode&lt;/a&gt;,
where breaking up your scrape configs into multiple Instances is required for
sharding and balancing scrape load across a cluster of Agents.&lt;/p&gt;
&lt;h2 id=&#34;instance-sharing-stable&#34;&gt;Instance sharing (Stable)&lt;/h2&gt;
&lt;p&gt;The v0.5.0 release of the Agent introduced the concept of &lt;em&gt;instance sharing&lt;/em&gt;,
which combines scrape_configs from compatible instance configs into a single,
shared Instance. Instance configs are compatible when they have no differences
in configuration with the exception of what they scrape. &lt;code&gt;remote_write&lt;/code&gt; configs
may also differ in the order which endpoints are declared, but the unsorted
&lt;code&gt;remote_writes&lt;/code&gt; must still be an exact match.&lt;/p&gt;
&lt;p&gt;In the shared instances mode, the &lt;code&gt;name&lt;/code&gt; field of &lt;code&gt;remote_write&lt;/code&gt; configs is
ignored. The resulting &lt;code&gt;remote_write&lt;/code&gt; configs will have a name identical to the
first six characters of the group name and the first six characters of the hash
from that &lt;code&gt;remote_write&lt;/code&gt; config separated by a &lt;code&gt;-&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The shared instances mode is the new default, and the previous behavior is
deprecated. If you wish to restore the old behavior, set &lt;code&gt;instance_mode: distinct&lt;/code&gt;
in the 
    &lt;a href=&#34;/docs/agent/v0.37/static/configuration/metrics-config/&#34;&gt;&lt;code&gt;metrics_config&lt;/code&gt;&lt;/a&gt; block of your config file.&lt;/p&gt;
&lt;p&gt;Shared instances are completely transparent to the user with the exception of
exposed metrics. With &lt;code&gt;instance_mode: shared&lt;/code&gt;, metrics for Prometheus components
(WAL, service discovery, remote_write, etc.) have a &lt;code&gt;instance_group_name&lt;/code&gt; label,
which is the hash of all settings used to determine the shared instance. When
&lt;code&gt;instance_mode: distinct&lt;/code&gt; is set, the metrics for Prometheus components will
instead have an &lt;code&gt;instance_name&lt;/code&gt; label, which matches the name set on the
individual Instance config. It is recommended to use the default of
&lt;code&gt;instance_mode: shared&lt;/code&gt; unless you don&amp;rsquo;t mind the performance hit and really
need granular metrics.&lt;/p&gt;
&lt;p&gt;Users can use the 
    &lt;a href=&#34;/docs/agent/v0.37/static/api/#agent-api&#34;&gt;targets API&lt;/a&gt; to see all scraped targets, and the name
of the shared instance they were assigned to.&lt;/p&gt;
]]></content><description>&lt;h1 id="operation-guide">Operation guide&lt;/h1>
&lt;p>This guide helps you operate Grafana Agent.&lt;/p>
&lt;h2 id="horizontal-scaling">Horizontal Scaling&lt;/h2>
&lt;p>There are three options to horizontally scale your deployment of Grafana Agents:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="#host-filtering-beta">Host filtering&lt;/a> requires you to run one Agent on every
machine you wish to collect metrics from. Agents will only collect metrics
from the machines they run on.&lt;/li>
&lt;li>&lt;a href="#hashmod-sharding-stable">Hashmod sharding&lt;/a> allows you to roughly shard the
discovered set of targets by using hashmod/keep relabel rules.&lt;/li>
&lt;li>The
&lt;a href="/docs/agent/v0.37/static/configuration/scraping-service/">scraping service&lt;/a> allows you to cluster Grafana
Agents and have them distribute per-tenant configs throughout the cluster.&lt;/li>
&lt;/ul>
&lt;p>Each has their own set of tradeoffs:&lt;/p></description></item><item><title>Release notes</title><link>https://grafana.com/docs/agent/v0.37/static/release-notes/</link><pubDate>Fri, 06 Mar 2026 07:23:54 +0000</pubDate><guid>https://grafana.com/docs/agent/v0.37/static/release-notes/</guid><content><![CDATA[&lt;h1 id=&#34;release-notes&#34;&gt;Release notes&lt;/h1&gt;
&lt;p&gt;The release notes provide information about deprecations and breaking changes in Grafana Agent static mode.&lt;/p&gt;
&lt;p&gt;For a complete list of changes to Grafana Agent, with links to pull requests and related issues when available, refer to the &lt;a href=&#34;https://github.com/grafana/agent/blob/main/CHANGELOG.md&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Changelog&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; These release notes are specific to Grafana Agent static mode.
Other release notes for the different Grafana Agent variants are contained on separate pages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.37/operator/release-notes/&#34;&gt;Static mode Kubernetes operator release notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.37/flow/release-notes/&#34;&gt;Flow mode release notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
&lt;h2 id=&#34;v037&#34;&gt;v0.37&lt;/h2&gt;
&lt;h3 id=&#34;breaking-change-the-default-value-of-retry_on_http_429-is-overriden-to-true-for-the-queue_config-in-remote_write-in-metrics-config&#34;&gt;Breaking change: The default value of &lt;code&gt;retry_on_http_429&lt;/code&gt; is overriden to &lt;code&gt;true&lt;/code&gt; for the &lt;code&gt;queue_config&lt;/code&gt; in &lt;code&gt;remote_write&lt;/code&gt; in &lt;code&gt;metrics&lt;/code&gt; config.&lt;/h3&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;The default set by Grafana Agent Static Mode is different than the default set by Prometheus.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;The Prometheus default value for &lt;code&gt;retry_on_http_429&lt;/code&gt; is set to &lt;code&gt;true&lt;/code&gt; for the &lt;code&gt;queue_config&lt;/code&gt; in &lt;code&gt;remote_write&lt;/code&gt;.
This changed default setting allows the agent to retry sending data when it receives an HTTP 429 error and helps avoid losing data in metric pipelines.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you explicitly set the &lt;code&gt;retry_on_http_429&lt;/code&gt;, no action is required.&lt;/li&gt;
&lt;li&gt;If you do not explicitly set &lt;code&gt;retry_on_http_429&lt;/code&gt; and you do &lt;em&gt;not&lt;/em&gt; want to retry on HTTP 429, make sure you set it to &lt;code&gt;false&lt;/code&gt; when you upgrade to this new version.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;breaking-change-renamed-non_indexed_labels-loki-processing-stage-to-structured_metadata&#34;&gt;Breaking change: Renamed &lt;code&gt;non_indexed_labels&lt;/code&gt; Loki processing stage to &lt;code&gt;structured_metadata&lt;/code&gt;.&lt;/h3&gt;
&lt;p&gt;If you use the Loki processing stage in your Agent configuration, you must rename the &lt;code&gt;non_indexed_labels&lt;/code&gt; pipeline stage definition to &lt;code&gt;structured_metadata&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Old configuration example:&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;  pipeline_stages:
    - logfmt:
        mapping:
          app:
    - non_indexed_labels:
        app:&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;New configuration example:&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;  pipeline_stages:
    - logfmt:
        mapping:
          app:
    - structured_metadata:
        app:&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;v035&#34;&gt;v0.35&lt;/h2&gt;
&lt;h3 id=&#34;breaking-change-jaeger-remote-sampling-no-longer-configurable-using-the-jaeger-receiver&#34;&gt;Breaking change: Jaeger remote sampling no longer configurable using the Jaeger receiver&lt;/h3&gt;
&lt;p&gt;Jaeger remote sampling used to be configured using the Jaeger receiver configuration. This receiver was updated to a new version, where support for remote sampling in the receiver was removed.&lt;/p&gt;
&lt;p&gt;Jaeger remote sampling is available as a separate configuration field starting in v0.35.3.&lt;/p&gt;
&lt;p&gt;Old configuration example:&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;receivers:
  jaeger:
    protocols:
      grpc:
    remote_sampling:
      strategy_file: /etc/agent/strategies.json
      strategy_file_reload_interval: 1s&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;New configuration example:&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;jaeger_remote_sampling:
  - source:
      file: /etc/agent/strategies.json
      reload_interval: 1s&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;breaking-change-auth-and-version-attributes-from-walk_params-block-of-snmp-integration-have-been-removed&#34;&gt;Breaking change: &lt;code&gt;auth&lt;/code&gt; and &lt;code&gt;version&lt;/code&gt; attributes from &lt;code&gt;walk_params&lt;/code&gt; block of SNMP integration have been removed&lt;/h3&gt;
&lt;p&gt;The SNMP integrations (both v1 and v2) wrap a new version of SNMP exporter which introduces a new configuration file format.
This new format separates the walk and metric mappings from the connection and authentication settings. This allows for easier configuration of different
auth params without having to duplicate the full walk and metric mapping.&lt;/p&gt;
&lt;p&gt;Old configuration example:&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;    snmp_targets:
      - name: network_switch_1
        address: 192.168.1.2
        module: if_mib
        walk_params: public
        auth: public
    walk_params:
      public:
        retries: 2
        version: 2
        auth:
          community: public&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;New configuration example:&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;    snmp_targets:
      - name: network_switch_1
        address: 192.168.1.2
        module: if_mib
        walk_params: public
        auth: public
    walk_params:
      public:
        retries: 2&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;See &lt;a href=&#34;https://github.com/prometheus/snmp_exporter/blob/main/auth-split-migration.md&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Module and Auth Split Migration&lt;/a&gt; for more details.&lt;/p&gt;
&lt;h3 id=&#34;removal-of-dynamic-configuration&#34;&gt;Removal of Dynamic Configuration&lt;/h3&gt;
&lt;p&gt;The experimental feature Dynamic Configuration has been removed. The use case of dynamic configuration will be replaced
with 
    &lt;a href=&#34;/docs/agent/v0.37/flow/concepts/modules/&#34;&gt;Modules&lt;/a&gt; in Grafana Agent Flow.&lt;/p&gt;
&lt;h3 id=&#34;breaking-change-removed-and-renamed-tracing-metrics&#34;&gt;Breaking change: Removed and renamed tracing metrics&lt;/h3&gt;
&lt;p&gt;In the traces subsystem for Static mode some metrics are removed and others are renamed.
The reason for the removal is a bug which caused the metrics to be incorrect if more than one instance of a traces configuration is specified.&lt;/p&gt;
&lt;p&gt;Removed metrics:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;blackbox_exporter_config_last_reload_success_timestamp_seconds&amp;rdquo; (gauge)&lt;/li&gt;
&lt;li&gt;&amp;ldquo;blackbox_exporter_config_last_reload_successful&amp;rdquo; (gauge)&lt;/li&gt;
&lt;li&gt;&amp;ldquo;blackbox_module_unknown_total&amp;rdquo; (counter)&lt;/li&gt;
&lt;li&gt;&amp;ldquo;traces_processor_tail_sampling_count_traces_sampled&amp;rdquo; (counter)&lt;/li&gt;
&lt;li&gt;&amp;ldquo;traces_processor_tail_sampling_new_trace_id_received&amp;rdquo; (counter)&lt;/li&gt;
&lt;li&gt;&amp;ldquo;traces_processor_tail_sampling_sampling_decision_latency&amp;rdquo; (histogram)&lt;/li&gt;
&lt;li&gt;&amp;ldquo;traces_processor_tail_sampling_sampling_decision_timer_latency&amp;rdquo; (histogram)&lt;/li&gt;
&lt;li&gt;&amp;ldquo;traces_processor_tail_sampling_sampling_policy_evaluation_error&amp;rdquo; (counter)&lt;/li&gt;
&lt;li&gt;&amp;ldquo;traces_processor_tail_sampling_sampling_trace_dropped_too_early&amp;rdquo; (counter)&lt;/li&gt;
&lt;li&gt;&amp;ldquo;traces_processor_tail_sampling_sampling_traces_on_memory&amp;rdquo; (gauge)&lt;/li&gt;
&lt;li&gt;&amp;ldquo;traces_receiver_accepted_spans&amp;rdquo; (counter)&lt;/li&gt;
&lt;li&gt;&amp;ldquo;traces_receiver_refused_spans&amp;rdquo; (counter)&lt;/li&gt;
&lt;li&gt;&amp;ldquo;traces_exporter_enqueue_failed_log_records&amp;rdquo; (counter)&lt;/li&gt;
&lt;li&gt;&amp;ldquo;traces_exporter_enqueue_failed_metric_points&amp;rdquo; (counter)&lt;/li&gt;
&lt;li&gt;&amp;ldquo;traces_exporter_enqueue_failed_spans&amp;rdquo; (counter)&lt;/li&gt;
&lt;li&gt;&amp;ldquo;traces_exporter_queue_capacity&amp;rdquo; (gauge)&lt;/li&gt;
&lt;li&gt;&amp;ldquo;traces_exporter_queue_size&amp;rdquo; (gauge)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Renamed metrics:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;traces_receiver_refused_spans&amp;rdquo; is renamed to &amp;ldquo;traces_receiver_refused_spans_total&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;traces_receiver_accepted_spans&amp;rdquo; is renamed to &amp;ldquo;traces_receiver_refused_spans_total&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&amp;ldquo;traces_exporter_sent_metric_points&amp;rdquo; is renamed to &amp;ldquo;traces_exporter_sent_metric_points_total&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;v033&#34;&gt;v0.33&lt;/h2&gt;
&lt;h3 id=&#34;symbolic-links-in-docker-containers-removed&#34;&gt;Symbolic links in Docker containers removed&lt;/h3&gt;
&lt;p&gt;We&amp;rsquo;ve removed the deprecated symbolic links to &lt;code&gt;/bin/agent*&lt;/code&gt; in Docker
containers, as planned in v0.31. In case you&amp;rsquo;re setting a custom entrypoint,
use the new binaries that are prefixed with &lt;code&gt;/bin/grafana*&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;deprecation-of-dynamic-configuration&#34;&gt;Deprecation of Dynamic Configuration&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;/docs/agent/v0.33/cookbook/dynamic-configuration/&#34;&gt;Dynamic Configuration&lt;/a&gt; will be removed in v0.34.
The use case of dynamic configuration will be replaced with Modules in Grafana Agent Flow.&lt;/p&gt;
&lt;h2 id=&#34;v032&#34;&gt;v0.32&lt;/h2&gt;
&lt;h3 id=&#34;breaking-change-node_exporter-configuration-options-changed&#34;&gt;Breaking change: &lt;code&gt;node_exporter&lt;/code&gt; configuration options changed&lt;/h3&gt;
&lt;p&gt;With the update of the &lt;code&gt;node_exporter&lt;/code&gt; integration to use v1.5.0, configuration
options for the &lt;code&gt;diskstats&lt;/code&gt; collector have changed names:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;diskstats_ignored_devices&lt;/code&gt; is now &lt;code&gt;diskstats_device_exclude&lt;/code&gt; in the static
mode configuration.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ignored_devices&lt;/code&gt; is now &lt;code&gt;device_exclude&lt;/code&gt; in the Flow component
configuration.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;v0311&#34;&gt;v0.31.1&lt;/h2&gt;
&lt;h3 id=&#34;breaking-change-all-windows-executables-are-now-zipped&#34;&gt;Breaking change: all Windows executables are now zipped&lt;/h3&gt;
&lt;p&gt;All release Windows &lt;code&gt;.exe&lt;/code&gt; files are now zipped. Prior to v0.31, only
&lt;code&gt;grafana-agent-installer.exe&lt;/code&gt; was unzipped.&lt;/p&gt;
&lt;p&gt;This fixes an issue from v0.31.0 where all &lt;code&gt;.exe&lt;/code&gt; files were accidentally left
unzipped.&lt;/p&gt;
&lt;h2 id=&#34;v031&#34;&gt;v0.31&lt;/h2&gt;
&lt;h3 id=&#34;breaking-change-binary-names-are-now-prefixed-with-grafana-&#34;&gt;Breaking change: binary names are now prefixed with &lt;code&gt;grafana-&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;As first announced in v0.29, release binary names are now prefixed with
&lt;code&gt;grafana-&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;agent&lt;/code&gt; is now &lt;code&gt;grafana-agent&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;agentctl&lt;/code&gt; is now &lt;code&gt;grafana-agentctl&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For the &lt;code&gt;grafana/agent&lt;/code&gt; Docker container, the entrypoint is now
&lt;code&gt;/bin/grafana-agent&lt;/code&gt;. A symbolic link from &lt;code&gt;/bin/agent&lt;/code&gt; to the new binary has
been added.&lt;/p&gt;
&lt;p&gt;For the &lt;code&gt;grafana/agentctl&lt;/code&gt; Docker container, the entrypoint is now
&lt;code&gt;/bin/grafana-agentctl&lt;/code&gt;. A symbolic link from &lt;code&gt;/bin/agentctl&lt;/code&gt; to the new binary
has been added.&lt;/p&gt;
&lt;p&gt;These symbolic links will be removed in v0.33. Custom entrypoints must be
updated prior to v0.33 to use the new binaries before the symbolic links get
removed.&lt;/p&gt;
&lt;h2 id=&#34;v030&#34;&gt;v0.30&lt;/h2&gt;
&lt;h3 id=&#34;breaking-change-ebpf_exporter-integration-removed&#34;&gt;Breaking change: &lt;code&gt;ebpf_exporter&lt;/code&gt; integration removed&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;ebpf_exporter&lt;/code&gt; version bundled in the Agent used &lt;a href=&#34;https://github.com/iovisor/bcc&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;bcc&lt;/a&gt; to compile eBPF
programs at runtime. This made it hard to run successfully, as the
dynamic linking approach required a compiler, the correct kernel headers, as
well as an exact match of the libbpf toolchain on the host system.  For these
reasons, we&amp;rsquo;ve decided to remove the &lt;code&gt;ebpf_exporter&lt;/code&gt; integration.&lt;/p&gt;
&lt;p&gt;Running the &lt;code&gt;ebpf_exporter&lt;/code&gt; integration is now deprecated and will result in
configuration errors. To continue using the same configuration file, remove the
&lt;code&gt;ebpf&lt;/code&gt; block.&lt;/p&gt;
&lt;h2 id=&#34;v029&#34;&gt;v0.29&lt;/h2&gt;
&lt;h3 id=&#34;breaking-change-json-encoded-traces-from-otlp-versions-below-0160-are-no-longer-supported&#34;&gt;Breaking change: JSON-encoded traces from OTLP versions below 0.16.0 are no longer supported&lt;/h3&gt;
&lt;p&gt;Grafana Agent&amp;rsquo;s OpenTelemetry Collector dependency has been updated from
v0.55.0 to v0.61.0. OpenTelemetry Collector v0.58.0 &lt;a href=&#34;https://github.com/open-telemetry/opentelemetry-collector/pull/5819&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;no longer
translates&lt;/a&gt; from InstrumentationLibrary to Scope.&lt;/p&gt;
&lt;p&gt;This means that JSON-encoded traces that still use InstrumentationLibrary will
be dropped. To work around this issue, either send traces using protobuf or
update your OTLP protocol version to v0.16.0 or newer.&lt;/p&gt;
&lt;h3 id=&#34;deprecation-binary-names-will-be-prefixed-with-grafana--in-v0310&#34;&gt;Deprecation: binary names will be prefixed with &lt;code&gt;grafana-&lt;/code&gt; in v0.31.0&lt;/h3&gt;
&lt;p&gt;The binary names &lt;code&gt;agent&lt;/code&gt; and &lt;code&gt;agentctl&lt;/code&gt; have been deprecated
and will be renamed to &lt;code&gt;grafana-agent&lt;/code&gt; and &lt;code&gt;grafana-agentctl&lt;/code&gt; respectively in
the v0.31.0 release.&lt;/p&gt;
&lt;p&gt;As part of this change, the Docker containers for the v0.31.0 release will
include symbolic links from the old binary names to the new binary names.&lt;/p&gt;
&lt;p&gt;There is no action to take at this time.&lt;/p&gt;
&lt;h2 id=&#34;v026&#34;&gt;v0.26&lt;/h2&gt;
&lt;h3 id=&#34;breaking-change-deprecated-yaml-fields-in-server-block-removed&#34;&gt;Breaking change: Deprecated YAML fields in &lt;code&gt;server&lt;/code&gt; block removed&lt;/h3&gt;
&lt;p&gt;The YAML fields which were first &lt;a href=&#34;#deprecation-on-yaml-fields-in-server-block-that-have-flags&#34;&gt;deprecated in the v0.24.0
release&lt;/a&gt; have now
been removed, replaced by equivalent command line flags. Please refer to the
original deprecation notice for instructions for how to migrate to the command
line flags.&lt;/p&gt;
&lt;h3 id=&#34;breaking-change-reconcile-sampling-policies-between-agent-and-otel&#34;&gt;Breaking change: Reconcile sampling policies between Agent and OTel&lt;/h3&gt;
&lt;p&gt;Configuring sampling policies in the &lt;code&gt;tail_sampling&lt;/code&gt; block of the &lt;code&gt;traces&lt;/code&gt;
block has been changed to be equal with the upstream configuration of the OTel
processor. It now requires that the policy &lt;code&gt;type&lt;/code&gt; is specified.&lt;/p&gt;
&lt;p&gt;Old 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;traces:
  configs:
    - name: default
    ...
    tail_sampling:
      policies:
      - latency:
          threshold_ms: 100&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;New 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;traces:
  configs:
    - name: default
    ...
    tail_sampling:
      policies:
      - type: latency
        latency:
          threshold_ms: 100&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;v024&#34;&gt;v0.24&lt;/h2&gt;
&lt;h3 id=&#34;breaking-change-integrations-renamed-when-integrations-next-feature-flag-is-used&#34;&gt;Breaking change: Integrations renamed when &lt;code&gt;integrations-next&lt;/code&gt; feature flag is used&lt;/h3&gt;
&lt;p&gt;This change only applies to users utilizing the &lt;code&gt;integrations-next&lt;/code&gt; feature
flag. Nothing is changed for configuring integrations when the feature flag is
not used.&lt;/p&gt;
&lt;p&gt;Most &lt;code&gt;integrations-next&lt;/code&gt; integrations have been renamed to describe what
telemetry data they generate instead of the projects they are powered by.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;consul_exporter&lt;/code&gt; is now &lt;code&gt;consul&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dnsmasq_exporter&lt;/code&gt; is now &lt;code&gt;dnsmasq&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;elasticsearch_exporter&lt;/code&gt; is now &lt;code&gt;elasticsearch&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;github_exporter&lt;/code&gt; is now &lt;code&gt;github&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kafka_exporter&lt;/code&gt; is now &lt;code&gt;kafka&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;memcached_exporter&lt;/code&gt; is now &lt;code&gt;memcached&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mongodb_exporter&lt;/code&gt; is now &lt;code&gt;mongodb&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mysqld_exporter&lt;/code&gt; is now &lt;code&gt;mysql&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;Note that it is &lt;code&gt;mysql&lt;/code&gt; and &lt;em&gt;not&lt;/em&gt; &lt;code&gt;mysqld&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;postgres_exporter&lt;/code&gt; is now &lt;code&gt;postgres&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;process_exporter&lt;/code&gt; is now &lt;code&gt;process&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;redis_exporter&lt;/code&gt; is now &lt;code&gt;redis&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;statsd_exporter&lt;/code&gt; is now &lt;code&gt;statsd&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;windows_exporter&lt;/code&gt; is now &lt;code&gt;windows&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Keys in the &lt;code&gt;integrations&lt;/code&gt; config block have changed to match the above:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;integrations.consul_exporter_configs&lt;/code&gt; is now &lt;code&gt;integrations.consul_configs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;integrations.dnsmasq_exporter_configs&lt;/code&gt; is now &lt;code&gt;integrations.dnsmasq_configs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;integrations.elasticsearch_exporter_configs&lt;/code&gt; is now &lt;code&gt;integrations.elasticsearch_configs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;integrations.github_exporter_configs&lt;/code&gt; is now &lt;code&gt;integrations.github_configs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;integrations.kafka_exporter_configs&lt;/code&gt; is now &lt;code&gt;integrations.kafka_configs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;integrations.memcached_exporter_configs&lt;/code&gt; is now &lt;code&gt;integrations.memcached_configs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;integrations.mongodb_exporter_configs&lt;/code&gt; is now &lt;code&gt;integrations.mongodb_configs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;integrations.mysqld_exporter_configs&lt;/code&gt; is now &lt;code&gt;integrations.mysql_configs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;integrations.postgres_exporter_configs&lt;/code&gt; is now &lt;code&gt;integrations.postgres_configs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;integrations.process_exporter&lt;/code&gt; is now &lt;code&gt;integrations.process&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;integrations.redis_exporter_configs&lt;/code&gt; is now &lt;code&gt;integrations.redis_configs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;integrations.statsd_exporter&lt;/code&gt; is now &lt;code&gt;integrations.statsd&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;integrations.windows_exporter&lt;/code&gt; is now &lt;code&gt;integrations.windows&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Integrations not listed here have not changed; &lt;code&gt;node_exporter&lt;/code&gt; still has the
same name.&lt;/p&gt;
&lt;p&gt;This change propagates to the label values generated by these integrations. For
example, &lt;code&gt;job=&amp;quot;integrations/redis_exporter&lt;/code&gt; will now be &lt;code&gt;job=&amp;quot;redis&amp;quot;&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;change-separating-yaml-and-command-line-flags&#34;&gt;Change: Separating YAML and command line flags&lt;/h3&gt;
&lt;p&gt;As of this release, we are starting to separate what can be configured within
the YAML file, and what can be configured by command line flag. Previously,
there was a lot of overlap: many things could be set by both command line flag
and configuration file, with command line flags taking precedence.&lt;/p&gt;
&lt;p&gt;The configuration file will be used for settings that can be updated at runtime
using the &lt;code&gt;/-/reload&lt;/code&gt; endpoint or sending SIGHUP. Meanwhile, command line flags
will be used for settings that must remain consistent throughout the process
lifetime, such as the HTTP listen port.&lt;/p&gt;
&lt;p&gt;This conceptual change will require some number of breaking changes. This
release focuses on the &lt;code&gt;server&lt;/code&gt; block of the YAML, which has historically
caused the most issues with the &lt;code&gt;/-/reload&lt;/code&gt; endpoint working correctly.&lt;/p&gt;
&lt;p&gt;There may be more breaking changes in the future as we identify more settings
that must be static and moved to flags. These changes will either be moving a
YAML field to a flag or moving a flag to a YAML field. After we are done with
this migration, there will be no overlap between flags and the YAML file.&lt;/p&gt;
&lt;h3 id=&#34;deprecation-on-yaml-fields-in-server-block-that-have-flags&#34;&gt;Deprecation on YAML fields in &lt;code&gt;server&lt;/code&gt; block that have flags&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;server&lt;/code&gt; block is the most impacted by the separation of flags/fields.
Instead of making a breaking change immediately, we are deprecating these
fields.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: These deprecated fields will be removed in the v0.26.0 release. We
will communicate when other deprecated features will be removed when a
timeline is established.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The following fields are now deprecated in favor of command line flags:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;server.register_instrumentation&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;server.graceful_shutdown_timeout&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;server.log_source_ips_enabled&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;server.log_source_ips_header&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;server.log_source_ips_regex&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;server.http_listen_network&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;server.http_listen_address&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;server.http_listen_port&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;server.http_listen_conn_limit&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;server.http_server_read_timeout&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;server.http_server_write_timout&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;server.http_server_idle_timeout&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;server.grpc_listen_network&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;server.grpc_listen_address&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;server.grpc_listen_port&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;server.grpc_listen_conn_limit&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;server.grpc_server_max_recv_msg_size&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;server.grpc_server_max_send_msg_size&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;server.grpc_server_max_concurrent_streams&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;server.grpc_server_max_connection_idle&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;server.grpc_server_max_connection_age&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;server.grpc_server_max_connection_age_grace&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;server.grpc_server_keepalive_time&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;server.grpc_server_keepalive_timeout&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;server.grpc_server_min_time_between_pings&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;server.grpc_server_ping_without_stream_allowed&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is most of the fields; the remaining non-deprecated fields are
&lt;code&gt;server.log_level&lt;/code&gt;, &lt;code&gt;server.log_format&lt;/code&gt;, &lt;code&gt;server.http_tls_config&lt;/code&gt;, and
&lt;code&gt;server.grpc_tls_config&lt;/code&gt;, which support dynamic updating.&lt;/p&gt;
&lt;h3 id=&#34;breaking-change-removing-support-for-dynamically-updating-deprecated-server-fields&#34;&gt;Breaking change: Removing support for dynamically updating deprecated server fields&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;/-/reload&lt;/code&gt; will now fail if any of the deprecated server block fields have
changed. It is still valid to change a non-deprecated field (i.e., changing the
log level).&lt;/p&gt;
&lt;h3 id=&#34;breaking-change-server-specific-command-line-flags-have-changed&#34;&gt;Breaking change: Server-specific command line flags have changed&lt;/h3&gt;
&lt;p&gt;The following flags are &lt;em&gt;new&lt;/em&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-server.http.enable-tls&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-server.grpc.enable-tls&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-server.http.address&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-server.grpc.address&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The following flags have been &lt;em&gt;removed&lt;/em&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-log.level&lt;/code&gt; (replacement: use YAML field &lt;code&gt;server.log_level&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-log.format&lt;/code&gt; (replacement: use YAML field &lt;code&gt;server.log_format&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-server.http-tls-cert-path&lt;/code&gt; (replacement: use YAML field &lt;code&gt;server.http_tls_config&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-server.http-tls-key-path&lt;/code&gt; (replacement: use YAML field &lt;code&gt;server.http_tls_config&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-server.http-tls-client-auth&lt;/code&gt; (replacement: use YAML field &lt;code&gt;server.http_tls_config&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-server.http-tls-ca-path&lt;/code&gt; (replacement: use YAML field &lt;code&gt;server.http_tls_config&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-server.grpc-tls-cert-path&lt;/code&gt; (replacement: use YAML field &lt;code&gt;server.grpc_tls_config&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-server.grpc-tls-key-path&lt;/code&gt; (replacement: use YAML field &lt;code&gt;server.grpc_tls_config&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-server.grpc-tls-client-auth&lt;/code&gt; (replacement: use YAML field &lt;code&gt;server.grpc_tls_config&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-server.grpc-tls-ca-path&lt;/code&gt; (replacement: use YAML field &lt;code&gt;server.grpc_tls_config&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-server.http-listen-address&lt;/code&gt; (replacement: use the new &lt;code&gt;-server.http.address&lt;/code&gt; flag, which combines host and port)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-server.http-listen-port&lt;/code&gt; (replacement: use the new  &lt;code&gt;-server.http.address&lt;/code&gt; flag, which combines host and port)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-server.grpc-listen-address&lt;/code&gt; (replacement: use the new &lt;code&gt;-server.grpc.address&lt;/code&gt; flag, which combines host and port)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-server.grpc-listen-port&lt;/code&gt; (replacement: use the new &lt;code&gt;-server.grpc.address&lt;/code&gt; flag, which combines host and port)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-server.path-prefix&lt;/code&gt; (no replacement; this flag was unsupported and caused undefined behavior when set)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The following flags have been &lt;em&gt;renamed&lt;/em&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-server.log-source-ips-enabled&lt;/code&gt; has been renamed to &lt;code&gt;-server.log.source-ips.enabled&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-server.log-source-ips-header&lt;/code&gt; has been renamed to &lt;code&gt;-server.log.source-ips.header&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-server.log-source-ips-regex&lt;/code&gt; has been renamed to &lt;code&gt;-server.log.source-ips.regex&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-server.http-listen-network&lt;/code&gt; has been renamed to &lt;code&gt;-server.http.network&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-server.http-conn-limit&lt;/code&gt; has been renamed to &lt;code&gt;-server.http.conn-limit&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-server.http-read-timeout&lt;/code&gt; has been renamed to &lt;code&gt;-server.http.read-timeout&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-server.http-write-timeout&lt;/code&gt; has been renamed to &lt;code&gt;-server.http.write-timeout&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-server.http-idle-timeout&lt;/code&gt; has been renamed to &lt;code&gt;-server.http.idle-timeout&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-server.grpc-listen-network&lt;/code&gt; has been renamed to &lt;code&gt;-server.grpc.network&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-server.grpc-conn-limit&lt;/code&gt; has been renamed to &lt;code&gt;-server.grpc.conn-limit&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-server.grpc-max-recv-msg-size-bytes&lt;/code&gt; has been renamed to &lt;code&gt;-server.grpc.max-recv-msg-size-bytes&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-server.grpc-max-send-msg-size-bytes&lt;/code&gt; has been renamed to &lt;code&gt;-server.grpc.max-send-msg-size-bytes&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-server.grpc-max-concurrent-streams&lt;/code&gt; has been renamed to &lt;code&gt;-server.grpc.max-concurrent-streams&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;breaking-change-new-tls-flags-required-for-enabling-tls&#34;&gt;Breaking change: New TLS flags required for enabling TLS&lt;/h3&gt;
&lt;p&gt;The two new flags, &lt;code&gt;-server.http.enable-tls&lt;/code&gt; and &lt;code&gt;-server.grpc.enable-tls&lt;/code&gt; now
must be provided for TLS support to be enabled.&lt;/p&gt;
&lt;p&gt;This is a change over the previous behavior where TLS was automatically enabled
when a certificate pair was provided.&lt;/p&gt;
&lt;h3 id=&#34;breaking-change-default-httpgrpc-address-changes&#34;&gt;Breaking change: Default HTTP/gRPC address changes&lt;/h3&gt;
&lt;p&gt;The HTTP and gRPC listen addresses now default to &lt;code&gt;127.0.0.1:12345&lt;/code&gt; and
&lt;code&gt;127.0.0.1:12346&lt;/code&gt; respectively.&lt;/p&gt;
&lt;p&gt;If running inside of a container, you must change these to &lt;code&gt;0.0.0.0&lt;/code&gt; to
externally communicate with the agent&amp;rsquo;s HTTP server.&lt;/p&gt;
&lt;p&gt;The listen addresses may be changed via &lt;code&gt;-server.http.address&lt;/code&gt; and
&lt;code&gt;-server.grpc.address&lt;/code&gt; respectively.&lt;/p&gt;
&lt;h3 id=&#34;breaking-change-removal-of--reload-addr-and--reload-port-flags&#34;&gt;Breaking change: Removal of &lt;code&gt;-reload-addr&lt;/code&gt; and &lt;code&gt;-reload-port&lt;/code&gt; flags&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;-reload-addr&lt;/code&gt; and &lt;code&gt;-reload-port&lt;/code&gt; flags have been removed. They were
initially added to workaround an issue where reloading a changed server block
would cause the primary HTTP server to restart. As the HTTP server settings are
now static, this can no longer happen, and as such the flags have been removed.&lt;/p&gt;
&lt;h3 id=&#34;change-in-memory-autoscrape-for-integrations-next&#34;&gt;Change: In-memory autoscrape for integrations-next&lt;/h3&gt;
&lt;p&gt;This change is only relevant to those using the &lt;code&gt;integrations-next&lt;/code&gt; feature flag.&lt;/p&gt;
&lt;p&gt;In-memory connections will now be used for autoscraping-enabled integrations.
This is a change over the previous behavior where autoscraping integrations
would connect to themselves over the network. As a result of this change, the
&lt;code&gt;integrations.client_config&lt;/code&gt; field is no longer necessary and has been removed.&lt;/p&gt;
&lt;h2 id=&#34;v022&#34;&gt;v0.22&lt;/h2&gt;
&lt;h3 id=&#34;node_exporter-integration-deprecated-field-names&#34;&gt;&lt;code&gt;node_exporter&lt;/code&gt; integration deprecated field names&lt;/h3&gt;
&lt;p&gt;The following field names for the &lt;code&gt;node_exporter&lt;/code&gt; integration are now deprecated:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;netdev_device_whitelist&lt;/code&gt; is deprecated in favor of &lt;code&gt;netdev_device_include&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;netdev_device_blacklist&lt;/code&gt; is deprecated in favor of &lt;code&gt;netdev_device_exclude&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;systemd_unit_whitelist&lt;/code&gt; is deprecated in favor of &lt;code&gt;systemd_unit_include&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;systemd_unit_blacklist&lt;/code&gt; is deprecated in favor of &lt;code&gt;systemd_unit_exclude&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;filesystem_ignored_mount_points&lt;/code&gt; is deprecated in favor of
&lt;code&gt;filesystem_mount_points_exclude&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;filesystem_ignored_fs_types&lt;/code&gt; is deprecated in favor of
&lt;code&gt;filesystem_fs_types_exclude&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This change aligns with the equivalent flag names also being deprecated in the
upstream node_exporter.&lt;/p&gt;
&lt;p&gt;Support for the old field names will be removed in a future version. A warning
will be logged if using the old field names when the integration is enabled.&lt;/p&gt;
&lt;h2 id=&#34;v0212-v0201&#34;&gt;v0.21.2, v0.20.1&lt;/h2&gt;
&lt;h3 id=&#34;disabling-of-config-retrieval-endpoints&#34;&gt;Disabling of config retrieval endpoints&lt;/h3&gt;
&lt;p&gt;These two patch releases, as part of a fix for
&lt;a href=&#34;https://github.com/grafana/agent/security/advisories/GHSA-9c4x-5hgq-q3wh&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;CVE-2021-41090&lt;/a&gt;,
disable the &lt;code&gt;/-/config&lt;/code&gt; and &lt;code&gt;/agent/api/v1/configs/{name}&lt;/code&gt; endpoints by
default. Pass the &lt;code&gt;--config.enable-read-api&lt;/code&gt; flag at the command line to
re-enable them.&lt;/p&gt;
&lt;h2 id=&#34;v021&#34;&gt;v0.21&lt;/h2&gt;
&lt;h3 id=&#34;integrations-change-in-how-instance-labels-are-handled-breaking-change&#34;&gt;Integrations: Change in how instance labels are handled (Breaking change)&lt;/h3&gt;
&lt;p&gt;Integrations will now use a SUO-specific &lt;code&gt;instance&lt;/code&gt; label value. Integrations
that apply to a whole machine or agent will continue to use &lt;code&gt;&amp;lt;agent machine hostname&amp;gt;:&amp;lt;agent listen port&amp;gt;&lt;/code&gt;, but integrations that connect to an external
system will now infer an appropriate value based on the config for that specific
integration. Please refer to the documentation for each integration for which
defaults are used.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note:&lt;/em&gt; In some cases, a default value for &lt;code&gt;instance&lt;/code&gt; cannot be inferred. This
is the case for mongodb_exporter and postgres_exporter if more than one SUO is
being connected to. In these cases, the instance value can be manually set by
configuring the &lt;code&gt;instance&lt;/code&gt; field on the integration. This can also be useful if
two agents infer the same value for instance for the same integration.&lt;/p&gt;
&lt;p&gt;As part of this change, the &lt;code&gt;agent_hostname&lt;/code&gt; label is permanently affixed to
self-scraped integrations and cannot be disabled. This disambiguates multiple
agents using the same instance label for an integration, and allows users to
identify which agents need to be updated with an override for &lt;code&gt;instance&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Both &lt;code&gt;use_hostname_label&lt;/code&gt; and &lt;code&gt;replace_instance_label&lt;/code&gt; are now both deprecated
and ignored from the YAML file, permanently treated as true. A future release
will remove these fields, causing YAML errors on load instead of being silently
ignored.&lt;/p&gt;
&lt;h2 id=&#34;v020&#34;&gt;v0.20&lt;/h2&gt;
&lt;h3 id=&#34;traces-changes-to-receivers-tls-config-breaking-change&#34;&gt;Traces: Changes to receiver&amp;rsquo;s TLS config (Breaking change).&lt;/h3&gt;
&lt;p&gt;Upgrading to OpenTelemetry v0.36.0 contains a change in the receivers TLS config.
TLS params have been changed from being squashed to being in its own block.
This affect the jaeger receiver&amp;rsquo;s &lt;code&gt;remote_sampling&lt;/code&gt; config.&lt;/p&gt;
&lt;p&gt;Example old config:&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;receivers:
  jaeger:
    protocols:
      grpc: null,
    remote_sampling:
      strategy_file: &amp;lt;file_path&amp;gt;
      insecure: true&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Example new config:&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;receivers:
  jaeger:
    protocols:
      grpc: null,
    remote_sampling:
      strategy_file: &amp;lt;file_path&amp;gt;
      tls:
        insecure: true&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;traces-push_config-is-no-longer-supported-breaking-change&#34;&gt;Traces: push_config is no longer supported (Breaking change)&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;push_config&lt;/code&gt; was deprecated in favor of &lt;code&gt;remote_write&lt;/code&gt; in v0.14.0, while
maintaining backwards compatibility.
Refer to the &lt;a href=&#34;#tempo-push_config-deprecation&#34;&gt;deprecation announcement&lt;/a&gt; for how to upgrade.&lt;/p&gt;
&lt;h3 id=&#34;traces-legacy-otlp-grpc-port-no-longer-default-port&#34;&gt;Traces: legacy OTLP gRPC port no longer default port&lt;/h3&gt;
&lt;p&gt;OTLP gRPC receivers listen at port &lt;code&gt;4317&lt;/code&gt; by default, instead of at port &lt;code&gt;55680&lt;/code&gt;.
This goes in line with OTLP legacy port deprecation.&lt;/p&gt;
&lt;p&gt;To upgrade, point the client instrumentation push endpoint to &lt;code&gt;:4317&lt;/code&gt; if using
the default OTLP gRPC endpoint.&lt;/p&gt;
&lt;h2 id=&#34;v019&#34;&gt;v0.19&lt;/h2&gt;
&lt;h3 id=&#34;traces-deprecation-of-tempo-in-config-and-metrics-deprecation&#34;&gt;Traces: Deprecation of &amp;ldquo;tempo&amp;rdquo; in config and metrics. (Deprecation)&lt;/h3&gt;
&lt;p&gt;The term &lt;code&gt;tempo&lt;/code&gt; in the config has been deprecated of favor of &lt;code&gt;traces&lt;/code&gt;. This
change is to make intent clearer.&lt;/p&gt;
&lt;p&gt;Example old config:&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;tempo:
  configs:
    - name: default
      receivers:
        jaeger:
          protocols:
            thrift_http:&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Example of new config:&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;traces:
  configs:
    - name: default
      receivers:
        jaeger:
          protocols:
            thrift_http:&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Any tempo metrics have been renamed from &lt;code&gt;tempo_*&lt;/code&gt; to &lt;code&gt;traces_*&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;tempo-split-grouping-by-trace-from-tail-sampling-config-breaking-change&#34;&gt;Tempo: split grouping by trace from tail sampling config (Breaking change)&lt;/h3&gt;
&lt;p&gt;Load balancing traces between agent instances has been moved from an embedded
functionality in tail sampling to its own configuration block.
This is done due to more processor benefiting from receiving consistently
receiving all spans for a trace in the same agent to be processed, such as
service graphs.&lt;/p&gt;
&lt;p&gt;As a consequence, &lt;code&gt;tail_sampling.load_balancing&lt;/code&gt; has been deprecated in favor of
a &lt;code&gt;load_balancing&lt;/code&gt; block. Also, &lt;code&gt;port&lt;/code&gt; has been renamed to &lt;code&gt;receiver_port&lt;/code&gt; and
moved to the new &lt;code&gt;load_balancing&lt;/code&gt; block.&lt;/p&gt;
&lt;p&gt;Example old config:&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;tail_sampling:
  policies:
    - always_sample:
  port: 4318
  load_balancing:
    exporter:
      insecure: true
    resolver:
      dns:
        hostname: agent
        port: 4318&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Example new config:&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;tail_sampling:
  policies:
    - always_sample:
load_balancing:
  exporter:
    insecure: true
  resolver:
    dns:
      hostname: agent
      port: 4318
  receiver_port: 4318&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;metrics-deprecation-of-prometheus-in-config-deprecation&#34;&gt;Metrics: Deprecation of &amp;ldquo;prometheus&amp;rdquo; in config. (Deprecation)&lt;/h3&gt;
&lt;p&gt;The term &lt;code&gt;prometheus&lt;/code&gt; in the config has been deprecated of favor of &lt;code&gt;metrics&lt;/code&gt;. This
change is to make it clearer when referring to Prometheus or another
Prometheus-like database, and configuration of Grafana Agent to send metrics to
one of those systems.&lt;/p&gt;
&lt;p&gt;Old configs will continue to work for now, but support for the old format will
eventually be removed. To migrate your config, change the &lt;code&gt;prometheus&lt;/code&gt; key to
&lt;code&gt;metrics&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Example old config:&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;prometheus:
  configs:
    - name: default
      host_filter: false
      scrape_configs:
        - job_name: local_scrape
          static_configs:
            - targets: [&amp;#39;127.0.0.1:12345&amp;#39;]
              labels:
                cluster: &amp;#39;localhost&amp;#39;
      remote_write:
        - url: http://localhost:9009/api/prom/push&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Example new config:&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;metrics:
  configs:
    - name: default
      host_filter: false
      scrape_configs:
        - job_name: local_scrape
          static_configs:
            - targets: [&amp;#39;127.0.0.1:12345&amp;#39;]
              labels:
                cluster: &amp;#39;localhost&amp;#39;
      remote_write:
        - url: http://localhost:9009/api/prom/push&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;tempo-prom_instance-rename-breaking-change&#34;&gt;Tempo: prom_instance rename (Breaking change)&lt;/h3&gt;
&lt;p&gt;As part of &lt;code&gt;prometheus&lt;/code&gt; being renamed to &lt;code&gt;metrics&lt;/code&gt;, the spanmetrics
&lt;code&gt;prom_instance&lt;/code&gt; field has been renamed to &lt;code&gt;metrics_instance&lt;/code&gt;. This is a breaking
change, and the old name will no longer work.&lt;/p&gt;
&lt;p&gt;Example old config:&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;tempo:
  configs:
  - name: default
    spanmetrics:
      prom_instance: default&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Example new config:&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;tempo:
  configs:
  - name: default
    spanmetrics:
      metrics_instance: default&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;logs-deprecation-of-loki-in-config-deprecation&#34;&gt;Logs: Deprecation of &amp;ldquo;loki&amp;rdquo; in config. (Deprecation)&lt;/h3&gt;
&lt;p&gt;The term &lt;code&gt;loki&lt;/code&gt; in the config has been deprecated of favor of &lt;code&gt;logs&lt;/code&gt;. This
change is to make it clearer when referring to Grafana Loki, and
configuration of Grafana Agent to send logs to Grafana Loki.&lt;/p&gt;
&lt;p&gt;Old configs will continue to work for now, but support for the old format will
eventually be removed. To migrate your config, change the &lt;code&gt;loki&lt;/code&gt; key to &lt;code&gt;logs&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Example old config:&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;loki:
  positions_directory: /tmp/loki-positions
  configs:
  - name: default
    clients:
      - url: http://localhost:3100/loki/api/v1/push
    scrape_configs:
    - job_name: system
      static_configs:
      - targets: [&amp;#39;localhost&amp;#39;]
        labels:
          job: varlogs
          __path__: /var/log/*log&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Example new config:&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;logs:
  positions_directory: /tmp/loki-positions
  configs:
  - name: default
    clients:
      - url: http://localhost:3100/loki/api/v1/push
    scrape_configs:
    - job_name: system
      static_configs:
      - targets: [&amp;#39;localhost&amp;#39;]
        labels:
          job: varlogs
          __path__: /var/log/*log&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;tempo-deprecation-of-loki-in-config-deprecation&#34;&gt;Tempo: Deprecation of &amp;ldquo;loki&amp;rdquo; in config. (Deprecation)&lt;/h3&gt;
&lt;p&gt;As part of the &lt;code&gt;loki&lt;/code&gt; to &lt;code&gt;logs&lt;/code&gt; rename, parts of the automatic_logging component
in Tempo have been updated to refer to &lt;code&gt;logs_instance&lt;/code&gt; instead.&lt;/p&gt;
&lt;p&gt;Old configurations using &lt;code&gt;loki_name&lt;/code&gt;, &lt;code&gt;loki_tag&lt;/code&gt;, or &lt;code&gt;backend: loki&lt;/code&gt; will
continue to work as of this version, but support for the old config format
will eventually be removed.&lt;/p&gt;
&lt;p&gt;Example old config:&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;tempo:
  configs:
  - name: default
    automatic_logging:
      backend: loki
      loki_name: default
      spans: true
      processes: true
      roots: true
    overrides:
      loki_tag: tempo&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Example new config:&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;tempo:
  configs:
  - name: default
    automatic_logging:
      backend: logs_instance
      logs_instance_name: default
      spans: true
      processes: true
      roots: true
    overrides:
      logs_instance_tag: tempo&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;v018&#34;&gt;v0.18&lt;/h2&gt;
&lt;h3 id=&#34;tempo-remote-write-tls-config&#34;&gt;Tempo: Remote write TLS config&lt;/h3&gt;
&lt;p&gt;Tempo &lt;code&gt;remote_write&lt;/code&gt; now supports configuring TLS settings in the trace
exporter&amp;rsquo;s client. &lt;code&gt;insecure_skip_verify&lt;/code&gt; is moved into this setting&amp;rsquo;s block.&lt;/p&gt;
&lt;p&gt;Old configurations with &lt;code&gt;insecure_skip_verify&lt;/code&gt; outside &lt;code&gt;tls_config&lt;/code&gt; will continue
to work as of this version, but support will eventually be removed.
If both &lt;code&gt;insecure_skip_verify&lt;/code&gt; and &lt;code&gt;tls_config.insecure_skip_verify&lt;/code&gt; are used,
then the latter take precedence.&lt;/p&gt;
&lt;p&gt;Example old config:&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;tempo:
  configs:
    - name: default
      remote_write:
        - endpoint: otel-collector:55680
          insecure: true
          insecure_skip_verify: true&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Example new config:&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;tempo:
  configs:
    - name: default
      remote_write:
        - endpoint: otel-collector:55680
          insecure: true
          tls_config:
            insecure_skip_verify: true&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;v015&#34;&gt;v0.15&lt;/h2&gt;
&lt;h3 id=&#34;tempo-automatic_logging-changes&#34;&gt;Tempo: &lt;code&gt;automatic_logging&lt;/code&gt; changes&lt;/h3&gt;
&lt;p&gt;Tempo automatic logging previously assumed that the operator wanted to log
to a Loki instance. With the addition of an option to log to stdout a new
field is required to maintain the old behavior.&lt;/p&gt;
&lt;p&gt;Example old config:&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;tempo:
  configs:
  - name: default
    automatic_logging:
      loki_name: &amp;lt;some loki instance&amp;gt;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Example new config:&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;tempo:
  configs:
  - name: default
    automatic_logging:
      backend: loki
      loki_name: &amp;lt;some loki instance&amp;gt;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;v014&#34;&gt;v0.14&lt;/h2&gt;
&lt;h3 id=&#34;scraping-service-security-change&#34;&gt;Scraping Service security change&lt;/h3&gt;
&lt;p&gt;v0.14.0 changes the default behavior of the scraping service config management
API to reject all configuration files that read credentials from a file on disk.
This prevents malicious users from crafting an instance config file that read
arbitrary files on disk and send their contents to remote endpoints.&lt;/p&gt;
&lt;p&gt;To revert to the old behavior, add &lt;code&gt;dangerous_allow_reading_files: true&lt;/code&gt; in your
&lt;code&gt;scraping_service&lt;/code&gt; config.&lt;/p&gt;
&lt;p&gt;Example old config:&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;prometheus:
  scraping_service:
    # ...&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Example new config:&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;prometheus:
  scraping_service:
    dangerous_allow_reading_files: true
    # ...&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;sigv4-config-change&#34;&gt;SigV4 config change&lt;/h3&gt;
&lt;p&gt;v0.14.0 updates the internal Prometheus dependency to 2.26.0, which includes
native support for SigV4, but uses a slightly different configuration structure
than the Grafana Agent did.&lt;/p&gt;
&lt;p&gt;To migrate, remove the &lt;code&gt;enabled&lt;/code&gt; key from your &lt;code&gt;sigv4&lt;/code&gt; configs. If &lt;code&gt;enabled&lt;/code&gt; was
the only key, define sigv4 as an empty object: &lt;code&gt;sigv4: {}&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Example old config:&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;sigv4:
  enabled: true
  region: us-east-1&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Example new config:&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;sigv4:
  region: us-east-1&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;tempo-push_config-deprecation&#34;&gt;Tempo: &lt;code&gt;push_config&lt;/code&gt; deprecation&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;push_config&lt;/code&gt; is now deprecated in favor of a &lt;code&gt;remote_write&lt;/code&gt; array which allows for sending spans to multiple endpoints.
&lt;code&gt;push_config&lt;/code&gt; will be removed in a future release, and it is recommended to migrate to &lt;code&gt;remote_write&lt;/code&gt; as soon as possible.&lt;/p&gt;
&lt;p&gt;To migrate, move the batch options outside the &lt;code&gt;push_config&lt;/code&gt; block.
Then, add a &lt;code&gt;remote_write&lt;/code&gt; array and move the remaining of your &lt;code&gt;push_config&lt;/code&gt; block inside it.&lt;/p&gt;
&lt;p&gt;Example old config:&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;tempo:
  configs:
    - name: default
      receivers:
        otlp:
          protocols:
            gpc:
      push_config:
        endpoint: otel-collector:55680
        insecure: true
        batch:
          timeout: 5s
          send_batch_size: 100&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Example migrated config:&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;tempo:
  configs:
    - name: default
      receivers:
        otlp:
          protocols:
            gpc:
      remote_write:
        - endpoint: otel-collector:55680
          insecure: true
      batch:
        timeout: 5s
        send_batch_size: 100&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;v012&#34;&gt;v0.12&lt;/h2&gt;
&lt;p&gt;v0.12 had two breaking changes: the &lt;code&gt;tempo&lt;/code&gt; and &lt;code&gt;loki&lt;/code&gt; sections have been changed to require a list of &lt;code&gt;tempo&lt;/code&gt;/&lt;code&gt;loki&lt;/code&gt; configs rather than just one.&lt;/p&gt;
&lt;h3 id=&#34;tempo-config-change&#34;&gt;Tempo Config Change&lt;/h3&gt;
&lt;p&gt;The Tempo config (&lt;code&gt;tempo&lt;/code&gt; in the config file) has been changed to store
configs within a &lt;code&gt;configs&lt;/code&gt; list. This allows for defining multiple Tempo
instances for collecting traces and forwarding them to different OTLP
endpoints.&lt;/p&gt;
&lt;p&gt;To migrate, add a &lt;code&gt;configs:&lt;/code&gt; array and move your existing config inside of it.
Give the element a &lt;code&gt;name: default&lt;/code&gt; field.&lt;/p&gt;
&lt;p&gt;Each config must have a unique non-empty name. &lt;code&gt;default&lt;/code&gt; is recommended for users
that don&amp;rsquo;t have other configs. The name of the config will be added as a
&lt;code&gt;tempo_config&lt;/code&gt; label for metrics.&lt;/p&gt;
&lt;p&gt;Example old config:&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;tempo:
  receivers:
    jaeger:
      protocols:
        thrift_http:
  attributes:
    actions:
    - action: upsert
      key: env
      value: prod
  push_config:
    endpoint: otel-collector:55680
    insecure: true
    batch:
      timeout: 5s
      send_batch_size: 100&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Example migrated config:&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;tempo:
  configs:
  - name: default
    receivers:
      jaeger:
        protocols:
          thrift_http:
    attributes:
      actions:
      - action: upsert
        key: env
        value: prod
    push_config:
      endpoint: otel-collector:55680
      insecure: true
      batch:
        timeout: 5s
        send_batch_size: 100&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;loki-promtail-config-change&#34;&gt;Loki Promtail Config Change&lt;/h3&gt;
&lt;p&gt;The Loki Promtail config (&lt;code&gt;loki&lt;/code&gt; in the config file) has been changed to store
configs within a &lt;code&gt;configs&lt;/code&gt; list. This allows for defining multiple Loki
Promtail instances for collecting logs and forwarding them to different Loki
servers.&lt;/p&gt;
&lt;p&gt;To migrate, add a &lt;code&gt;configs:&lt;/code&gt; array and move your existing config inside of it.
Give the element a &lt;code&gt;name: default&lt;/code&gt; field.&lt;/p&gt;
&lt;p&gt;Each config must have a unique non-empty name. &lt;code&gt;default&lt;/code&gt; is recommended for users
that don&amp;rsquo;t have other configs. The name of the config will be added as a
&lt;code&gt;loki_config&lt;/code&gt; label for Loki Promtail metrics.&lt;/p&gt;
&lt;p&gt;Example old config:&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;loki:
  positions:
    filename: /tmp/positions.yaml
  clients:
    - url: http://loki:3100/loki/api/v1/push
  scrape_configs:
  - job_name: system
    static_configs:
      - targets:
        - localhost
        labels:
          job: varlogs
          __path__: /var/log/*log&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Example migrated config:&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;loki:
  configs:
  - name: default
    positions:
      filename: /tmp/positions.yaml
    clients:
      - url: http://loki:3100/loki/api/v1/push
    scrape_configs:
    - job_name: system
      static_configs:
        - targets:
          - localhost
          labels:
            job: varlogs
            __path__: /var/log/*log&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="release-notes">Release notes&lt;/h1>
&lt;p>The release notes provide information about deprecations and breaking changes in Grafana Agent static mode.&lt;/p>
&lt;p>For a complete list of changes to Grafana Agent, with links to pull requests and related issues when available, refer to the &lt;a href="https://github.com/grafana/agent/blob/main/CHANGELOG.md" target="_blank" rel="noopener noreferrer">Changelog&lt;/a>.&lt;/p></description></item></channel></rss>