<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Set up Grafana Alloy on Grafana Labs</title><link>https://grafana.com/docs/alloy/v1.15/set-up/</link><description>Recent content in Set up Grafana Alloy on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/alloy/v1.15/set-up/index.xml" rel="self" type="application/rss+xml"/><item><title>Supported platforms</title><link>https://grafana.com/docs/alloy/v1.15/set-up/supported-platforms/</link><pubDate>Mon, 30 Mar 2026 15:47:22 +0000</pubDate><guid>https://grafana.com/docs/alloy/v1.15/set-up/supported-platforms/</guid><content><![CDATA[&lt;h1 id=&#34;supported-platforms&#34;&gt;Supported platforms&lt;/h1&gt;
&lt;p&gt;The following operating systems and hardware architectures are supported.&lt;/p&gt;
&lt;h2 id=&#34;linux&#34;&gt;Linux&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Architectures: AMD64, ARM64&lt;/li&gt;
&lt;li&gt;Within the Linux distribution lifecycle&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;windows&#34;&gt;Windows&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Minimum version: Windows Server 2016 or later, or Windows 10 or later.&lt;/li&gt;
&lt;li&gt;Architectures: AMD64&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;macos&#34;&gt;macOS&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Minimum version: macOS 10.13 or later&lt;/li&gt;
&lt;li&gt;Architectures: AMD64 on Intel, ARM64 on Apple Silicon&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;freebsd&#34;&gt;FreeBSD&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Within the FreeBSD lifecycle&lt;/li&gt;
&lt;li&gt;Architectures: AMD64&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="supported-platforms">Supported platforms&lt;/h1>
&lt;p>The following operating systems and hardware architectures are supported.&lt;/p>
&lt;h2 id="linux">Linux&lt;/h2>
&lt;ul>
&lt;li>Architectures: AMD64, ARM64&lt;/li>
&lt;li>Within the Linux distribution lifecycle&lt;/li>
&lt;/ul>
&lt;h2 id="windows">Windows&lt;/h2>
&lt;ul>
&lt;li>Minimum version: Windows Server 2016 or later, or Windows 10 or later.&lt;/li>
&lt;li>Architectures: AMD64&lt;/li>
&lt;/ul>
&lt;h2 id="macos">macOS&lt;/h2>
&lt;ul>
&lt;li>Minimum version: macOS 10.13 or later&lt;/li>
&lt;li>Architectures: AMD64 on Intel, ARM64 on Apple Silicon&lt;/li>
&lt;/ul>
&lt;h2 id="freebsd">FreeBSD&lt;/h2>
&lt;ul>
&lt;li>Within the FreeBSD lifecycle&lt;/li>
&lt;li>Architectures: AMD64&lt;/li>
&lt;/ul></description></item><item><title>Install Grafana Alloy</title><link>https://grafana.com/docs/alloy/v1.15/set-up/install/</link><pubDate>Mon, 30 Mar 2026 15:47:22 +0000</pubDate><guid>https://grafana.com/docs/alloy/v1.15/set-up/install/</guid><content><![CDATA[&lt;h1 id=&#34;install-grafana-alloy&#34;&gt;Install Grafana Alloy&lt;/h1&gt;
&lt;p&gt;You can install Alloy on Docker, Kubernetes, Linux, macOS, or Windows.&lt;/p&gt;
&lt;p&gt;Alloy supports the following architectures:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Linux&lt;/strong&gt;: AMD64, ARM64&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Windows&lt;/strong&gt;: AMD64&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;macOS&lt;/strong&gt;: AMD64 on Intel, ARM64 on Apple Silicon&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FreeBSD&lt;/strong&gt;: AMD64&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;Installing Alloy on other operating systems is possible, but isn&amp;rsquo;t recommended or supported.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;ul&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/alloy/v1.15/set-up/install/linux/&#34;&gt;Install Grafana Alloy on Linux&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/alloy/v1.15/set-up/install/macos/&#34;&gt;Install Grafana Alloy on macOS&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/alloy/v1.15/set-up/install/windows/&#34;&gt;Install Grafana Alloy on Windows&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/alloy/v1.15/set-up/install/docker/&#34;&gt;Run Grafana Alloy in a Docker container&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/alloy/v1.15/set-up/install/kubernetes/&#34;&gt;Deploy Grafana Alloy on Kubernetes&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/alloy/v1.15/set-up/install/binary/&#34;&gt;Install Grafana Alloy as a standalone binary&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/alloy/v1.15/set-up/install/ansible/&#34;&gt;Install Grafana Alloy with Ansible&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/alloy/v1.15/set-up/install/chef/&#34;&gt;Install Grafana Alloy with Chef&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/alloy/v1.15/set-up/install/openshift/&#34;&gt;Deploy Grafana Alloy on OpenShift&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/alloy/v1.15/set-up/install/podman/&#34;&gt;Run Grafana Alloy in a Podman container&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/alloy/v1.15/set-up/install/puppet/&#34;&gt;Install Grafana Alloy with Puppet&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h2 id=&#34;data-collection&#34;&gt;Data collection&lt;/h2&gt;
&lt;p&gt;By default, Alloy sends anonymous usage information to Grafana Labs.
Refer to &lt;a href=&#34;../../../data-collection/&#34;&gt;data collection&lt;/a&gt; for more information about what data Grafana collects and how you can opt-out.&lt;/p&gt;
]]></content><description>&lt;h1 id="install-grafana-alloy">Install Grafana Alloy&lt;/h1>
&lt;p>You can install Alloy on Docker, Kubernetes, Linux, macOS, or Windows.&lt;/p>
&lt;p>Alloy supports the following architectures:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Linux&lt;/strong>: AMD64, ARM64&lt;/li>
&lt;li>&lt;strong>Windows&lt;/strong>: AMD64&lt;/li>
&lt;li>&lt;strong>macOS&lt;/strong>: AMD64 on Intel, ARM64 on Apple Silicon&lt;/li>
&lt;li>&lt;strong>FreeBSD&lt;/strong>: AMD64&lt;/li>
&lt;/ul>
&lt;div class="admonition admonition-note">&lt;blockquote>&lt;p class="title text-uppercase">Note&lt;/p></description></item><item><title>Migrate to Grafana Alloy</title><link>https://grafana.com/docs/alloy/v1.15/set-up/migrate/</link><pubDate>Mon, 30 Mar 2026 15:47:22 +0000</pubDate><guid>https://grafana.com/docs/alloy/v1.15/set-up/migrate/</guid><content><![CDATA[&lt;h1 id=&#34;migrate-to-grafana-alloy&#34;&gt;Migrate to Grafana Alloy&lt;/h1&gt;
&lt;p&gt;This section details how to migrate to Alloy from other common solutions.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/alloy/v1.15/set-up/migrate/from-static/&#34;&gt;Migrate Grafana Agent Static to Grafana Alloy&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/alloy/v1.15/set-up/migrate/from-operator/&#34;&gt;Migrate from Grafana Agent Operator to Grafana Alloy&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/alloy/v1.15/set-up/migrate/from-flow/&#34;&gt;Migrate Grafana Agent Flow to Grafana Alloy&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/alloy/v1.15/set-up/migrate/from-otelcol/&#34;&gt;Migrate from OpenTelemetry Collector to Grafana Alloy&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/alloy/v1.15/set-up/migrate/from-prometheus/&#34;&gt;Migrate from Prometheus to Grafana Alloy&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/alloy/v1.15/set-up/migrate/from-promtail/&#34;&gt;Migrate from Promtail to Grafana Alloy&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
]]></content><description>&lt;h1 id="migrate-to-grafana-alloy">Migrate to Grafana Alloy&lt;/h1>
&lt;p>This section details how to migrate to Alloy from other common solutions.&lt;/p>
&lt;ul>&lt;li>
&lt;a href="/docs/alloy/v1.15/set-up/migrate/from-static/">Migrate Grafana Agent Static to Grafana Alloy&lt;/a>&lt;/li>&lt;li>
&lt;a href="/docs/alloy/v1.15/set-up/migrate/from-operator/">Migrate from Grafana Agent Operator to Grafana Alloy&lt;/a>&lt;/li>&lt;li>
&lt;a href="/docs/alloy/v1.15/set-up/migrate/from-flow/">Migrate Grafana Agent Flow to Grafana Alloy&lt;/a>&lt;/li>&lt;li>
&lt;a href="/docs/alloy/v1.15/set-up/migrate/from-otelcol/">Migrate from OpenTelemetry Collector to Grafana Alloy&lt;/a>&lt;/li>&lt;li>
&lt;a href="/docs/alloy/v1.15/set-up/migrate/from-prometheus/">Migrate from Prometheus to Grafana Alloy&lt;/a>&lt;/li>&lt;li>
&lt;a href="/docs/alloy/v1.15/set-up/migrate/from-promtail/">Migrate from Promtail to Grafana Alloy&lt;/a>&lt;/li>&lt;/ul></description></item><item><title>Run Grafana Alloy</title><link>https://grafana.com/docs/alloy/v1.15/set-up/run/</link><pubDate>Mon, 30 Mar 2026 15:47:22 +0000</pubDate><guid>https://grafana.com/docs/alloy/v1.15/set-up/run/</guid><content><![CDATA[&lt;h1 id=&#34;run-grafana-alloy&#34;&gt;Run Grafana Alloy&lt;/h1&gt;
&lt;p&gt;Use the following pages to learn how to start, restart, and stop Alloy after it&amp;rsquo;s installed.
For installation instructions, refer to &lt;a href=&#34;../install/&#34;&gt;Install Grafana Alloy&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/alloy/v1.15/set-up/run/linux/&#34;&gt;Run Grafana Alloy on Linux&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/alloy/v1.15/set-up/run/macos/&#34;&gt;Run Grafana Alloy on macOS&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/alloy/v1.15/set-up/run/windows/&#34;&gt;Run Grafana Alloy on Windows&lt;/a&gt;&lt;/li&gt;&lt;li&gt;
    &lt;a href=&#34;/docs/alloy/v1.15/set-up/run/binary/&#34;&gt;Run Grafana Alloy as a standalone binary&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
]]></content><description>&lt;h1 id="run-grafana-alloy">Run Grafana Alloy&lt;/h1>
&lt;p>Use the following pages to learn how to start, restart, and stop Alloy after it&amp;rsquo;s installed.
For installation instructions, refer to &lt;a href="../install/">Install Grafana Alloy&lt;/a>.&lt;/p></description></item><item><title>The OpenTelemetry Engine</title><link>https://grafana.com/docs/alloy/v1.15/set-up/otel_engine/</link><pubDate>Mon, 30 Mar 2026 15:47:22 +0000</pubDate><guid>https://grafana.com/docs/alloy/v1.15/set-up/otel_engine/</guid><content><![CDATA[&lt;h1 id=&#34;the-alloy-opentelemetry-engine&#34;&gt;The Alloy OpenTelemetry Engine&lt;/h1&gt;
&lt;p&gt;You can run the OTel Engine using the CLI, Helm chart, or service installation.&lt;/p&gt;
&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;There are no additional prerequisites.
The tools needed to run the OTel Engine are shipped within Alloy.&lt;/p&gt;
&lt;p&gt;Before you start, validate your OpenTelemetry YAML configuration with the &lt;code&gt;validate&lt;/code&gt; command:&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;Bash&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-bash&#34;&gt;alloy otel validate --config=&amp;lt;CONFIG_FILE&amp;gt;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;While this is an experimental feature, it isn&amp;rsquo;t hidden behind an &lt;code&gt;experimental&lt;/code&gt; feature flag like regular components.
This maintains compatibility with the OpenTelemetry Collector.&lt;/p&gt;
&lt;h2 id=&#34;run-with-the-cli&#34;&gt;Run with the CLI&lt;/h2&gt;
&lt;p&gt;The OTel Engine is available under the Alloy &lt;code&gt;otel&lt;/code&gt; command.
The CLI is the easiest way to experiment locally or on a single host.
Refer to the &lt;a href=&#34;../../reference/cli/otel/&#34;&gt;OTel CLI&lt;/a&gt; documentation for more information.&lt;/p&gt;
&lt;p&gt;The following example configuration file accepts telemetry over &lt;a href=&#34;https://opentelemetry.io/docs/specs/otel/protocol/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;OTLP&lt;/a&gt; and sends it to the configured backend:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;extensions:
  basicauth/my_auth:
    client_auth:
      username: &amp;lt;USERNAME&amp;gt;
      password: &amp;lt;PASSWORD&amp;gt;

receivers:
  otlp:
    protocols:
      grpc: {}
      http: {}

processors:
  batch:
    timeout: 1s
    send_batch_size: 512

exporters:
  otlphttp/my_backend:
    endpoint: &amp;lt;URL&amp;gt;
    auth:
      authenticator: basicauth/my_auth

service:
  extensions: [basicauth/my_auth]
  pipelines:
    traces:
      receivers: [otlp]
      processors: [batch]
      exporters: [otlphttp/my_backend]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Replace the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;USERNAME&amp;gt;&lt;/code&gt;&lt;/em&gt;: Your username. If you&amp;rsquo;re using Grafana Cloud, this is your Grafana Cloud instance ID.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;PASSWORD&amp;gt;&lt;/code&gt;&lt;/em&gt;: Your password. If you&amp;rsquo;re using Grafana Cloud, this is your Grafana Cloud API token.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;URL&amp;gt;&lt;/code&gt;&lt;/em&gt;: The URL to export data to. If you&amp;rsquo;re using Grafana Cloud, this is your Grafana Cloud OTLP endpoint URL.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more information about where to find these values for Grafana Cloud, refer to &lt;a href=&#34;/docs/grafana-cloud/send-data/otlp/send-data-otlp/&#34;&gt;Send data using OpenTelemetry Protocol&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To start the OTel Engine, run the following command:&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;shell&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-shell&#34;&gt;alloy otel --config=&amp;lt;CONFIG_FILE&amp;gt; [&amp;lt;FLAGS&amp;gt; ...]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Alloy then accepts incoming OTLP data on &lt;code&gt;0.0.0.0:4317&lt;/code&gt; for gRPC and &lt;code&gt;0.0.0.0:4318&lt;/code&gt; for HTTP requests.
Metrics are also available on the default collector port and endpoint at &lt;code&gt;0.0.0.0:8888/metrics&lt;/code&gt;.
Since the Default Engine isn&amp;rsquo;t running, the UI and metrics aren&amp;rsquo;t available at &lt;code&gt;0.0.0.0:12345/metrics&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;run-the-alloy-engine-extension&#34;&gt;Run the Alloy Engine extension&lt;/h3&gt;
&lt;p&gt;You can also run the OTel Engine with the Default Engine.
Modify your YAML configuration to include the &lt;code&gt;alloyengine&lt;/code&gt; extension.
This extension accepts a path to the Default Engine configuration and starts a Default Engine pipeline alongside the OTel Engine pipeline.&lt;/p&gt;
&lt;p&gt;The following example shows the 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;extensions:
  basicauth/my_auth:
    client_auth:
      username: &amp;lt;USERNAME&amp;gt;
      password: &amp;lt;PASSWORD&amp;gt;
  alloyengine:
    config:
      file: &amp;lt;ALLOY_CONFIG_PATH&amp;gt;
    flags:
      server.http.listen-addr: 0.0.0.0:12345

receivers:
  otlp:
    protocols:
      grpc: {}
      http: {}

processors:
  batch:
    timeout: 1s
    send_batch_size: 512

exporters:
  otlphttp/my_backend:
    endpoint: &amp;lt;URL&amp;gt;
    auth:
      authenticator: basicauth/my_auth

service:
  extensions: [basicauth/my_auth, alloyengine]
  pipelines:
    traces:
      receivers: [otlp]
      processors: [batch]
      exporters: [otlphttp/my_backend]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Replace the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;ALLOY_CONFIG_PATH&amp;gt;&lt;/code&gt;&lt;/em&gt;: The path to your Default Engine configuration file.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;USERNAME&amp;gt;&lt;/code&gt;&lt;/em&gt;: Your username. If you&amp;rsquo;re using Grafana Cloud, this is your Grafana Cloud instance ID.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;PASSWORD&amp;gt;&lt;/code&gt;&lt;/em&gt;: Your password. If you&amp;rsquo;re using Grafana Cloud, this is your Grafana Cloud API token.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;URL&amp;gt;&lt;/code&gt;&lt;/em&gt;: The URL to export data to. If you&amp;rsquo;re using Grafana Cloud, this is your Grafana Cloud OTLP endpoint URL.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This example adds the &lt;code&gt;alloyengine&lt;/code&gt; block in the extension declarations and enables the extension in the &lt;code&gt;service&lt;/code&gt; block.
You can then run Alloy with the exact same command as before:&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;shell&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-shell&#34;&gt;alloy otel --config=&amp;lt;CONFIG_FILE&amp;gt; [&amp;lt;FLAGS&amp;gt; ...]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This command starts both the Default Engine and OTel Engine.
The output of both engines is visible in the logs.
You can access the Default Engine UI and metrics on port &lt;code&gt;12345&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;run-with-the-opentelemetry-collector-helm-chart&#34;&gt;Run with the OpenTelemetry Collector Helm chart&lt;/h2&gt;
&lt;p&gt;Use the upstream &lt;a href=&#34;https://github.com/open-telemetry/opentelemetry-helm-charts/tree/main/charts/opentelemetry-collector&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;OpenTelemetry Collector Helm chart&lt;/a&gt; to run the OTel Engine.
This approach delivers an identical upstream collector experience.
It also ensures you get improvements, bug fixes, and security updates as they&amp;rsquo;re released.&lt;/p&gt;
&lt;p&gt;The following example Helm &lt;code&gt;values.yaml&lt;/code&gt; incorporates the same configuration seen above into a Kubernetes Deployment.&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;In this configuration, binding port &lt;code&gt;8888&lt;/code&gt; to &lt;code&gt;0.0.0.0&lt;/code&gt; makes the metrics endpoint listen on all interfaces inside the Pod.
This lets other Pods in the cluster reach it without using &lt;code&gt;kubectl port-forward&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The configuration also sets the &lt;code&gt;command.name&lt;/code&gt; key to &lt;code&gt;bin/otelcol&lt;/code&gt;.
This is the binary that runs the &lt;code&gt;alloy otel&lt;/code&gt; sub-command.
The Helm chart doesn&amp;rsquo;t expose custom commands, so this setting is necessary.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&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;image:
  repository: grafana/alloy
  tag: latest

command: 
  name: &amp;#34;bin/otelcol&amp;#34;

mode: deployment

ports:
  metrics:
    enabled: true

alternateConfig:
  extensions:
    health_check:
      endpoint: 0.0.0.0:13133 # This is necessary for the k8s liveliness check
    basicauth/my_auth:
      client_auth:
        username: &amp;lt;USERNAME&amp;gt;
        password: &amp;lt;PASSWORD&amp;gt;

  receivers:
    otlp:
      protocols:
        grpc: {}
        http: {}

  processors:
    batch:
      timeout: 1s
      send_batch_size: 512

  exporters:
    otlphttp/my_backend:
      endpoint: &amp;lt;URL&amp;gt;
      auth:
        authenticator: basicauth/my_auth

  service:
    telemetry:
      metrics:
        readers:
          - pull:
              exporter:
                prometheus:
                  host: 0.0.0.0 
                  port: 8888
    extensions: [basicauth/my_auth, health_check]
    pipelines:
      traces:
        receivers: [otlp]
        processors: [batch]
        exporters: [otlphttp/my_backend]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Replace the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;USERNAME&amp;gt;&lt;/code&gt;&lt;/em&gt;: Your username. If you&amp;rsquo;re using Grafana Cloud, this is your Grafana Cloud instance ID.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;PASSWORD&amp;gt;&lt;/code&gt;&lt;/em&gt;: Your password. If you&amp;rsquo;re using Grafana Cloud, this is your Grafana Cloud API token.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;code&gt;&amp;lt;URL&amp;gt;&lt;/code&gt;&lt;/em&gt;: The URL to export data to. If you&amp;rsquo;re using Grafana Cloud, this is your Grafana Cloud OTLP endpoint URL.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The Helm chart ships with a default OpenTelemetry Collector configuration in the &lt;code&gt;config&lt;/code&gt; field.
The upstream Helm chart &lt;a href=&#34;https://opentelemetry.io/docs/platforms/kubernetes/helm/collector/#configuration&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;documentation&lt;/a&gt; describes this field.
If you want to completely override that default configuration, use the &lt;code&gt;alternateConfig&lt;/code&gt; field.
In the example above, the &lt;code&gt;alternateConfig&lt;/code&gt; field ensures the configuration matches the other examples in this document and doesn&amp;rsquo;t inherit any of the chart&amp;rsquo;s defaults.
Alternatively, you can omit both &lt;code&gt;config&lt;/code&gt; and &lt;code&gt;alternateConfig&lt;/code&gt; to use the default configuration as-is.
You can also provide your own &lt;code&gt;config&lt;/code&gt; block that merges with the chart&amp;rsquo;s default configuration.&lt;/p&gt;
&lt;p&gt;Refer to the &lt;a href=&#34;https://opentelemetry.io/docs/platforms/kubernetes/helm/collector/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;upstream documentation&lt;/a&gt; for more information about how to configure the helm chart to work for your use case.&lt;/p&gt;
&lt;h2 id=&#34;run-with-service-installation&#34;&gt;Run with service installation&lt;/h2&gt;
&lt;p&gt;Service installation support for systemd, launchd, and similar systems isn&amp;rsquo;t included in the initial experimental release.
Service installers work seamlessly with the OTel Engine as the feature matures.
In the meantime, use the CLI or Helm options for testing.&lt;/p&gt;
&lt;h2 id=&#34;considerations&#34;&gt;Considerations&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Storage configuration&lt;/strong&gt;: The Default Engine accepts the &lt;code&gt;--storage.path&lt;/code&gt; flag to set a base directory for components to store data on disk.
The OTel Engine uses the &lt;code&gt;filestorage&lt;/code&gt; extension instead of a CLI flag.
Refer to the &lt;a href=&#34;https://opentelemetry.io/docs/collector/resiliency/#persistent-storage-write-ahead-log---wal&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;upstream documentation&lt;/a&gt; for more information.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Server ports&lt;/strong&gt;: The Default Engine exposes its HTTP server on port &lt;code&gt;12345&lt;/code&gt;.
The OTel Engine exposes its HTTP server on port &lt;code&gt;8888&lt;/code&gt;.
The OTel Engine HTTP server doesn&amp;rsquo;t expose a UI, support bundles, or reload endpoint functionality like the Default Engine does.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fleet management&lt;/strong&gt;: &lt;a href=&#34;/blog/opentelemetry-and-grafana-labs-whats-new-and-whats-next-in-2026/#fleet-management&#34;&gt;Grafana Fleet Management&lt;/a&gt; doesn&amp;rsquo;t support the OTel Engine yet.
You must define and manage the input configuration manually.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next steps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Refer to &lt;a href=&#34;../../introduction/otel_alloy/&#34;&gt;OpenTelemetry in Alloy&lt;/a&gt; for information about the included components.&lt;/li&gt;
&lt;li&gt;Refer to the &lt;a href=&#34;../../reference/cli/otel/&#34;&gt;OTel CLI reference&lt;/a&gt; for more information about the OTel CLI.&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="the-alloy-opentelemetry-engine">The Alloy OpenTelemetry Engine&lt;/h1>
&lt;p>You can run the OTel Engine using the CLI, Helm chart, or service installation.&lt;/p>
&lt;h2 id="prerequisites">Prerequisites&lt;/h2>
&lt;p>There are no additional prerequisites.
The tools needed to run the OTel Engine are shipped within Alloy.&lt;/p></description></item><item><title>Deploy Grafana Alloy</title><link>https://grafana.com/docs/alloy/v1.15/set-up/deploy/</link><pubDate>Mon, 30 Mar 2026 15:47:22 +0000</pubDate><guid>https://grafana.com/docs/alloy/v1.15/set-up/deploy/</guid><content><![CDATA[&lt;h1 id=&#34;deploy-grafana-alloy&#34;&gt;Deploy Grafana Alloy&lt;/h1&gt;
&lt;p&gt;Alloy is a flexible, vendor-neutral telemetry collector.
This flexibility means that Alloy doesn&amp;rsquo;t enforce a specific deployment topology but can work in multiple scenarios.&lt;/p&gt;
&lt;p&gt;This page lists common topologies used for Alloy deployments, when to consider using each topology, issues you may run into, and scaling considerations.&lt;/p&gt;
&lt;h2 id=&#34;as-a-centralized-collection-service&#34;&gt;As a centralized collection service&lt;/h2&gt;
&lt;p&gt;Deploying Alloy as a centralized service is recommended for collecting application telemetry.
This topology allows you to use a smaller number of collectors to coordinate service discovery, collection, and remote writing.&lt;/p&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p &#34;
    style=&#34;max-width: 2400px;&#34;
    itemprop=&#34;associatedMedia&#34;
    itemscope=&#34;&#34;
    itemtype=&#34;http://schema.org/ImageObject&#34;
  &gt;&lt;a
        class=&#34;lightbox-link&#34;
        href=&#34;/media/docs/alloy/collection-diagram-alloy.png&#34;
        itemprop=&#34;contentUrl&#34;
      &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
          class=&#34;lazyload &#34;
          data-src=&#34;/media/docs/alloy/collection-diagram-alloy.png&#34;data-srcset=&#34;/media/docs/alloy/collection-diagram-alloy.png?w=320 320w, /media/docs/alloy/collection-diagram-alloy.png?w=550 550w, /media/docs/alloy/collection-diagram-alloy.png?w=750 750w, /media/docs/alloy/collection-diagram-alloy.png?w=900 900w, /media/docs/alloy/collection-diagram-alloy.png?w=1040 1040w, /media/docs/alloy/collection-diagram-alloy.png?w=1240 1240w, /media/docs/alloy/collection-diagram-alloy.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;Centralized collection with Alloy&#34;width=&#34;2400&#34;height=&#34;1519&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/media/docs/alloy/collection-diagram-alloy.png&#34;
            alt=&#34;Centralized collection with Alloy&#34;width=&#34;2400&#34;height=&#34;1519&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;Using this topology requires deploying Alloy on separate infrastructure, and making sure that they can discover and reach these applications over the network.
The main predictor for the size of an Alloy deployment is the number of active Prometheus metrics series it&amp;rsquo;s scraping. A rule of thumb is approximately 10 KB of memory for each series.
We recommend you start looking towards horizontal scaling around the 1 million active series mark.&lt;/p&gt;
&lt;h3 id=&#34;use-kubernetes-statefulsets&#34;&gt;Use Kubernetes StatefulSets&lt;/h3&gt;
&lt;p&gt;Deploying Alloy as a StatefulSet is the recommended option for Prometheus metrics collection.
The persistent Pod identifiers make it possible to consistently match volumes with pods so that you can use them for the WAL directory.&lt;/p&gt;
&lt;p&gt;You can also use a Kubernetes Deployment in cases where persistent storage isn&amp;rsquo;t required, such as a traces-only pipeline.&lt;/p&gt;
&lt;h3 id=&#34;pros&#34;&gt;Pros&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Straightforward scaling using &lt;a href=&#34;../../configure/clustering/&#34;&gt;clustering&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Minimizes the &amp;ldquo;noisy neighbor&amp;rdquo; effect&lt;/li&gt;
&lt;li&gt;Easy to meta-monitor&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;cons&#34;&gt;Cons&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Requires running on separate infrastructure&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;use-for&#34;&gt;Use for&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Scalable telemetry collection&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;dont-use-for&#34;&gt;Don&amp;rsquo;t use for&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Host-level metrics and logs&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;as-a-host-daemon&#34;&gt;As a host daemon&lt;/h2&gt;
&lt;p&gt;Deploying one Alloy instance per machine is required for collecting machine-level Prometheus metrics and logs, such as node_exporter hardware and network metrics or journald system logs.&lt;/p&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p &#34;
    style=&#34;max-width: 1060px;&#34;
    itemprop=&#34;associatedMedia&#34;
    itemscope=&#34;&#34;
    itemtype=&#34;http://schema.org/ImageObject&#34;
  &gt;&lt;a
        class=&#34;lightbox-link&#34;
        href=&#34;/media/docs/alloy/host-diagram-alloy.png&#34;
        itemprop=&#34;contentUrl&#34;
      &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
          class=&#34;lazyload &#34;
          data-src=&#34;/media/docs/alloy/host-diagram-alloy.png&#34;data-srcset=&#34;/media/docs/alloy/host-diagram-alloy.png?w=320 320w, /media/docs/alloy/host-diagram-alloy.png?w=550 550w, /media/docs/alloy/host-diagram-alloy.png?w=750 750w, /media/docs/alloy/host-diagram-alloy.png?w=900 900w, /media/docs/alloy/host-diagram-alloy.png?w=1040 1040w, /media/docs/alloy/host-diagram-alloy.png?w=1240 1240w, /media/docs/alloy/host-diagram-alloy.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;Alloy as a host daemon&#34;width=&#34;1060&#34;height=&#34;1120&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/media/docs/alloy/host-diagram-alloy.png&#34;
            alt=&#34;Alloy as a host daemon&#34;width=&#34;1060&#34;height=&#34;1120&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;Each Alloy instance requires you to open an outgoing connection for each remote endpoint it&amp;rsquo;s shipping data to.
This can lead to NAT port exhaustion on the egress infrastructure.
Each egress IP can support up to (65535 - 1024 = 64511) outgoing connections on different ports.
So, if all Alloys are sending Prometheus metrics and log data, an egress IP can support up to 32,255 collectors.&lt;/p&gt;
&lt;h3 id=&#34;use-kubernetes-daemonsets&#34;&gt;Use Kubernetes DaemonSets&lt;/h3&gt;
&lt;p&gt;The simplest use case of the host daemon topology is a Kubernetes DaemonSet, and it&amp;rsquo;s required for node-level observability (for example cAdvisor metrics) and collecting Pod logs.&lt;/p&gt;
&lt;h3 id=&#34;pros-1&#34;&gt;Pros&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Doesn&amp;rsquo;t require running on separate infrastructure&lt;/li&gt;
&lt;li&gt;Typically leads to smaller-sized collectors&lt;/li&gt;
&lt;li&gt;Lower network latency to instrumented applications&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;cons-1&#34;&gt;Cons&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Requires planning a process for provisioning Alloy on new machines, as well as keeping configuration up to date to avoid configuration drift&lt;/li&gt;
&lt;li&gt;Not possible to scale independently when using Kubernetes DaemonSets&lt;/li&gt;
&lt;li&gt;Scaling the topology can strain external APIs (like service discovery) and network infrastructure (like firewalls, proxy servers, and egress points)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;use-for-1&#34;&gt;Use for&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Collecting machine-level Prometheus metrics and logs (for example, node_exporter hardware metrics, Kubernetes Pod logs)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;dont-use-for-1&#34;&gt;Don&amp;rsquo;t use for&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Scenarios where Alloy grows so large it can become a noisy neighbor&lt;/li&gt;
&lt;li&gt;Collecting an unpredictable amount of telemetry&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;as-a-container-sidecar&#34;&gt;As a container sidecar&lt;/h2&gt;
&lt;p&gt;Deploying Alloy as a container sidecar is only recommended for short-lived applications or specialized Alloy deployments.&lt;/p&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p &#34;
    style=&#34;max-width: 1060px;&#34;
    itemprop=&#34;associatedMedia&#34;
    itemscope=&#34;&#34;
    itemtype=&#34;http://schema.org/ImageObject&#34;
  &gt;&lt;a
        class=&#34;lightbox-link&#34;
        href=&#34;/media/docs/alloy/sidecar-diagram-alloy.png&#34;
        itemprop=&#34;contentUrl&#34;
      &gt;&lt;div class=&#34;img-wrapper w-100p h-auto&#34;&gt;&lt;img
          class=&#34;lazyload &#34;
          data-src=&#34;/media/docs/alloy/sidecar-diagram-alloy.png&#34;data-srcset=&#34;/media/docs/alloy/sidecar-diagram-alloy.png?w=320 320w, /media/docs/alloy/sidecar-diagram-alloy.png?w=550 550w, /media/docs/alloy/sidecar-diagram-alloy.png?w=750 750w, /media/docs/alloy/sidecar-diagram-alloy.png?w=900 900w, /media/docs/alloy/sidecar-diagram-alloy.png?w=1040 1040w, /media/docs/alloy/sidecar-diagram-alloy.png?w=1240 1240w, /media/docs/alloy/sidecar-diagram-alloy.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;Alloy as a container sidecar&#34;width=&#34;1060&#34;height=&#34;1100&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/media/docs/alloy/sidecar-diagram-alloy.png&#34;
            alt=&#34;Alloy as a container sidecar&#34;width=&#34;1060&#34;height=&#34;1100&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;h3 id=&#34;use-kubernetes-pod-sidecars&#34;&gt;Use Kubernetes Pod sidecars&lt;/h3&gt;
&lt;p&gt;In a Kubernetes environment, the sidecar model consists of deploying Alloy as an extra container on the Pod.
The Pod&amp;rsquo;s controller, network configuration, enabled capabilities, and available resources are shared between the actual application and the sidecar Alloy.&lt;/p&gt;
&lt;h3 id=&#34;pros-2&#34;&gt;Pros&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Doesn&amp;rsquo;t require running on separate infrastructure&lt;/li&gt;
&lt;li&gt;Straightforward networking with partner applications&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;cons-2&#34;&gt;Cons&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Doesn&amp;rsquo;t scale separately&lt;/li&gt;
&lt;li&gt;Makes resource consumption harder to monitor and predict&lt;/li&gt;
&lt;li&gt;Each Alloy instance doesn&amp;rsquo;t have a life cycle of its own, making it harder to do things like recovering from network outages&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;use-for-2&#34;&gt;Use for&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Serverless services&lt;/li&gt;
&lt;li&gt;Job/batch applications that work with a push model&lt;/li&gt;
&lt;li&gt;Air-gapped applications that can&amp;rsquo;t be otherwise reached over the network&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;dont-use-for-2&#34;&gt;Don&amp;rsquo;t use for&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Long-lived applications&lt;/li&gt;
&lt;li&gt;Scenarios where the Alloy deployment size grows so large it can become a noisy neighbor&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;process-different-types-of-telemetry-in-different-alloy-instances&#34;&gt;Process different types of telemetry in different Alloy instances&lt;/h2&gt;
&lt;p&gt;If the load on Alloy is small, you can process all necessary telemetry signals in the same Alloy process.
For example, a single Alloy deployment can process all of the incoming metrics, logs, traces, and profiles.&lt;/p&gt;
&lt;p&gt;However, if the load on Alloy is big, it may be beneficial to process different telemetry signals in different deployments of Alloy.&lt;/p&gt;
&lt;p&gt;This provides better stability due to the isolation between processes.
For example, an overloaded Alloy instance processing traces won&amp;rsquo;t impact an Alloy instance processing metrics.
Different types of signal collection require different methods for scaling:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;ldquo;Pull&amp;rdquo; components such as &lt;code&gt;prometheus.scrape&lt;/code&gt; and &lt;code&gt;pyroscope.scrape&lt;/code&gt; are scaled using hashmod sharing or clustering.&lt;/li&gt;
&lt;li&gt;&amp;ldquo;Push&amp;rdquo; components such as &lt;code&gt;otelcol.receiver.otlp&lt;/code&gt; are scaled by placing a load balancer in front of the components.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;traces&#34;&gt;Traces&lt;/h3&gt;
&lt;p&gt;Scaling Alloy instances for tracing is very similar to &lt;a href=&#34;https://opentelemetry.io/docs/collector/scaling/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;scaling OpenTelemetry Collector&lt;/a&gt; instances.
This similarity is because most Alloy components used for tracing are based on components from the OTel Collector.&lt;/p&gt;
&lt;h4 id=&#34;when-to-scale&#34;&gt;When to scale&lt;/h4&gt;
&lt;p&gt;To decide whether scaling is necessary, check metrics such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;otelcol_receiver_refused_spans_total&lt;/code&gt; from receivers such as &lt;code&gt;otelcol.receiver.otlp&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;otelcol_receiver_refused_spans_total&lt;/code&gt; from processors such as &lt;code&gt;otelcol.processor.batch&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;otelcol_exporter_send_failed_spans_total&lt;/code&gt; from exporters such as &lt;code&gt;otelcol.exporter.otlp&lt;/code&gt; and &lt;code&gt;otelcol.exporter.loadbalancing&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;stateful-and-stateless-components&#34;&gt;Stateful and stateless components&lt;/h4&gt;
&lt;p&gt;In the context of tracing, a &amp;ldquo;stateful component&amp;rdquo; is a component that needs to aggregate certain spans to work correctly.
A &amp;ldquo;stateless Alloy&amp;rdquo; is an Alloy instance which doesn&amp;rsquo;t contain stateful components.&lt;/p&gt;
&lt;p&gt;Scaling stateful Alloy instances is more difficult, because spans must be forwarded to a specific Alloy instance according to a span property such as trace ID or a &lt;code&gt;service.name&lt;/code&gt; attribute.
You can forward spans with &lt;code&gt;otelcol.exporter.loadbalancing&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Examples of stateful components:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;otelcol.processor.tail_sampling&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;otelcol.connector.spanmetrics&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;otelcol.connector.servicegraph&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;!-- TODO: link to the otelcol.exporter.loadbalancing docs for more info --&gt;
&lt;p&gt;A &amp;ldquo;stateless component&amp;rdquo; doesn&amp;rsquo;t need to aggregate specific spans to work correctly.
It can work correctly even if it only has some of the spans of a trace.&lt;/p&gt;
&lt;p&gt;A stateless Alloy instance can be scaled without using &lt;code&gt;otelcol.exporter.loadbalancing&lt;/code&gt;.
For example, you could use an off-the-shelf load balancer to do a round-robin load balancing.&lt;/p&gt;
&lt;p&gt;Examples of stateless components:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;otelcol.processor.probabilistic_sampler&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;otelcol.processor.transform&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;otelcol.processor.attributes&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;otelcol.processor.span&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;configure-autoscaling&#34;&gt;Configure autoscaling&lt;/h2&gt;
&lt;p&gt;You can configure Alloy to automatically scale based on resource utilization using a Kubernetes Horizontal Pod Autoscaler (HPA).&lt;/p&gt;
&lt;p&gt;The following example shows how to configure autoscaling using the &lt;a href=&#34;https://github.com/grafana/k8s-monitoring-helm&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Kubernetes Monitoring Helm chart&lt;/a&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;cluster:
  name: autoscaling-example-cluster

destinations:
  - name: prometheus
    type: prometheus
    url: http://prometheus.prometheus.svc:9090/api/v1/write

clusterMetrics:
  enabled: true

alloy-metrics:
  enabled: true
  alloy:
    resources:
      requests:
        cpu: &amp;#34;1m&amp;#34;
        memory: &amp;#34;500Mi&amp;#34;
  controller:
    autoscaling:
      enabled: true
      minReplicas: 2
      maxReplicas: 10
      targetCPUUtilizationPercentage: 0
      targetMemoryUtilizationPercentage: 80&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This configuration:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sets minimum and maximum replica counts. In this example, the range is 2 to 10.&lt;/li&gt;
&lt;li&gt;Targets 80% memory utilization as the scaling threshold.&lt;/li&gt;
&lt;li&gt;Disables CPU-based scaling by setting &lt;code&gt;targetCPUUtilizationPercentage&lt;/code&gt; to 0.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Memory-based scaling is typically more effective for Alloy because memory usage correlates more directly with the number of active series.&lt;/p&gt;
]]></content><description>&lt;h1 id="deploy-grafana-alloy">Deploy Grafana Alloy&lt;/h1>
&lt;p>Alloy is a flexible, vendor-neutral telemetry collector.
This flexibility means that Alloy doesn&amp;rsquo;t enforce a specific deployment topology but can work in multiple scenarios.&lt;/p></description></item><item><title>Estimate Grafana Alloy resource usage</title><link>https://grafana.com/docs/alloy/v1.15/set-up/estimate-resource-usage/</link><pubDate>Mon, 30 Mar 2026 15:47:22 +0000</pubDate><guid>https://grafana.com/docs/alloy/v1.15/set-up/estimate-resource-usage/</guid><content><![CDATA[&lt;h1 id=&#34;estimate-grafana-alloy-resource-usage&#34;&gt;Estimate Grafana Alloy resource usage&lt;/h1&gt;
&lt;p&gt;This page provides guidance for expected resource usage of Alloy for each telemetry type, based on operational experience of some of the Alloy maintainers.&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 resource usage depends on the workload, hardware, and the configuration used.
The information on this page is a good starting point for most users, but your actual usage may be different.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h2 id=&#34;prometheus-metrics&#34;&gt;Prometheus metrics&lt;/h2&gt;
&lt;p&gt;The Prometheus metrics resource usage depends mainly on the number of active series that need to be scraped and the scrape interval.&lt;/p&gt;
&lt;p&gt;As a rule of thumb, &lt;strong&gt;per each 1 million active series&lt;/strong&gt; and with the default scrape interval, you can expect to use approximately:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;0.4 CPU cores&lt;/li&gt;
&lt;li&gt;11 GiB of memory&lt;/li&gt;
&lt;li&gt;1.5 MiB/s of total network bandwidth, send and receive&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These recommendations are based on deployments that use &lt;a href=&#34;../../get-started/clustering/&#34;&gt;clustering&lt;/a&gt;, but they broadly apply to other deployment modes.
Refer to &lt;a href=&#34;../../set-up/deploy/&#34;&gt;Deploy Grafana Alloy&lt;/a&gt; for more information on how to deploy Alloy.&lt;/p&gt;
&lt;h2 id=&#34;loki-logs&#34;&gt;Loki logs&lt;/h2&gt;
&lt;p&gt;Loki logs resource usage depends mainly on the volume of logs ingested.&lt;/p&gt;
&lt;p&gt;As a rule of thumb, &lt;strong&gt;per each 1 MiB/second of logs ingested&lt;/strong&gt;, you can expect to use approximately:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 CPU core&lt;/li&gt;
&lt;li&gt;120 MiB of memory&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These recommendations are based on Kubernetes DaemonSet deployments on clusters with relatively small number of nodes and high logs volume on each.
The resource usage can be higher per each 1 MiB/second of logs if you have a large number of small nodes due to the constant overhead of running the Alloy on each node.&lt;/p&gt;
&lt;p&gt;Additionally, factors such as number of labels, number of files and average log line length may all play a role in the resource usage.&lt;/p&gt;
&lt;h2 id=&#34;pyroscope-profiles&#34;&gt;Pyroscope profiles&lt;/h2&gt;
&lt;p&gt;Pyroscope profiles resource usage depends mainly on the volume of profiles.&lt;/p&gt;
&lt;p&gt;As a rule of thumb, &lt;strong&gt;per each 100 profiles/second&lt;/strong&gt;, you can expect to use approximately:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 CPU core&lt;/li&gt;
&lt;li&gt;10 GiB of memory&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Factors such as size of each profile and frequency of fetching them also play a role in the overall resource usage.&lt;/p&gt;
]]></content><description>&lt;h1 id="estimate-grafana-alloy-resource-usage">Estimate Grafana Alloy resource usage&lt;/h1>
&lt;p>This page provides guidance for expected resource usage of Alloy for each telemetry type, based on operational experience of some of the Alloy maintainers.&lt;/p></description></item></channel></rss>