<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Flow mode on Grafana Labs</title><link>https://grafana.com/docs/agent/v0.43/flow/</link><description>Recent content in Flow mode on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/agent/v0.43/flow/index.xml" rel="self" type="application/rss+xml"/><item><title>Get started with Grafana Agent Flow</title><link>https://grafana.com/docs/agent/v0.43/flow/get-started/</link><pubDate>Fri, 06 Mar 2026 07:23:54 +0000</pubDate><guid>https://grafana.com/docs/agent/v0.43/flow/get-started/</guid><content><![CDATA[&lt;h1 id=&#34;get-started-with-grafana-agent-flow&#34;&gt;Get started with Grafana Agent Flow&lt;/h1&gt;
&lt;p&gt;This section covers topics that help you get started with Grafana Agent Flow,
including installation, running Grafana Agent Flow, overview of deployment topologies, and more.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.43/flow/get-started/install/&#34;&gt;Install Grafana Agent Flow&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.43/flow/get-started/run/&#34;&gt;Run Grafana Agent Flow&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.43/flow/get-started/deploy-agent/&#34;&gt;Grafana Agent Flow deployment topologies&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
]]></content><description>&lt;h1 id="get-started-with-grafana-agent-flow">Get started with Grafana Agent Flow&lt;/h1>
&lt;p>This section covers topics that help you get started with Grafana Agent Flow,
including installation, running Grafana Agent Flow, overview of deployment topologies, and more.&lt;/p></description></item><item><title>Concepts</title><link>https://grafana.com/docs/agent/v0.43/flow/concepts/</link><pubDate>Fri, 06 Mar 2026 07:23:54 +0000</pubDate><guid>https://grafana.com/docs/agent/v0.43/flow/concepts/</guid><content><![CDATA[&lt;h1 id=&#34;concepts&#34;&gt;Concepts&lt;/h1&gt;
&lt;p&gt;This section explains the primary concepts of Grafana Agent Flow.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.43/flow/concepts/config-language/&#34;&gt;Configuration language&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.43/flow/concepts/components/&#34;&gt;Components&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.43/flow/concepts/component_controller/&#34;&gt;Component controller&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.43/flow/concepts/custom_components/&#34;&gt;Custom components&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.43/flow/concepts/modules/&#34;&gt;Modules&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.43/flow/concepts/clustering/&#34;&gt;Clustering&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
]]></content><description>&lt;h1 id="concepts">Concepts&lt;/h1>
&lt;p>This section explains the primary concepts of Grafana Agent Flow.&lt;/p>
&lt;ul>&lt;li>
&lt;a href="/docs/agent/v0.43/flow/concepts/config-language/">Configuration language&lt;/a>&lt;/li>&lt;li>
&lt;a href="/docs/agent/v0.43/flow/concepts/components/">Components&lt;/a>&lt;/li>&lt;li>
&lt;a href="/docs/agent/v0.43/flow/concepts/component_controller/">Component controller&lt;/a>&lt;/li>&lt;li>
&lt;a href="/docs/agent/v0.43/flow/concepts/custom_components/">Custom components&lt;/a>&lt;/li>&lt;li>
&lt;a href="/docs/agent/v0.43/flow/concepts/modules/">Modules&lt;/a>&lt;/li>&lt;li>
&lt;a href="/docs/agent/v0.43/flow/concepts/clustering/">Clustering&lt;/a>&lt;/li>&lt;/ul></description></item><item><title>Tasks with Grafana Agent Flow</title><link>https://grafana.com/docs/agent/v0.43/flow/tasks/</link><pubDate>Fri, 06 Mar 2026 07:23:54 +0000</pubDate><guid>https://grafana.com/docs/agent/v0.43/flow/tasks/</guid><content><![CDATA[&lt;h1 id=&#34;tasks-with-grafana-agent-flow&#34;&gt;Tasks with Grafana Agent Flow&lt;/h1&gt;
&lt;p&gt;This section details how to perform common tasks with Grafana Agent Flow.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.43/flow/tasks/configure/&#34;&gt;Configure Grafana Agent Flow&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.43/flow/tasks/migrate/&#34;&gt;Migrate to Grafana Agent Flow&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.43/flow/tasks/monitor/&#34;&gt;Monitor Grafana Agent Flow&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.43/flow/tasks/collect-prometheus-metrics/&#34;&gt;Collect and forward Prometheus metrics&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.43/flow/tasks/metamonitoring/&#34;&gt;Set up meta-monitoring&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.43/flow/tasks/collect-opentelemetry-data/&#34;&gt;Collect OpenTelemetry data&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.43/flow/tasks/opentelemetry-to-lgtm-stack/&#34;&gt;OpenTelemetry to Grafana stack&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.43/flow/tasks/configure-agent-clustering/&#34;&gt;Configure Grafana Agent clustering in an existing installation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.43/flow/tasks/distribute-prometheus-scrape-load/&#34;&gt;Distribute Prometheus metrics scrape load&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.43/flow/tasks/debug/&#34;&gt;Debug issues with Grafana Agent Flow&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
]]></content><description>&lt;h1 id="tasks-with-grafana-agent-flow">Tasks with Grafana Agent Flow&lt;/h1>
&lt;p>This section details how to perform common tasks with Grafana Agent Flow.&lt;/p>
&lt;ul>&lt;li>
&lt;a href="/docs/agent/v0.43/flow/tasks/configure/">Configure Grafana Agent Flow&lt;/a>&lt;/li>&lt;li>
&lt;a href="/docs/agent/v0.43/flow/tasks/migrate/">Migrate to Grafana Agent Flow&lt;/a>&lt;/li>&lt;li>
&lt;a href="/docs/agent/v0.43/flow/tasks/monitor/">Monitor Grafana Agent Flow&lt;/a>&lt;/li>&lt;li>
&lt;a href="/docs/agent/v0.43/flow/tasks/collect-prometheus-metrics/">Collect and forward Prometheus metrics&lt;/a>&lt;/li>&lt;li>
&lt;a href="/docs/agent/v0.43/flow/tasks/metamonitoring/">Set up meta-monitoring&lt;/a>&lt;/li>&lt;li>
&lt;a href="/docs/agent/v0.43/flow/tasks/collect-opentelemetry-data/">Collect OpenTelemetry data&lt;/a>&lt;/li>&lt;li>
&lt;a href="/docs/agent/v0.43/flow/tasks/opentelemetry-to-lgtm-stack/">OpenTelemetry to Grafana stack&lt;/a>&lt;/li>&lt;li>
&lt;a href="/docs/agent/v0.43/flow/tasks/configure-agent-clustering/">Configure Grafana Agent clustering in an existing installation&lt;/a>&lt;/li>&lt;li>
&lt;a href="/docs/agent/v0.43/flow/tasks/distribute-prometheus-scrape-load/">Distribute Prometheus metrics scrape load&lt;/a>&lt;/li>&lt;li>
&lt;a href="/docs/agent/v0.43/flow/tasks/debug/">Debug issues with Grafana Agent Flow&lt;/a>&lt;/li>&lt;/ul></description></item><item><title>Tutorials</title><link>https://grafana.com/docs/agent/v0.43/flow/tutorials/</link><pubDate>Fri, 06 Mar 2026 07:23:54 +0000</pubDate><guid>https://grafana.com/docs/agent/v0.43/flow/tutorials/</guid><content><![CDATA[&lt;h1 id=&#34;tutorials&#34;&gt;Tutorials&lt;/h1&gt;
&lt;p&gt;This section provides tutorials for learning how to use Grafana Agent Flow.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.43/flow/tutorials/flow-by-example/&#34;&gt;Flow by example&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.43/flow/tutorials/collecting-prometheus-metrics/&#34;&gt;Collect Prometheus metrics&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.43/flow/tutorials/filtering-metrics/&#34;&gt;Filter Prometheus metrics&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.43/flow/tutorials/chaining/&#34;&gt;Chain Prometheus components&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
]]></content><description>&lt;h1 id="tutorials">Tutorials&lt;/h1>
&lt;p>This section provides tutorials for learning how to use Grafana Agent Flow.&lt;/p>
&lt;ul>&lt;li>
&lt;a href="/docs/agent/v0.43/flow/tutorials/flow-by-example/">Flow by example&lt;/a>&lt;/li>&lt;li>
&lt;a href="/docs/agent/v0.43/flow/tutorials/collecting-prometheus-metrics/">Collect Prometheus metrics&lt;/a>&lt;/li>&lt;li>
&lt;a href="/docs/agent/v0.43/flow/tutorials/filtering-metrics/">Filter Prometheus metrics&lt;/a>&lt;/li>&lt;li>
&lt;a href="/docs/agent/v0.43/flow/tutorials/chaining/">Chain Prometheus components&lt;/a>&lt;/li>&lt;/ul></description></item><item><title>Grafana Agent Flow Reference</title><link>https://grafana.com/docs/agent/v0.43/flow/reference/</link><pubDate>Fri, 06 Mar 2026 07:23:54 +0000</pubDate><guid>https://grafana.com/docs/agent/v0.43/flow/reference/</guid><content><![CDATA[&lt;h1 id=&#34;grafana-agent-flow-reference&#34;&gt;Grafana Agent Flow Reference&lt;/h1&gt;
&lt;p&gt;This section provides reference-level documentation for the various parts of Grafana Agent Flow:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.43/flow/reference/cli/&#34;&gt;The Grafana Agent command-line interface&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.43/flow/reference/config-blocks/&#34;&gt;Configuration blocks&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.43/flow/reference/components/&#34;&gt;Components reference&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.43/flow/reference/compatibility/&#34;&gt;Compatible components&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/agent/v0.43/flow/reference/stdlib/&#34;&gt;Standard library&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
]]></content><description>&lt;h1 id="grafana-agent-flow-reference">Grafana Agent Flow Reference&lt;/h1>
&lt;p>This section provides reference-level documentation for the various parts of Grafana Agent Flow:&lt;/p>
&lt;ul>&lt;li>
&lt;a href="/docs/agent/v0.43/flow/reference/cli/">The Grafana Agent command-line interface&lt;/a>&lt;/li>&lt;li>
&lt;a href="/docs/agent/v0.43/flow/reference/config-blocks/">Configuration blocks&lt;/a>&lt;/li>&lt;li>
&lt;a href="/docs/agent/v0.43/flow/reference/components/">Components reference&lt;/a>&lt;/li>&lt;li>
&lt;a href="/docs/agent/v0.43/flow/reference/compatibility/">Compatible components&lt;/a>&lt;/li>&lt;li>
&lt;a href="/docs/agent/v0.43/flow/reference/stdlib/">Standard library&lt;/a>&lt;/li>&lt;/ul></description></item><item><title>Release notes for Grafana Agent Flow</title><link>https://grafana.com/docs/agent/v0.43/flow/release-notes/</link><pubDate>Fri, 06 Mar 2026 07:23:54 +0000</pubDate><guid>https://grafana.com/docs/agent/v0.43/flow/release-notes/</guid><content><![CDATA[&lt;h1 id=&#34;release-notes-for-grafana-agent-flow&#34;&gt;Release notes for Grafana Agent Flow&lt;/h1&gt;
&lt;p&gt;The release notes provide information about deprecations and breaking changes in Grafana Agent Flow.&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;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;These release notes are specific to Grafana Agent Flow.
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;../../static/release-notes/&#34;&gt;Static mode release notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../operator/release-notes/&#34;&gt;Static mode Kubernetes operator release notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h2 id=&#34;v0411&#34;&gt;v0.41.1&lt;/h2&gt;
&lt;h3 id=&#34;breaking-change-max_request_body_size-for-otelcolreceiverotlpotelcolreceiverzipkinotelcolreceiverjaeger-changed&#34;&gt;Breaking change: &lt;code&gt;max_request_body_size&lt;/code&gt; for &lt;code&gt;otelcol.receiver.otlp&lt;/code&gt;,&lt;code&gt;otelcol.receiver.zipkin&lt;/code&gt;,&lt;code&gt;otelcol.receiver.jaeger&lt;/code&gt; changed&lt;/h3&gt;
&lt;p&gt;The default value for &lt;code&gt;max_request_body_size&lt;/code&gt; changed from unlimited to &lt;code&gt;20 MiB&lt;/code&gt;. There is no ability to change &lt;code&gt;max_request_body_size&lt;/code&gt;
to accept unlimited requests.&lt;/p&gt;
&lt;h2 id=&#34;v041&#34;&gt;v0.41&lt;/h2&gt;
&lt;h3 id=&#34;breaking-change-default-otelcolreceiveropencensus-list-port-changed&#34;&gt;Breaking change: default &lt;code&gt;otelcol.receiver.opencensus&lt;/code&gt; list port changed&lt;/h3&gt;
&lt;p&gt;The default listen port for &lt;code&gt;otelcol.receiver.opencensus&lt;/code&gt; has changed from 4317 to 55678 to align with the upstream defaults.
To retain the previous listen port, explicitly set the &lt;code&gt;endpoint&lt;/code&gt; argument to &lt;code&gt;0.0.0.0:4317&lt;/code&gt; before upgrading.&lt;/p&gt;
&lt;h3 id=&#34;breaking-change-default-mimirruleskubernetes-sync-interval-changed&#34;&gt;Breaking change: default &lt;code&gt;mimir.rules.kubernetes&lt;/code&gt; sync interval changed&lt;/h3&gt;
&lt;p&gt;The default sync interval for &lt;code&gt;mimir.rules.kubernetes&lt;/code&gt; has changed from &lt;code&gt;30s&lt;/code&gt; to &lt;code&gt;5m&lt;/code&gt; to reduce load on Mimir.&lt;/p&gt;
&lt;h2 id=&#34;v040&#34;&gt;v0.40&lt;/h2&gt;
&lt;h3 id=&#34;breaking-change-prohibit-the-configuration-of-services-within-modules&#34;&gt;Breaking change: Prohibit the configuration of services within modules.&lt;/h3&gt;
&lt;p&gt;Previously it was possible to configure the HTTP service via the &lt;a href=&#34;/docs/agent/v0.39/flow/reference/config-blocks/http/&#34;&gt;HTTP config block&lt;/a&gt; inside of a module.
This functionality is now only available in the main configuration.&lt;/p&gt;
&lt;h3 id=&#34;breaking-change-change-the-default-value-of-disable_high_cardinality_metrics-to-true&#34;&gt;Breaking change: Change the default value of &lt;code&gt;disable_high_cardinality_metrics&lt;/code&gt; to &lt;code&gt;true&lt;/code&gt;.&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;disable_high_cardinality_metrics&lt;/code&gt; configuration argument is used by &lt;code&gt;otelcol.exporter&lt;/code&gt; components such as &lt;code&gt;otelcol.exporter.otlp&lt;/code&gt;.
If you need to see high cardinality metrics containing labels such as IP addresses and port numbers, you now have to explicitly set &lt;code&gt;disable_high_cardinality_metrics&lt;/code&gt; to &lt;code&gt;false&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;breaking-change-rename-component-prometheusexporteragent-to-prometheusexporterself&#34;&gt;Breaking change: Rename component &lt;code&gt;prometheus.exporter.agent&lt;/code&gt; to &lt;code&gt;prometheus.exporter.self&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;The name &lt;code&gt;prometheus.exporter.agent&lt;/code&gt; is potentially ambiguous and can be misinterpreted as an exporter for Prometheus Agent.
The new name reflects the component&amp;rsquo;s true purpose as an exporter of the process&amp;rsquo;s own metrics.&lt;/p&gt;
&lt;h3 id=&#34;deprecation-classic-modules-have-been-deprecated-and-will-be-removed-in-a-future-release&#34;&gt;Deprecation: classic modules have been deprecated and will be removed in a future release&lt;/h3&gt;
&lt;p&gt;Classic modules (the &lt;code&gt;module.git&lt;/code&gt;, &lt;code&gt;module.file&lt;/code&gt;, &lt;code&gt;module.http&lt;/code&gt;, and &lt;code&gt;module.string&lt;/code&gt; components) have been deprecated in favor of the new &lt;code&gt;import&lt;/code&gt; and &lt;code&gt;declare&lt;/code&gt; configuration blocks.&lt;/p&gt;
&lt;p&gt;Support for classic modules will be removed in a future release.&lt;/p&gt;
&lt;h3 id=&#34;deprecation-prometheusexportervsphere-is-deprecated-and-will-be-removed-in-a-future-release&#34;&gt;Deprecation: &lt;code&gt;prometheus.exporter.vsphere&lt;/code&gt; is deprecated and will be removed in a future release&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;prometheus.exporter.vsphere&lt;/code&gt; component has been deprecated in favor of &lt;code&gt;otelcol.receiver.vcenter&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Support for &lt;code&gt;prometheus.exporter.vsphere&lt;/code&gt; will be removed in a future release.&lt;/p&gt;
&lt;h2 id=&#34;v039&#34;&gt;v0.39&lt;/h2&gt;
&lt;h3 id=&#34;breaking-change-otelcolreceiverprometheus-will-drop-all-otel_scope_info-metrics-when-converting-them-to-otlp&#34;&gt;Breaking change: &lt;code&gt;otelcol.receiver.prometheus&lt;/code&gt; will drop all &lt;code&gt;otel_scope_info&lt;/code&gt; metrics when converting them to OTLP&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;If the &lt;code&gt;otel_scope_info&lt;/code&gt; metric has the &lt;code&gt;otel_scope_name&lt;/code&gt; and &lt;code&gt;otel_scope_version&lt;/code&gt; labels,
their values are used to set the OTLP Instrumentation Scope name and  version, respectively.&lt;/li&gt;
&lt;li&gt;Labels for &lt;code&gt;otel_scope_info&lt;/code&gt; metrics other than &lt;code&gt;otel_scope_name&lt;/code&gt; and &lt;code&gt;otel_scope_version&lt;/code&gt;
are added as scope attributes with the matching name and version.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;breaking-change-label-for-target-block-in-prometheusexporterblackbox-is-removed&#34;&gt;Breaking change: label for &lt;code&gt;target&lt;/code&gt; block in &lt;code&gt;prometheus.exporter.blackbox&lt;/code&gt; is removed&lt;/h3&gt;
&lt;p&gt;Previously in &lt;code&gt;prometheus.exporter.blackbox&lt;/code&gt;, the &lt;code&gt;target&lt;/code&gt; block requires a label which is used in job&amp;rsquo;s name.
In this version, user needs to be specify &lt;code&gt;name&lt;/code&gt; attribute instead, which allow less restrictive naming.&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;Alloy&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-alloy&#34;&gt;prometheus.exporter.blackbox &amp;#34;example&amp;#34; {
  config_file = &amp;#34;blackbox_modules.yml&amp;#34;

  target &amp;#34;grafana&amp;#34; {
    address = &amp;#34;https://grafana.com&amp;#34;
    module  = &amp;#34;http_2xx&amp;#34;
    labels = {
      &amp;#34;env&amp;#34;: &amp;#34;dev&amp;#34;,
    }
  }
}&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;Alloy&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-alloy&#34;&gt;prometheus.exporter.blackbox &amp;#34;example&amp;#34; {
  config_file = &amp;#34;blackbox_modules.yml&amp;#34;

  target {
    name     = &amp;#34;grafana&amp;#34;
    address = &amp;#34;https://grafana.com&amp;#34;
    module  = &amp;#34;http_2xx&amp;#34;
    labels = {
      &amp;#34;env&amp;#34;: &amp;#34;dev&amp;#34;,
    }
  }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;v038&#34;&gt;v0.38&lt;/h2&gt;
&lt;h3 id=&#34;breaking-change-otelcolexporterjaeger-component-removed&#34;&gt;Breaking change: &lt;code&gt;otelcol.exporter.jaeger&lt;/code&gt; component removed&lt;/h3&gt;
&lt;p&gt;The deprecated &lt;code&gt;otelcol.exporter.jaeger&lt;/code&gt; component has been removed. To send
traces to Jaeger, use &lt;code&gt;otelcol.exporter.otlp&lt;/code&gt; and a version of Jaeger that
supports OTLP.&lt;/p&gt;
&lt;h2 id=&#34;v037&#34;&gt;v0.37&lt;/h2&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 Grafana Agent Flow 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;Alloy&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-alloy&#34;&gt;stage.non_indexed_labels {
    values = {&amp;#34;app&amp;#34; = &amp;#34;&amp;#34;}
}&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;Alloy&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-alloy&#34;&gt;stage.structured_metadata {
    values = {&amp;#34;app&amp;#34; = &amp;#34;&amp;#34;}
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;breaking-change-otelcolexporterprometheus-scope-labels-updated&#34;&gt;Breaking change: &lt;code&gt;otelcol.exporter.prometheus&lt;/code&gt; scope labels updated&lt;/h3&gt;
&lt;p&gt;There are 2 changes to the way scope labels work for this component.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Previously, the &lt;code&gt;include_scope_info&lt;/code&gt; argument would trigger including
&lt;code&gt;otel_scope_name&lt;/code&gt; and &lt;code&gt;otel_scope_version&lt;/code&gt; in metrics. This is now defaulted
to &lt;code&gt;true&lt;/code&gt; and controlled via the &lt;code&gt;include_scope_labels&lt;/code&gt; argument.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A bugfix was made to rename &lt;code&gt;otel_scope_info&lt;/code&gt; metric labels from
&lt;code&gt;name&lt;/code&gt; to &lt;code&gt;otel_scope_name&lt;/code&gt; and &lt;code&gt;version&lt;/code&gt; to &lt;code&gt;otel_scope_version&lt;/code&gt;. This is
now correct with the OTLP Instrumentation Scope specification.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;breaking-change-prometheusexporterunix-now-requires-a-label&#34;&gt;Breaking change: &lt;code&gt;prometheus.exporter.unix&lt;/code&gt; now requires a label.&lt;/h3&gt;
&lt;p&gt;Previously the exporter was a singleton and did not require a label. The exporter now can be used multiple times and
needs a label.&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;Alloy&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-alloy&#34;&gt;prometheus.exporter.unix { /* ... */ }&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;Alloy&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-alloy&#34;&gt;prometheus.exporter.unix &amp;#34;example&amp;#34; { /* ... */ }&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;v036&#34;&gt;v0.36&lt;/h2&gt;
&lt;h3 id=&#34;breaking-change-the-default-value-of-retry_on_http_429-is-changed-to-true-for-the-queue_config-in-prometheusremote_write&#34;&gt;Breaking change: The default value of &lt;code&gt;retry_on_http_429&lt;/code&gt; is changed to &lt;code&gt;true&lt;/code&gt; for the &lt;code&gt;queue_config&lt;/code&gt; in &lt;code&gt;prometheus.remote_write&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;The default value of &lt;code&gt;retry_on_http_429&lt;/code&gt; is changed from &lt;code&gt;false&lt;/code&gt; to &lt;code&gt;true&lt;/code&gt; for the &lt;code&gt;queue_config&lt;/code&gt; block in &lt;code&gt;prometheus.remote_write&lt;/code&gt;
so that Grafana Agent can retry sending and avoid data being lost for metric pipelines by default.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you set the &lt;code&gt;retry_on_http_429&lt;/code&gt; explicitly - no action is required.&lt;/li&gt;
&lt;li&gt;If you do not set &lt;code&gt;retry_on_http_429&lt;/code&gt; explicitly 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; as you upgrade to this new version.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;breaking-change-lokisourcefile-no-longer-automatically-extracts-logs-from-compressed-files&#34;&gt;Breaking change: &lt;code&gt;loki.source.file&lt;/code&gt; no longer automatically extracts logs from compressed files&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;loki.source.file&lt;/code&gt; component will no longer automatically detect and decompress
logs from compressed files (this was an undocumented behaviour).&lt;/p&gt;
&lt;p&gt;This file-extension-based detection of compressed files has been replaced by a
new configuration block that explicitly enables and specifies the compression
format. By default, the decompression of files is entirely disabled.&lt;/p&gt;
&lt;p&gt;How to migrate:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;If Grafana Agent Flow never reads logs from files with
extensions &lt;code&gt;.gz&lt;/code&gt;, &lt;code&gt;.tar.gz&lt;/code&gt;, &lt;code&gt;.z&lt;/code&gt; or &lt;code&gt;.bz2&lt;/code&gt; then no action is required.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You can check what are the file extensions Grafana Agent Flow reads from by looking
at the &lt;code&gt;path&lt;/code&gt; label on &lt;code&gt;loki_source_file_file_bytes_total&lt;/code&gt; metric.&lt;/p&gt;&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If Grafana Agent Flow extracts data from compressed files, please add the following
configuration block to your &lt;code&gt;loki.source.file&lt;/code&gt; component:&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;Alloy&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-alloy&#34;&gt;loki.source.file &amp;#34;example&amp;#34; {
  ...
  decompression {
    enabled       = true
    format        = &amp;#34;&amp;lt;compression format&amp;gt;&amp;#34;
  }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;where the &lt;code&gt;&amp;lt;compression format&amp;gt;&lt;/code&gt; is the appropriate compression format -
see &lt;a href=&#34;../reference/components/loki.source.file/&#34;&gt;&lt;code&gt;loki.source.file&lt;/code&gt; documentation&lt;/a&gt; for details.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;v035&#34;&gt;v0.35&lt;/h2&gt;
&lt;h3 id=&#34;breaking-change-auth-and-version-attributes-from-walk_params-block-of-prometheusexportersnmp-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 &lt;code&gt;prometheus.exporter.snmp&lt;/code&gt; have been removed&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;prometheus.exporter.snmp&lt;/code&gt; flow component wraps 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;Alloy&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-alloy&#34;&gt;prometheus.exporter.snmp &amp;#34;example&amp;#34; {
   config_file = &amp;#34;snmp_modules.yml&amp;#34;

    target &amp;#34;network_switch_1&amp;#34; {
        address     = &amp;#34;192.168.1.2&amp;#34;
        module      = &amp;#34;if_mib&amp;#34;
        walk_params = &amp;#34;public&amp;#34;
    }

    walk_param &amp;#34;public&amp;#34; {
        retries = &amp;#34;2&amp;#34;
        version = &amp;#34;2&amp;#34;
        auth {
            community = &amp;#34;public&amp;#34;
        }
    }
}&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;Alloy&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-alloy&#34;&gt;prometheus.exporter.snmp &amp;#34;example&amp;#34; {
   config_file = &amp;#34;snmp_modules.yml&amp;#34;

    target &amp;#34;network_switch_1&amp;#34; {
        address     = &amp;#34;192.168.1.2&amp;#34;
        module      = &amp;#34;if_mib&amp;#34;
        walk_params = &amp;#34;public&amp;#34;
        auth        = &amp;#34;public_v2&amp;#34;
    }

    walk_param &amp;#34;public&amp;#34; {
        retries = &amp;#34;2&amp;#34;
    }
}&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;breaking-change-discoveryfile-has-been-renamed-to-localfile_match&#34;&gt;Breaking change: &lt;code&gt;discovery.file&lt;/code&gt; has been renamed to &lt;code&gt;local.file_match&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;discovery.file&lt;/code&gt; component has been renamed to &lt;code&gt;local.file_match&lt;/code&gt; to make
its purpose more clear: to find files on the local filesystem matching a
pattern.&lt;/p&gt;
&lt;p&gt;Renaming &lt;code&gt;discovery.file&lt;/code&gt; to &lt;code&gt;local.file_match&lt;/code&gt; also resolves a point of
confusion where &lt;code&gt;discovery.file&lt;/code&gt; was thought to implement Prometheus&amp;rsquo; file
service discovery.&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;Alloy&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-alloy&#34;&gt;discovery.kubernetes &amp;#34;k8s&amp;#34; {
  role = &amp;#34;pod&amp;#34;
}

discovery.relabel &amp;#34;k8s&amp;#34; {
  targets = discovery.kubernetes.k8s.targets

  rule {
    source_labels = [&amp;#34;__meta_kubernetes_namespace&amp;#34;, &amp;#34;__meta_kubernetes_pod_label_name&amp;#34;]
    target_label  = &amp;#34;job&amp;#34;
    separator     = &amp;#34;/&amp;#34;
  }

  rule {
    source_labels = [&amp;#34;__meta_kubernetes_pod_uid&amp;#34;, &amp;#34;__meta_kubernetes_pod_container_name&amp;#34;]
    target_label  = &amp;#34;__path__&amp;#34;
    separator     = &amp;#34;/&amp;#34;
    replacement   = &amp;#34;/var/log/pods/*$1/*.log&amp;#34;
  }
}

discovery.file &amp;#34;pods&amp;#34; {
  path_targets = discovery.relabel.k8s.output
}&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;Alloy&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-alloy&#34;&gt;discovery.kubernetes &amp;#34;k8s&amp;#34; {
  role = &amp;#34;pod&amp;#34;
}

discovery.relabel &amp;#34;k8s&amp;#34; {
  targets = discovery.kubernetes.k8s.targets

  rule {
    source_labels = [&amp;#34;__meta_kubernetes_namespace&amp;#34;, &amp;#34;__meta_kubernetes_pod_label_name&amp;#34;]
    target_label  = &amp;#34;job&amp;#34;
    separator     = &amp;#34;/&amp;#34;
  }

  rule {
    source_labels = [&amp;#34;__meta_kubernetes_pod_uid&amp;#34;, &amp;#34;__meta_kubernetes_pod_container_name&amp;#34;]
    target_label  = &amp;#34;__path__&amp;#34;
    separator     = &amp;#34;/&amp;#34;
    replacement   = &amp;#34;/var/log/pods/*$1/*.log&amp;#34;
  }
}

local.file_match &amp;#34;pods&amp;#34; {
  path_targets = discovery.relabel.k8s.output
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;breaking-change-discovery_target_decode-has-been-removed-from-the-river-standard-library&#34;&gt;Breaking change: &lt;code&gt;discovery_target_decode&lt;/code&gt; has been removed from the River standard library&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;discovery_target_decode&lt;/code&gt; function was initially added to the River
standard library as an equivalent to Prometheus&amp;rsquo; file-based discovery and
HTTP-based discovery methods.&lt;/p&gt;
&lt;p&gt;However, the Prometheus discovery mechanisms have more functionality than
&lt;code&gt;discovery_target_decode&lt;/code&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prometheus&amp;rsquo; &lt;code&gt;file_sd_configs&lt;/code&gt; can use many files based on pattern matching.&lt;/li&gt;
&lt;li&gt;Prometheus&amp;rsquo; &lt;code&gt;http_sd_configs&lt;/code&gt; also support YAML files.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Additionally, it is no longer an accepted pattern to have component-specific
functions to the River standard library.&lt;/p&gt;
&lt;p&gt;As a result, &lt;code&gt;discovery_target_decode&lt;/code&gt; has been removed in favor of using
components.&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;Alloy&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-alloy&#34;&gt;remote.http &amp;#34;example&amp;#34; {
    url = URL_CONTAINING_TARGETS
}

prometehus.scrape &amp;#34;example&amp;#34; {
    targets    = discovery_target_decode(remote.http.example.content)
    forward_to = FORWARD_LIST
}&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;Alloy&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-alloy&#34;&gt;discovery.http &amp;#34;example&amp;#34; {
    url = URL_CONTAINING_TARGETS
}

prometehus.scrape &amp;#34;example&amp;#34; {
    targets    = discovery.http.example.targets
    forward_to = FORWARD_LIST
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;breaking-change-the-algorithm-for-the-hash-action-of-otelcolprocessorattributes-has-changed&#34;&gt;Breaking change: The algorithm for the &amp;ldquo;hash&amp;rdquo; action of &lt;code&gt;otelcol.processor.attributes&lt;/code&gt; has changed&lt;/h3&gt;
&lt;p&gt;The hash produced when using &lt;code&gt;action = &amp;quot;hash&amp;quot;&lt;/code&gt; in the &lt;code&gt;otelcol.processor.attributes&lt;/code&gt; flow component is now using the more secure SHA-256 algorithm.
The change was made in PR &lt;a href=&#34;https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/22831&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;#22831&lt;/a&gt; of opentelemetry-collector-contrib.&lt;/p&gt;
&lt;h3 id=&#34;breaking-change-otelcolexporterloki-now-includes-instrumentation-scope-in-its-output&#34;&gt;Breaking change: &lt;code&gt;otelcol.exporter.loki&lt;/code&gt; now includes instrumentation scope in its output&lt;/h3&gt;
&lt;p&gt;Additional &lt;code&gt;instrumentation_scope&lt;/code&gt; information will be added to the OTLP log signal, like this:&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;body&amp;#34;: &amp;#34;Example log&amp;#34;,
    &amp;#34;traceid&amp;#34;: &amp;#34;01020304000000000000000000000000&amp;#34;,
    &amp;#34;spanid&amp;#34;: &amp;#34;0506070800000000&amp;#34;,
    &amp;#34;severity&amp;#34;: &amp;#34;error&amp;#34;,
    &amp;#34;attributes&amp;#34;: {
        &amp;#34;attr1&amp;#34;: &amp;#34;1&amp;#34;,
        &amp;#34;attr2&amp;#34;: &amp;#34;2&amp;#34;
    },
    &amp;#34;resources&amp;#34;: {
        &amp;#34;host.name&amp;#34;: &amp;#34;something&amp;#34;
    },
    &amp;#34;instrumentation_scope&amp;#34;: {
        &amp;#34;name&amp;#34;: &amp;#34;example-logger-name&amp;#34;,
        &amp;#34;version&amp;#34;: &amp;#34;v1&amp;#34;
    }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;breaking-change-otelcolextensionjaeger_remote_sampling-removes-the--http-endpoint&#34;&gt;Breaking change: &lt;code&gt;otelcol.extension.jaeger_remote_sampling&lt;/code&gt; removes the &lt;code&gt;/&lt;/code&gt; HTTP endpoint&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;/&lt;/code&gt; HTTP endpoint was the same as the &lt;code&gt;/sampling&lt;/code&gt; endpoint. The &lt;code&gt;/sampling&lt;/code&gt; endpoint is still functional.
The change was made in PR &lt;a href=&#34;https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/18070&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;#18070&lt;/a&gt; of opentelemetry-collector-contrib.&lt;/p&gt;
&lt;h3 id=&#34;breaking-change-the-remote_sampling-block-has-been-removed-from-otelcolreceiverjaeger&#34;&gt;Breaking change: The &lt;code&gt;remote_sampling&lt;/code&gt; block has been removed from &lt;code&gt;otelcol.receiver.jaeger&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;remote_sampling&lt;/code&gt; block in &lt;code&gt;otelcol.receiver.jaeger&lt;/code&gt; has been an undocumented no-op configuration for some time, and has now been removed.
Customers are advised to use &lt;code&gt;otelcol.extension.jaeger_remote_sampling&lt;/code&gt; instead.&lt;/p&gt;
&lt;h3 id=&#34;deprecation-otelcolexporterjaeger-has-been-deprecated-and-will-be-removed-in-grafana-agent-flow-v0380&#34;&gt;Deprecation: &lt;code&gt;otelcol.exporter.jaeger&lt;/code&gt; has been deprecated and will be removed in Grafana Agent Flow v0.38.0.&lt;/h3&gt;
&lt;p&gt;This is because Jaeger supports OTLP directly and OpenTelemetry Collector is also removing its
&lt;a href=&#34;https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/jaegerexporter&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Jaeger receiver&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;v034&#34;&gt;v0.34&lt;/h2&gt;
&lt;h3 id=&#34;breaking-change-phlarescrape-and-phlarewrite-have-been-renamed-to-pyroscopescrape-and-pyroscopescrape&#34;&gt;Breaking change: &lt;code&gt;phlare.scrape&lt;/code&gt; and &lt;code&gt;phlare.write&lt;/code&gt; have been renamed to &lt;code&gt;pyroscope.scrape&lt;/code&gt; and &lt;code&gt;pyroscope.scrape&lt;/code&gt;&lt;/h3&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;Alloy&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-alloy&#34;&gt;phlare.write &amp;#34;staging&amp;#34; {
  endpoint {
    url = &amp;#34;http://phlare:4100&amp;#34;
  }
}

phlare.scrape &amp;#34;default&amp;#34; {
  targets = [
    {&amp;#34;__address__&amp;#34; = &amp;#34;agent:12345&amp;#34;, &amp;#34;app&amp;#34;=&amp;#34;agent&amp;#34;},
  ]
  forward_to = [phlare.write.staging.receiver]
}&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;Alloy&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-alloy&#34;&gt;pyroscope.write &amp;#34;staging&amp;#34; {
  endpoint {
    url = &amp;#34;http://pyroscope:4100&amp;#34;
  }
}

pyroscope.scrape &amp;#34;default&amp;#34; {
  targets = [
    {&amp;#34;__address__&amp;#34; = &amp;#34;agent:12345&amp;#34;, &amp;#34;app&amp;#34;=&amp;#34;agent&amp;#34;},
  ]
  forward_to = [pyroscope.write.staging.receiver]
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&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;h2 id=&#34;v032&#34;&gt;v0.32&lt;/h2&gt;
&lt;h3 id=&#34;breaking-change-http_client_config-flow-blocks-merged-with-parent-blocks&#34;&gt;Breaking change: &lt;code&gt;http_client_config&lt;/code&gt; Flow blocks merged with parent blocks&lt;/h3&gt;
&lt;p&gt;To reduce the amount of typing required to write Flow components, the arguments
and subblocks found in &lt;code&gt;http_client_config&lt;/code&gt; have been merged with their parent
blocks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;discovery.docker &amp;gt; http_client_config&lt;/code&gt; is merged into the &lt;code&gt;discovery.docker&lt;/code&gt; block.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;discovery.kubernetes &amp;gt; http_client_config&lt;/code&gt; is merged into the &lt;code&gt;discovery.kubernetes&lt;/code&gt; block.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;loki.source.kubernetes &amp;gt; client &amp;gt; http_client_config&lt;/code&gt; is merged into the &lt;code&gt;client&lt;/code&gt; block.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;loki.source.podlogs &amp;gt; client &amp;gt; http_client_config&lt;/code&gt; is merged into the &lt;code&gt;client&lt;/code&gt; block.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;loki.write &amp;gt; endpoint &amp;gt; http_client_config&lt;/code&gt; is merged into the &lt;code&gt;endpoint&lt;/code&gt; block.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;mimir.rules.kubernetes &amp;gt; http_client_config&lt;/code&gt; is merged into the &lt;code&gt;mimir.rules.kubernetes&lt;/code&gt; block.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;otelcol.receiver.opencensus &amp;gt; grpc&lt;/code&gt; is merged into the &lt;code&gt;otelcol.receiver.opencensus&lt;/code&gt; block.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;otelcol.receiver.zipkin &amp;gt; http&lt;/code&gt; is merged into the &lt;code&gt;otelcol.receiver.zipkin&lt;/code&gt; block.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;phlare.scrape &amp;gt; http_client_config&lt;/code&gt; is merged into the &lt;code&gt;phlare.scrape&lt;/code&gt; block.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;phlare.write &amp;gt; endpoint &amp;gt; http_client_config&lt;/code&gt; is merged into the &lt;code&gt;endpoint&lt;/code&gt; block.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;prometheus.remote_write &amp;gt; endpoint &amp;gt; http_client_config&lt;/code&gt; is merged into the &lt;code&gt;endpoint&lt;/code&gt; block.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;prometheus.scrape &amp;gt; http_client_config&lt;/code&gt; is merged into the &lt;code&gt;prometheus.scrape&lt;/code&gt; block.&lt;/li&gt;
&lt;/ul&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;Alloy&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-alloy&#34;&gt;prometheus.remote_write &amp;#34;example&amp;#34; {
  endpoint {
    url = URL

    http_client_config {
      basic_auth {
        username = BASIC_AUTH_USERNAME
        password = BASIC_AUTH_PASSWORD
      }
    }
  }
}&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;Alloy&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-alloy&#34;&gt;prometheus.remote_write &amp;#34;example&amp;#34; {
  endpoint {
    url = URL

    basic_auth {
      username = BASIC_AUTH_USERNAME
      password = BASIC_AUTH_PASSWORD
    }
  }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;breaking-change-lokiprocess-stage-blocks-combined-into-new-blocks&#34;&gt;Breaking change: &lt;code&gt;loki.process&lt;/code&gt; stage blocks combined into new blocks&lt;/h3&gt;
&lt;p&gt;Previously, to add a stage to &lt;code&gt;loki.process&lt;/code&gt;, two blocks were needed: a block
called &lt;code&gt;stage&lt;/code&gt;, then an inner block for the stage being written. Stage blocks
are now a single block called &lt;code&gt;stage.STAGENAME&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;Alloy&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-alloy&#34;&gt;loki.process &amp;#34;example&amp;#34; {
  forward_to = RECEIVER_LIST

  stage {
    docker {}
  }

  stage {
    json {
      expressions = { output = &amp;#34;log&amp;#34;, extra = &amp;#34;&amp;#34; }
    }
  }
}&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;Alloy&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-alloy&#34;&gt;loki.process &amp;#34;example&amp;#34; {
  forward_to = RECEIVER_LIST

  stage.docker {}

  stage.json {
    expressions = { output = &amp;#34;log&amp;#34;, extra = &amp;#34;&amp;#34; }
  }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;breaking-change-client_options-block-renamed-in-remotes3-component&#34;&gt;Breaking change: &lt;code&gt;client_options&lt;/code&gt; block renamed in &lt;code&gt;remote.s3&lt;/code&gt; component&lt;/h3&gt;
&lt;p&gt;To synchronize naming conventions between &lt;code&gt;remote.s3&lt;/code&gt; and &lt;code&gt;remote.http&lt;/code&gt;, the
&lt;code&gt;client_options&lt;/code&gt; block has been renamed &lt;code&gt;client&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;Alloy&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-alloy&#34;&gt;remote.s3 &amp;#34;example&amp;#34; {
  path = S3_PATH

  client_options {
    key    = ACCESS_KEY
    secret = KEY_SECRET
  }
}&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;Alloy&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-alloy&#34;&gt;remote.s3 &amp;#34;example&amp;#34; {
  path = S3_PATH

  client {
    key    = ACCESS_KEY
    secret = KEY_SECRET
  }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;breaking-change-prometheusintegrationnode_exporter-component-name-changed&#34;&gt;Breaking change: &lt;code&gt;prometheus.integration.node_exporter&lt;/code&gt; component name changed&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;prometheus.integration.node_exporter&lt;/code&gt; component has been renamed to
&lt;code&gt;prometheus.exporter.unix&lt;/code&gt;. &lt;code&gt;unix&lt;/code&gt; was chosen as a name to approximate the
*nix-like systems the exporter supports.&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;Alloy&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-alloy&#34;&gt;prometheus.integration.node_exporter { }&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;Alloy&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-alloy&#34;&gt;prometheus.exporter.unix { }&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 id=&#34;breaking-change-support-for-experimental_enable_flow-environment-variable-removed&#34;&gt;Breaking change: support for &lt;code&gt;EXPERIMENTAL_ENABLE_FLOW&lt;/code&gt; environment variable removed&lt;/h3&gt;
&lt;p&gt;As first announced in v0.30.0, support for using the &lt;code&gt;EXPERIMENTAL_ENABLE_FLOW&lt;/code&gt;
environment variable to enable Flow mode has been removed.&lt;/p&gt;
&lt;p&gt;To enable Grafana Agent Flow, set the &lt;code&gt;AGENT_MODE&lt;/code&gt; environment variable to &lt;code&gt;flow&lt;/code&gt;.&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, the &lt;code&gt;agent&lt;/code&gt; release binary name is 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;/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;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;deprecation-experimental_enable_flow-environment-variable-changed&#34;&gt;Deprecation: &lt;code&gt;EXPERIMENTAL_ENABLE_FLOW&lt;/code&gt; environment variable changed&lt;/h3&gt;
&lt;p&gt;As part of graduating Grafana Agent Flow to beta, the
&lt;code&gt;EXPERIMENTAL_ENABLE_FLOW&lt;/code&gt; environment variable is replaced by setting
&lt;code&gt;AGENT_MODE&lt;/code&gt; to &lt;code&gt;flow&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Setting &lt;code&gt;EXPERIMENTAL_ENABLE_FLOW&lt;/code&gt; to &lt;code&gt;1&lt;/code&gt; or &lt;code&gt;true&lt;/code&gt; is now deprecated and
support for it will be removed for the v0.32 release.&lt;/p&gt;
&lt;h2 id=&#34;v029&#34;&gt;v0.29&lt;/h2&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 name &lt;code&gt;agent&lt;/code&gt; has been deprecated and will be renamed to
&lt;code&gt;grafana-agent&lt;/code&gt; 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;
]]></content><description>&lt;h1 id="release-notes-for-grafana-agent-flow">Release notes for Grafana Agent Flow&lt;/h1>
&lt;p>The release notes provide information about deprecations and breaking changes in Grafana Agent Flow.&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>