<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Introduction to Grafana Alloy on Grafana Labs</title><link>https://grafana.com/docs/alloy/v1.19/introduction/</link><description>Recent content in Introduction to Grafana Alloy on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/alloy/v1.19/introduction/index.xml" rel="self" type="application/rss+xml"/><item><title>Why Grafana Alloy</title><link>https://grafana.com/docs/alloy/v1.19/introduction/why-alloy/</link><pubDate>Mon, 24 Aug 2026 14:24:42 +0000</pubDate><guid>https://grafana.com/docs/alloy/v1.19/introduction/why-alloy/</guid><content><![CDATA[&lt;h1 id=&#34;why-grafana-alloy&#34;&gt;Why Grafana Alloy&lt;/h1&gt;
&lt;p&gt;Grafana Alloy simplifies telemetry collection by consolidating multiple collectors into one solution.&lt;/p&gt;
&lt;h2 id=&#34;the-telemetry-collection-challenge&#34;&gt;The telemetry collection challenge&lt;/h2&gt;
&lt;p&gt;Telemetry collection in production environments can quickly become complex as different teams develop different needs over time.&lt;/p&gt;
&lt;p&gt;Consider a common scenario.
You start with infrastructure observability, using Prometheus to scrape metrics from Node Exporter.
Your metrics flow to a Prometheus database, and you visualize them in Grafana dashboards.
This works well for monitoring infrastructure.&lt;/p&gt;
&lt;p&gt;Later, you want to add application observability and start analyzing distributed traces.
Prometheus doesn&amp;rsquo;t support traces, so you add the OpenTelemetry Collector.
Now you&amp;rsquo;re running two different collectors, each with its own configuration syntax, deployment requirements, and operational overhead.&lt;/p&gt;
&lt;p&gt;As your observability needs grow, you might add a separate collector for logs, another tool for continuous profiling, and different agents for different environments.
Before long, you&amp;rsquo;re managing multiple collectors, learning different configuration languages, troubleshooting various failure modes, and dealing with increased memory and CPU overhead.&lt;/p&gt;
&lt;p&gt;Alloy addresses these challenges by handling all signal types in a single deployment with one configuration language.
You learn one tool, deploy one collector, and maintain one system.&lt;/p&gt;
&lt;h2 id=&#34;when-to-use-alloy&#34;&gt;When to use Alloy&lt;/h2&gt;
&lt;p&gt;Alloy excels in several scenarios.
The following sections help you identify whether it fits your needs.&lt;/p&gt;
&lt;h3 id=&#34;you-need-multiple-signal-types&#34;&gt;You need multiple signal types&lt;/h3&gt;
&lt;p&gt;Alloy natively supports metrics from both Prometheus and OpenTelemetry sources, application and system logs, distributed traces using OpenTelemetry, and continuous profiling data.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re running separate collectors for metrics and traces, or planning to add log collection to your metrics pipeline, Alloy lets you consolidate into a single solution.&lt;/p&gt;
&lt;p&gt;For example, if you monitor infrastructure with Prometheus but want to add distributed tracing for your microservices, you can use Alloy to handle both with one collector instead of deploying multiple collectors.&lt;/p&gt;
&lt;h3 id=&#34;you-want-to-reduce-collector-complexity&#34;&gt;You want to reduce collector complexity&lt;/h3&gt;
&lt;p&gt;Running multiple collectors creates operational overhead.
You have to learn different configuration languages, manage separate deployments and upgrades, troubleshoot different failure modes, and monitor multiple systems—all while consuming more resources.&lt;/p&gt;
&lt;p&gt;Alloy consolidates all of this.
You learn one configuration language, manage one deployment, and use a single built-in UI for debugging.
This unified approach reduces both complexity and resource consumption.&lt;/p&gt;
&lt;p&gt;For example, if your team runs Prometheus for metrics, Fluentd for logs, and Jaeger agents for traces, Alloy can replace all three and simplify your telemetry architecture.&lt;/p&gt;
&lt;h3 id=&#34;you-need-both-prometheus-and-opentelemetry&#34;&gt;You need both Prometheus and OpenTelemetry&lt;/h3&gt;
&lt;p&gt;Alloy works with both ecosystems simultaneously.
It includes native Prometheus remote write support, full OpenTelemetry protocol support, Prometheus service discovery mechanisms, OpenTelemetry instrumentation compatibility, and the ability to convert between formats.&lt;/p&gt;
&lt;p&gt;You don&amp;rsquo;t have to choose between Prometheus and OpenTelemetry.
If you have Prometheus deployments and instrumentation but your applications use OpenTelemetry, Alloy collects from both while you standardize on one collector.&lt;/p&gt;
&lt;h3 id=&#34;you-value-vendor-neutrality&#34;&gt;You value vendor neutrality&lt;/h3&gt;
&lt;p&gt;Alloy supports sending data to Grafana Cloud, a self-managed Grafana stack with Loki, Mimir, Tempo, and Pyroscope, any Prometheus-compatible database, any OpenTelemetry-compatible backend, or multiple destinations simultaneously.&lt;/p&gt;
&lt;p&gt;This flexibility means you&amp;rsquo;re not locked into a single vendor or backend.
You can send data to Grafana Cloud for some telemetry and self-managed systems for others, or change backends without changing your collector.&lt;/p&gt;
&lt;p&gt;For example, if you want to send metrics to Grafana Cloud but keep logs on-premises for compliance reasons, Alloy can send metrics to the cloud and logs to your local Loki instance from the same configuration.&lt;/p&gt;
&lt;h3 id=&#34;your-observability-needs-are-growing&#34;&gt;Your observability needs are growing&lt;/h3&gt;
&lt;p&gt;Alloy provides features for scaling, including clustering to distribute workload across multiple instances for high availability and horizontal scaling, remote configuration to manage fleet-wide configurations from a central location, and automatic workload distribution across cluster members.&lt;/p&gt;
&lt;p&gt;Start with a single Alloy instance and scale to clusters as your needs grow, without changing your approach.&lt;/p&gt;
&lt;h3 id=&#34;youre-running-on-kubernetes&#34;&gt;You&amp;rsquo;re running on Kubernetes&lt;/h3&gt;
&lt;p&gt;Alloy offers Kubernetes-native features including first-class support for discovering Kubernetes resources, components that interact with Kubernetes APIs directly, native understanding of pods, services, and custom resources, and support for DaemonSet and Deployment patterns.&lt;/p&gt;
&lt;p&gt;No separate Kubernetes operator is required.
The Kubernetes discovery components automatically find and scrape pods as they start and stop, without additional configuration.&lt;/p&gt;
&lt;h3 id=&#34;you-want-programmable-pipelines&#34;&gt;You want programmable pipelines&lt;/h3&gt;
&lt;p&gt;The Alloy configuration language lets you create conditional logic in your pipelines, reference data from one component in another, build reusable pipeline modules, transform and filter data with built-in functions, and respond dynamically to changing conditions.&lt;/p&gt;
&lt;p&gt;If you need more than basic &amp;ldquo;collect and forward&amp;rdquo; functionality, the programmable approach provides the flexibility you need.
Common scenarios include routing high-priority metrics to one backend while sampling lower-priority data, extracting useful labels from high-cardinality fields to manage storage costs, standardizing attribute names when different teams use inconsistent conventions, and redacting sensitive tokens or credentials from logs before they reach storage.&lt;/p&gt;
&lt;h3 id=&#34;you-want-to-share-pipelines-across-teams&#34;&gt;You want to share pipelines across teams&lt;/h3&gt;
&lt;p&gt;The module system allows you to create custom components that combine multiple steps, package and share pipelines with your team, use community-contributed modules, and maintain consistent collection patterns across services.&lt;/p&gt;
&lt;p&gt;Your platform team can create a standard monitoring module that application teams import and configure with their specific settings, without understanding the underlying complexity.&lt;/p&gt;
&lt;h2 id=&#34;what-alloy-replaces&#34;&gt;What Alloy replaces&lt;/h2&gt;
&lt;p&gt;Alloy can consolidate multiple collectors.
Replace Prometheus Agent to gain the same functionality plus support for logs, traces, and profiles.
Replace the OpenTelemetry Collector to add native Prometheus support alongside OTLP.
Replace specialized log collectors like Promtail, Fluentd, or Filebeat with a unified collection approach.&lt;/p&gt;
&lt;p&gt;You can also run Alloy alongside collectors during migration to transition gradually without disrupting your observability.
Refer to the &lt;a href=&#34;../../set-up/migrate/&#34;&gt;migration guides&lt;/a&gt; for step-by-step instructions.&lt;/p&gt;
&lt;h2 id=&#34;when-alloy-might-not-be-the-right-choice&#34;&gt;When Alloy might not be the right choice&lt;/h2&gt;
&lt;p&gt;Alloy is powerful and flexible, but it&amp;rsquo;s not always the best fit.&lt;/p&gt;
&lt;p&gt;Consider alternatives if you only need basic Prometheus metrics scraping with no additional features, as Prometheus Agent might be simpler.
If you&amp;rsquo;re deeply integrated with a specific collector&amp;rsquo;s ecosystem and don&amp;rsquo;t need multi-signal support, staying with your current solution may make more sense.
If you have very specific requirements that available components don&amp;rsquo;t address, evaluate whether the benefits outweigh the effort of migration.&lt;/p&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next steps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Learn &lt;a href=&#34;../how-alloy-works/&#34;&gt;how Alloy works&lt;/a&gt; to understand the architecture&lt;/li&gt;
&lt;li&gt;Review &lt;a href=&#34;../requirements/&#34;&gt;requirements and expectations&lt;/a&gt; to understand deployment considerations&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../set-up/install/&#34;&gt;Install&lt;/a&gt; Alloy to get started&lt;/li&gt;
&lt;li&gt;Follow a &lt;a href=&#34;../../tutorials/&#34;&gt;tutorial&lt;/a&gt; for hands-on experience&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="why-grafana-alloy">Why Grafana Alloy&lt;/h1>
&lt;p>Grafana Alloy simplifies telemetry collection by consolidating multiple collectors into one solution.&lt;/p>
&lt;h2 id="the-telemetry-collection-challenge">The telemetry collection challenge&lt;/h2>
&lt;p>Telemetry collection in production environments can quickly become complex as different teams develop different needs over time.&lt;/p></description></item><item><title>How Grafana Alloy works</title><link>https://grafana.com/docs/alloy/v1.19/introduction/how-alloy-works/</link><pubDate>Mon, 24 Aug 2026 14:24:42 +0000</pubDate><guid>https://grafana.com/docs/alloy/v1.19/introduction/how-alloy-works/</guid><content><![CDATA[&lt;h1 id=&#34;how-grafana-alloy-works&#34;&gt;How Grafana Alloy works&lt;/h1&gt;
&lt;p&gt;Understanding the architecture and design of Alloy helps you use it effectively.&lt;/p&gt;
&lt;h2 id=&#34;where-alloy-fits&#34;&gt;Where Alloy fits&lt;/h2&gt;
&lt;p&gt;A typical observability setup has three layers: data sources that generate telemetry, collection tools that gather and process it, and storage backends with visualization frontends for querying and exploring data.&lt;/p&gt;
&lt;p&gt;Alloy operates in the collection layer, sitting between your data sources and your storage backends.
It acts as the bridge between them, performing three main functions in your telemetry pipeline.&lt;/p&gt;
&lt;h3 id=&#34;collect-telemetry-data&#34;&gt;Collect telemetry data&lt;/h3&gt;
&lt;p&gt;Alloy gathers telemetry from any source in your infrastructure.
You can configure it to scrape Prometheus endpoints for metrics or set up receivers to accept data pushed via the OpenTelemetry protocol.
It tails log files and reads from system outputs to capture application and infrastructure logs.
Service discovery automatically finds resources in Kubernetes, Docker, or cloud environments without requiring static configuration.
You can also integrate with databases, message queues, and other systems to capture telemetry from specialized sources.&lt;/p&gt;
&lt;h3 id=&#34;transform-and-process-data&#34;&gt;Transform and process data&lt;/h3&gt;
&lt;p&gt;Processing telemetry before sending it to backends optimizes costs and improves data quality.
Create filters to drop unwanted data or redact sensitive information like tokens and credentials from logs before they reach storage.
Add labels, metadata, or contextual information to enrich your data—for example, extract a cloud provider name from instance IDs to create useful aggregation labels.
Standardize attribute names across services when different teams use inconsistent naming conventions.
Implement sampling strategies to reduce high-volume data while preserving the signal you need for troubleshooting.
Convert between formats, such as transforming Prometheus metrics to OpenTelemetry format, to ensure compatibility with your backends.
Define routing rules to send different types of data to different destinations based on your operational requirements.&lt;/p&gt;
&lt;h3 id=&#34;send-to-backends&#34;&gt;Send to backends&lt;/h3&gt;
&lt;p&gt;Alloy delivers processed telemetry to any storage system you choose.
Send data to Grafana Cloud for managed observability, or export to your self-managed Grafana stack components.
Connect to any Prometheus-compatible database for metrics and any OpenTelemetry-compatible backend for all signal types.
Write to multiple destinations simultaneously, sending the same data to different systems or routing different data types to specialized backends.&lt;/p&gt;
&lt;h2 id=&#34;component-based-architecture&#34;&gt;Component-based architecture&lt;/h2&gt;
&lt;p&gt;Alloy uses modular &lt;a href=&#34;../../get-started/components/&#34;&gt;components&lt;/a&gt; that work like building blocks.
Each component performs a specific task, such as collecting metrics from Prometheus endpoints, receiving OpenTelemetry data, transforming and filtering telemetry, or sending data to backends.&lt;/p&gt;
&lt;p&gt;You connect these components together to &lt;a href=&#34;../../get-started/components/build-pipelines/&#34;&gt;build pipelines&lt;/a&gt; that match your exact requirements.
This modular approach makes configurations easier to understand, test, and maintain.&lt;/p&gt;
&lt;h2 id=&#34;programmable-pipelines&#34;&gt;Programmable pipelines&lt;/h2&gt;
&lt;p&gt;Alloy uses a rich, &lt;a href=&#34;../../get-started/syntax/&#34;&gt;expression-based configuration language&lt;/a&gt; that lets you reference data from one component in another, create dynamic configurations that respond to changing conditions, build reusable pipelines you can share across teams, and use built-in &lt;a href=&#34;../../get-started/expressions/&#34;&gt;functions&lt;/a&gt; to transform and filter data.&lt;/p&gt;
&lt;h2 id=&#34;custom-and-shareable-pipelines&#34;&gt;Custom and shareable pipelines&lt;/h2&gt;
&lt;p&gt;You can create &lt;a href=&#34;../../get-started/components/custom-components/&#34;&gt;custom components&lt;/a&gt; that combine multiple components into a single, reusable unit.
Share these custom components with your team or the community through the &lt;a href=&#34;../../get-started/modules/&#34;&gt;module system&lt;/a&gt;.
Use pre-built modules from the community or create your own.&lt;/p&gt;
&lt;h2 id=&#34;enterprise-ready-features&#34;&gt;Enterprise-ready features&lt;/h2&gt;
&lt;p&gt;As your systems grow more complex, Alloy scales with you.
&lt;a href=&#34;../../get-started/clustering/&#34;&gt;Clustering&lt;/a&gt; lets you configure instances to form a cluster for automatic workload distribution and high availability.
Centralized configuration retrieves settings from remote servers for fleet management.
Kubernetes-native capabilities let you interact with Kubernetes resources directly without learning separate operators.&lt;/p&gt;
&lt;h2 id=&#34;built-in-debugging-tools&#34;&gt;Built-in debugging tools&lt;/h2&gt;
&lt;p&gt;Alloy includes a &lt;a href=&#34;../../troubleshoot/debug/&#34;&gt;built-in user interface&lt;/a&gt; that helps you visualize your component pipelines, inspect component states and outputs, troubleshoot configuration issues, and monitor performance.&lt;/p&gt;
&lt;h2 id=&#34;deployment-patterns&#34;&gt;Deployment patterns&lt;/h2&gt;
&lt;p&gt;Choose the &lt;a href=&#34;../../set-up/deploy/&#34;&gt;deployment pattern&lt;/a&gt; that fits your architecture.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Edge deployment:&lt;/strong&gt; Deploy Alloy close to your data sources for minimal latency.
Run it as a DaemonSet in Kubernetes to collect from every node, install it on each host for infrastructure monitoring, or deploy it alongside applications for local processing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Gateway deployment:&lt;/strong&gt; Deploy Alloy as a centralized gateway.
Configure your applications to send telemetry to Alloy gateways, which process and forward data to backends.
Applications only need to know about the gateway endpoints.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Hybrid deployment:&lt;/strong&gt; Combine edge and gateway approaches.
Deploy edge instances to handle initial collection and filtering close to sources, then forward to gateway instances for aggregation and final processing.
This pattern reduces bandwidth usage and enables centralized policy enforcement while maintaining local processing capabilities.&lt;/p&gt;
&lt;h2 id=&#34;integrations&#34;&gt;Integrations&lt;/h2&gt;
&lt;p&gt;Alloy integrates with Grafana Cloud and self-managed Grafana stacks, routing metrics to Mimir, logs to Loki, traces to Tempo, and profiles to Pyroscope.
It also works with the broader Prometheus ecosystem through full compatibility with the Prometheus exposition format and service discovery mechanisms, and with any OpenTelemetry-compatible backend through OTLP support.&lt;/p&gt;
&lt;p&gt;You can also connect to other ecosystems, including InfluxDB, Elasticsearch, and cloud platforms like AWS, Google Cloud Platform, and Azure.&lt;/p&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next steps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Review &lt;a href=&#34;../requirements/&#34;&gt;requirements and expectations&lt;/a&gt; to understand deployment considerations&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../set-up/install/&#34;&gt;Install&lt;/a&gt; Alloy to get started&lt;/li&gt;
&lt;li&gt;Learn core &lt;a href=&#34;../../get-started/&#34;&gt;concepts&lt;/a&gt; including components, expressions, and pipelines&lt;/li&gt;
&lt;li&gt;Follow &lt;a href=&#34;../../tutorials/&#34;&gt;tutorials&lt;/a&gt; for hands-on experience&lt;/li&gt;
&lt;li&gt;Explore the &lt;a href=&#34;../../reference/&#34;&gt;component reference&lt;/a&gt; to see available components&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="how-grafana-alloy-works">How Grafana Alloy works&lt;/h1>
&lt;p>Understanding the architecture and design of Alloy helps you use it effectively.&lt;/p>
&lt;h2 id="where-alloy-fits">Where Alloy fits&lt;/h2>
&lt;p>A typical observability setup has three layers: data sources that generate telemetry, collection tools that gather and process it, and storage backends with visualization frontends for querying and exploring data.&lt;/p></description></item><item><title>How telemetry flows through Grafana Alloy</title><link>https://grafana.com/docs/alloy/v1.19/introduction/telemetry/</link><pubDate>Mon, 24 Aug 2026 14:24:42 +0000</pubDate><guid>https://grafana.com/docs/alloy/v1.19/introduction/telemetry/</guid><content><![CDATA[&lt;h1 id=&#34;how-telemetry-flows-through-grafana-alloy&#34;&gt;How telemetry flows through Grafana Alloy&lt;/h1&gt;
&lt;p&gt;Alloy moves telemetry through connected components, from sources to backends.
Your configuration defines those components and the connections between them.
Follow those connections to see where data enters the pipeline and where it ends up.&lt;/p&gt;
&lt;h2 id=&#34;define-every-connection-explicitly&#34;&gt;Define every connection explicitly&lt;/h2&gt;
&lt;p&gt;Alloy doesn&amp;rsquo;t transform, route, or process telemetry unless your configuration tells it to.
You define every connection between components, and telemetry moves only along the paths you create.&lt;/p&gt;
&lt;p&gt;A changed component alters the telemetry it handles.
A missing connection means data doesn&amp;rsquo;t reach the next stage.&lt;/p&gt;
&lt;p&gt;Components connect through exports, receiver references, and attributes such as &lt;code&gt;forward_to&lt;/code&gt;.
&lt;a href=&#34;../get-started/components/build-pipelines/&#34;&gt;Build data pipelines&lt;/a&gt; explains how these connections form pipelines.&lt;/p&gt;
&lt;h2 id=&#34;follow-the-pipeline-stages&#34;&gt;Follow the pipeline stages&lt;/h2&gt;
&lt;p&gt;Connected components form pipelines.
Most telemetry pipelines use some combination of four functions: discovery, ingestion, transformation, and output.
Discovery and transformation are optional, and you can chain multiple components in the same function or branch to multiple outputs.&lt;/p&gt;
&lt;!-- vale Grafana.WordList = NO --&gt;
&lt;!-- vale Grafana.Spelling = NO --&gt;

  &lt;script type=&#34;text/javascript&#34; src=&#34;/web/mermaid.867770685db36193a268b63e8c85a9291badc92208742df0df7a384e9ff1619d.js&#34; integrity=&#34;sha256-hndwaF2zYZOiaLY&amp;#43;jIWpKRutySIIdC3w33o4Tp/xYZ0=&#34; defer&gt;&lt;/script&gt;
  

&lt;div class=&#34;mermaid-container&#34;&gt;
  &lt;pre class=&#34;mermaid&#34;&gt;
flowchart LR

  Discovery[Discovery]
  Ingestion[Ingestion]
  Transformation[Transformation]
  Output[Output]

  Discovery -.-&gt;|targets| Ingestion
  Ingestion --&gt;|telemetry| Transformation
  Transformation --&gt;|telemetry| Output

  %% Grafana styling
  classDef grafana fill:#ffffff,stroke:#F05A28,stroke-width:2px,rx:8,ry:8,color:#1f2937,font-weight:600;

  class Discovery,Ingestion,Transformation,Output grafana
&lt;/pre&gt;
&lt;/div&gt;

&lt;!-- vale Grafana.Spelling = YES --&gt;
&lt;!-- vale Grafana.WordList = YES --&gt;
&lt;p&gt;In pull-based pipelines, discovery components pass scrape targets to ingestion components such as &lt;code&gt;prometheus.scrape&lt;/code&gt;.
OpenTelemetry pipelines start at &lt;code&gt;otelcol.receiver.*&lt;/code&gt; and skip discovery.&lt;/p&gt;
&lt;p&gt;Ingestion collects or receives telemetry and converts it to an internal format.
Transformation components modify, filter, route, or sample that data.
You can also connect ingestion directly to output and skip transformation.&lt;/p&gt;
&lt;p&gt;Output components send telemetry to backends.&lt;/p&gt;
&lt;p&gt;When a component supports multiple signal types, connect each type separately through the pipeline.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;../get-started/components/build-pipelines/&#34;&gt;Build data pipelines&lt;/a&gt; has multi-stage examples and pipeline patterns.
&lt;a href=&#34;../collect/choose-component/&#34;&gt;Choose a component&lt;/a&gt; helps you pick components by signal type.&lt;/p&gt;
&lt;h2 id=&#34;see-how-telemetry-moves-in-a-configuration&#34;&gt;See how telemetry moves in a configuration&lt;/h2&gt;
&lt;p&gt;When you read a configuration, follow the data path from source to destination:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Start at ingestion components and note what signal type each one handles.&lt;/li&gt;
&lt;li&gt;If the pipeline uses discovery, follow targets from discovery components into ingestion.&lt;/li&gt;
&lt;li&gt;Follow each component&amp;rsquo;s output to the next component in the chain.&lt;/li&gt;
&lt;li&gt;Note any transformation components and what they change.&lt;/li&gt;
&lt;li&gt;Identify where each path ends at an output component.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Connection order determines execution order, not the textual order of components in the file.
Pipelines can branch to multiple outputs or share components across paths.
&lt;a href=&#34;../get-started/components/build-pipelines/#pipeline-patterns&#34;&gt;Pipeline patterns&lt;/a&gt; covers fan-out and chain processing.&lt;/p&gt;
&lt;p&gt;The Alloy UI visualizes these connections.
Use &lt;a href=&#34;../troubleshoot/debug/&#34;&gt;Debug&lt;/a&gt; to inspect component pipelines in a running instance.&lt;/p&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next steps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Start with &lt;a href=&#34;../get-started/&#34;&gt;Get started&lt;/a&gt; for configuration syntax and component basics.&lt;/li&gt;
&lt;li&gt;Use &lt;a href=&#34;../get-started/components/build-pipelines/&#34;&gt;Build data pipelines&lt;/a&gt; to connect components and apply pipeline patterns.&lt;/li&gt;
&lt;li&gt;Use &lt;a href=&#34;../collect/choose-component/&#34;&gt;Choose a component&lt;/a&gt; to pick components for metrics, logs, traces, and profiles.&lt;/li&gt;
&lt;li&gt;Follow &lt;a href=&#34;../collect/&#34;&gt;Collect and forward data&lt;/a&gt; for end-to-end collection examples.&lt;/li&gt;
&lt;li&gt;Read &lt;a href=&#34;./how-alloy-works/&#34;&gt;How Alloy works&lt;/a&gt; for architecture and capabilities.&lt;/li&gt;
&lt;li&gt;Look up behavior in the &lt;a href=&#34;../reference/components/&#34;&gt;Component reference&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="how-telemetry-flows-through-grafana-alloy">How telemetry flows through Grafana Alloy&lt;/h1>
&lt;p>Alloy moves telemetry through connected components, from sources to backends.
Your configuration defines those components and the connections between them.
Follow those connections to see where data enters the pipeline and where it ends up.&lt;/p></description></item><item><title>OpenTelemetry in Alloy</title><link>https://grafana.com/docs/alloy/v1.19/introduction/otel_alloy/</link><pubDate>Mon, 24 Aug 2026 14:24:42 +0000</pubDate><guid>https://grafana.com/docs/alloy/v1.19/introduction/otel_alloy/</guid><content><![CDATA[&lt;h1 id=&#34;opentelemetry-in-alloy&#34;&gt;OpenTelemetry in Alloy&lt;/h1&gt;
&lt;p&gt;Grafana Alloy combines the Prometheus-native, production-grade collection features of Alloy with the broad ecosystem and standards of OpenTelemetry.
The Alloy OpenTelemetry Engine is an OpenTelemetry Collector distribution embedded within Alloy.
It lets you run Alloy with the OpenTelemetry Collector while retaining access to Alloy features and integrations through the Alloy Engine extension.&lt;/p&gt;


&lt;div data-shared=&#34;stability/experimental_otel.md&#34;&gt;
            &lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;EXPERIMENTAL&lt;/strong&gt;: OTel Engine is an &lt;a href=&#34;/docs/release-life-cycle/&#34;&gt;experimental&lt;/a&gt; feature.
Experimental features are subject to frequent breaking changes, and may be removed with no equivalent replacement.&lt;/p&gt;
&lt;p&gt;To maintain full compatibility of the OTel Engine with the upstream OpenTelemetry Collector and expose a compatible command line interface, the OTel Engine isn&amp;rsquo;t hidden behind a stability 
    &lt;a href=&#34;/docs/alloy/v1.19/reference/cli/run/&#34;&gt;flag&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Make sure that you understand the risks involved before using an experimental feature in your production environments.&lt;/p&gt;&lt;/blockquote&gt;
&lt;/div&gt;

        
&lt;h2 id=&#34;why-the-otel-engine-exists&#34;&gt;Why the OTel Engine exists&lt;/h2&gt;
&lt;p&gt;Standard OpenTelemetry Collector pipelines use YAML configuration, but Alloy components require translating that configuration into Alloy syntax.
The OTel Engine runs the Collector runtime directly, so you can use Collector YAML configurations without translation.&lt;/p&gt;
&lt;p&gt;The OTel Engine addresses this by running the upstream Collector runtime directly from the Alloy executable.
You can bring existing Collector configurations to Alloy, use familiar Collector tooling, and choose from the &lt;a href=&#34;../../reference/cli/otel/#included-components&#34;&gt;components bundled with the &lt;code&gt;otel&lt;/code&gt; command&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The OTel Engine also gives Grafana a standards-native foundation for extending Alloy.
Grafana is committed to providing a first-class OpenTelemetry collection experience as this experimental engine matures.&lt;/p&gt;
&lt;h2 id=&#34;how-the-engines-fit-together&#34;&gt;How the engines fit together&lt;/h2&gt;
&lt;p&gt;Both engines are built into the same Alloy binary: &lt;code&gt;alloy run&lt;/code&gt; starts the Default Engine, and &lt;code&gt;alloy otel&lt;/code&gt; starts the OTel Engine.
The optional Alloy Engine extension lets you run a Default Engine pipeline inside the OTel Engine, in the same process.&lt;/p&gt;
&lt;p&gt;The following diagram shows how the engines and the extension fit inside the Alloy executable:&lt;/p&gt;

  &lt;script type=&#34;text/javascript&#34; src=&#34;/web/mermaid.867770685db36193a268b63e8c85a9291badc92208742df0df7a384e9ff1619d.js&#34; integrity=&#34;sha256-hndwaF2zYZOiaLY&amp;#43;jIWpKRutySIIdC3w33o4Tp/xYZ0=&#34; defer&gt;&lt;/script&gt;
  

&lt;div class=&#34;mermaid-container&#34;&gt;
  &lt;pre class=&#34;mermaid&#34;&gt;
---
config:
  flowchart:
    subGraphTitleMargin:
      top: 10
      bottom: 10
    rankSpacing: 10
---

flowchart TD
    subgraph EXEC[&#34;Grafana Alloy executable&#34;]
        direction TB
        run([&#34;&#39;alloy run&#39; command&#34;])
        otel([&#34;&#39;alloy otel&#39; command&#34;])
        DE[&#34;Default Engine&lt;br/&gt;&lt;small&gt;Traditional Alloy pipeline&lt;/small&gt;&#34;]
        run --&gt; DE

        subgraph OE[&#34;OTel Engine&#34;]
            direction TB
            subgraph EXT[&#34;alloyengine extension &lt;small&gt;(optional)&lt;/small&gt;&#34;]
                DEP[&#34;Default Engine&lt;br/&gt;&lt;small&gt;Traditional Alloy pipeline&lt;/small&gt;&#34;]
            end
        end
        otel --&gt; OE
    end

    style EXEC fill:#fdefe5,stroke:#000000,color:#000000,rx:10,ry:10
    style OE fill:#cce5ff,stroke:#000000,color:#000000,rx:10,ry:10
    style EXT fill:#cce5ff,stroke:#000000,color:#000000,stroke-dasharray: 4 3,rx:10,ry:10
    style DE fill:#ff8833,stroke:#000000,color:#000000,rx:10,ry:10
    style DEP fill:#ff8833,stroke:#000000,color:#000000,rx:10,ry:10
    style run fill:#ffffff,stroke:#000000,color:#000000,rx:10,ry:10
    style otel fill:#ffffff,stroke:#000000,color:#000000,rx:10,ry:10
&lt;/pre&gt;
&lt;/div&gt;

&lt;h2 id=&#34;choose-an-engine&#34;&gt;Choose an engine&lt;/h2&gt;
&lt;p&gt;Alloy supports two runtime engines and an extension.
Choose the engine that best matches your existing configuration and collection workload.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Default Engine&lt;/strong&gt;: The standard way to run Alloy.
It uses &lt;a href=&#34;../../get-started/syntax/&#34;&gt;Alloy configuration syntax&lt;/a&gt; and Alloy components.
It remains the stable, most polished experience for getting the most from Grafana Cloud, with &lt;a href=&#34;../backward-compatibility/&#34;&gt;backward compatibility&lt;/a&gt; guarantees, a built-in UI, live debugging, support bundles, clustering, and broad Grafana integrations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OTel Engine&lt;/strong&gt;: The upstream OpenTelemetry Collector runtime embedded in Alloy.
It uses &lt;a href=&#34;https://opentelemetry.io/docs/collector/configuration/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Collector YAML configuration&lt;/a&gt; and standard Collector command-line arguments.
It provides a direct path for OpenTelemetry-native pipelines and existing Collector configurations.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Alloy Engine extension&lt;/strong&gt;: An OpenTelemetry Collector extension that starts a Default Engine pipeline alongside the OTel Engine.
The two pipelines run in the same process, but they don&amp;rsquo;t interact directly.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;use-the-otel-engine-for-opentelemetry-native-pipelines&#34;&gt;Use the OTel Engine for OpenTelemetry-native pipelines&lt;/h3&gt;
&lt;p&gt;The OTel Engine is a good fit when you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Already run an OpenTelemetry Collector and want to reuse its YAML configuration and operational model.&lt;/li&gt;
&lt;li&gt;Prefer to use standard Collector configuration and command-line arguments.&lt;/li&gt;
&lt;li&gt;Collect push-based, OpenTelemetry-native signals through OTLP.&lt;/li&gt;
&lt;li&gt;Use Grafana Application Observability and don&amp;rsquo;t need Default Engine components in the same pipeline.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Grafana Application Observability uses OpenTelemetry-native telemetry.
To build a compatible Collector pipeline, refer to &lt;a href=&#34;/docs/opentelemetry/collector/opentelemetry-collector/&#34;&gt;Set up OpenTelemetry Collector for Application Observability&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;use-the-default-engine-for-the-full-alloy-experience&#34;&gt;Use the Default Engine for the full Alloy experience&lt;/h3&gt;
&lt;p&gt;The Default Engine is the recommended choice when you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Want the stable and most complete Alloy experience.&lt;/li&gt;
&lt;li&gt;Collect infrastructure telemetry with Prometheus exporters and pull-based scrapes.&lt;/li&gt;
&lt;li&gt;Need Alloy features such as clustering, the built-in UI, live debugging, support bundles, or configuration reloads.&lt;/li&gt;
&lt;li&gt;Use Grafana integrations for Kubernetes monitoring, Database Observability, eBPF, logs, or profiles.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The Default Engine is optimized for Prometheus pipelines and label semantics.
It also provides Grafana-specific collection features that don&amp;rsquo;t yet have OpenTelemetry-native equivalents.&lt;/p&gt;
&lt;h3 id=&#34;run-both-engines-when-you-need-both-component-sets&#34;&gt;Run both engines when you need both component sets&lt;/h3&gt;
&lt;p&gt;Use the &lt;code&gt;alloyengine&lt;/code&gt; extension when one process needs both standard Collector components and Default Engine components.
This approach can simplify small deployments.&lt;/p&gt;
&lt;p&gt;For large workloads, run the engines in separate processes so you can scale and troubleshoot them independently.
Push-based OTLP gateways and pull-based Prometheus scrapers have different load and scaling characteristics.&lt;/p&gt;
&lt;h2 id=&#34;manage-the-otel-engine-with-fleet-management&#34;&gt;Manage the OTel Engine with Fleet Management&lt;/h2&gt;
&lt;p&gt;The OTel Engine works with the OpenTelemetry Collector support in Grafana Fleet Management.
The Alloy container provides an &lt;code&gt;otelcol&lt;/code&gt;-compatible entry point, and the engine includes the components needed to run with the Open Agent Management Protocol (OpAMP) Supervisor.
To monitor and remotely configure an OTel Engine deployment, follow the &lt;a href=&#34;/docs/grafana-cloud/send-data/fleet-management/get-started/opentelemetry-collector/&#34;&gt;Fleet Management setup for the OpenTelemetry Collector&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;how-the-engines-evolve&#34;&gt;How the engines evolve&lt;/h2&gt;
&lt;p&gt;Grafana continues to improve the OTel Engine and its integration with Grafana products.
The goal is a first-class collection experience for users who choose standard OpenTelemetry Collector workflows.&lt;/p&gt;
&lt;p&gt;Default Engine continues to be in active development.
It remains the default, stable engine, and Grafana continues to add features to it.
The two engines can evolve toward the same outcomes without requiring every feature to have an identical implementation.&lt;/p&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next steps&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../../set-up/otel_engine/&#34;&gt;Set up the OTel Engine&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../reference/cli/otel/&#34;&gt;Explore the &lt;code&gt;otel&lt;/code&gt; command and its included components&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="opentelemetry-in-alloy">OpenTelemetry in Alloy&lt;/h1>
&lt;p>Grafana Alloy combines the Prometheus-native, production-grade collection features of Alloy with the broad ecosystem and standards of OpenTelemetry.
The Alloy OpenTelemetry Engine is an OpenTelemetry Collector distribution embedded within Alloy.
It lets you run Alloy with the OpenTelemetry Collector while retaining access to Alloy features and integrations through the Alloy Engine extension.&lt;/p></description></item><item><title>Requirements and expectations</title><link>https://grafana.com/docs/alloy/v1.19/introduction/requirements/</link><pubDate>Mon, 24 Aug 2026 14:24:42 +0000</pubDate><guid>https://grafana.com/docs/alloy/v1.19/introduction/requirements/</guid><content><![CDATA[&lt;h1 id=&#34;requirements-and-expectations&#34;&gt;Requirements and expectations&lt;/h1&gt;
&lt;p&gt;Before you put Grafana Alloy into production, it helps to have a clear picture of where it runs well, how it&amp;rsquo;s usually deployed, and where people most often get surprised.&lt;/p&gt;
&lt;p&gt;Before a first deployment, people usually want answers to a few basic questions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Will Alloy run in my environment?&lt;/li&gt;
&lt;li&gt;How should I deploy it the first time?&lt;/li&gt;
&lt;li&gt;What kinds of constraints or trade-offs should I expect?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The guidance here focuses on the common, supported paths that work well for most users, without diving into every possible edge case.&lt;/p&gt;
&lt;h2 id=&#34;design-expectations&#34;&gt;Design expectations&lt;/h2&gt;
&lt;p&gt;Grafana Alloy makes telemetry collection explicit and predictable, even when that means exposing trade-offs that other tools try to hide.&lt;/p&gt;
&lt;p&gt;A few design choices are worth keeping in mind:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Alloy favors explicit configuration over implicit behavior.
You define pipelines, routing, and scaling decisions in configuration rather than relying on automatic inference.&lt;/li&gt;
&lt;li&gt;Alloy exposes deployment and scaling choices instead of masking them.
Changes in topology—such as switching from a DaemonSet to a centralized deployment—can affect behavior, and those effects are intentional and visible.&lt;/li&gt;
&lt;li&gt;Alloy consolidates multiple collectors, but it doesn&amp;rsquo;t replicate every default or assumption from these other collectors.
Similar concepts may behave differently when the underlying goals differ.&lt;/li&gt;
&lt;li&gt;Alloy prioritizes predictability over &amp;ldquo;magic&amp;rdquo; defaults.
Understanding how components connect and how work distributes is part of operating Alloy successfully.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Keeping these expectations in mind makes it easier to reason about configuration changes, scaling decisions, and observed behavior in production.&lt;/p&gt;
&lt;h2 id=&#34;supported-platforms&#34;&gt;Supported platforms&lt;/h2&gt;
&lt;p&gt;Alloy runs on the following platforms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Linux&lt;/li&gt;
&lt;li&gt;Windows&lt;/li&gt;
&lt;li&gt;macOS&lt;/li&gt;
&lt;li&gt;FreeBSD&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For supported architectures and version requirements, refer to &lt;a href=&#34;../../set-up/supported-platforms/&#34;&gt;Supported platforms&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For setup instructions, refer to &lt;a href=&#34;../../set-up/&#34;&gt;Set up Alloy&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;network-requirements&#34;&gt;Network requirements&lt;/h2&gt;
&lt;p&gt;Alloy requires network access for its HTTP server and for sending data to backends.&lt;/p&gt;
&lt;h3 id=&#34;http-server&#34;&gt;HTTP server&lt;/h3&gt;
&lt;p&gt;Alloy runs an HTTP server for its UI, API, and metrics endpoints.
By default, it listens on &lt;code&gt;127.0.0.1:12345&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;For more information, refer to &lt;a href=&#34;../../reference/http/&#34;&gt;HTTP endpoints&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;outbound-connectivity&#34;&gt;Outbound connectivity&lt;/h3&gt;
&lt;p&gt;Alloy needs outbound network access to send telemetry to your backends.
Ensure firewall rules and egress rules allow connections to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Remote write or OTLP endpoints for metrics, such as Mimir, Prometheus, or Thanos&lt;/li&gt;
&lt;li&gt;Log ingestion endpoints, such as Loki, Elasticsearch, or OTLP-compatible backends&lt;/li&gt;
&lt;li&gt;Trace ingestion endpoints, such as Tempo, Jaeger, or OTLP-compatible backends&lt;/li&gt;
&lt;li&gt;Profile ingestion endpoints, such as Pyroscope&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;cluster-communication&#34;&gt;Cluster communication&lt;/h3&gt;
&lt;p&gt;When you enable &lt;a href=&#34;../../get-started/clustering/&#34;&gt;clustering&lt;/a&gt;, Alloy nodes communicate over HTTP/2 using the same HTTP server port.
Each node must be reachable by other cluster members on the configured listen address.&lt;/p&gt;
&lt;h2 id=&#34;permissions-and-access&#34;&gt;Permissions and access&lt;/h2&gt;
&lt;p&gt;Some Alloy components interact closely with the host, container runtime, or Kubernetes APIs.
When that happens, Alloy needs enough access to complete the work.&lt;/p&gt;
&lt;p&gt;This requirement most often comes up when collecting:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Host-level metrics, logs, traces, or profiles&lt;/li&gt;
&lt;li&gt;Container or runtime information&lt;/li&gt;
&lt;li&gt;Data that lives outside the application sandbox&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Not every component can run in a fully locked-down environment.
When Alloy runs with restricted permissions, certain components might fail or behave unexpectedly.&lt;/p&gt;
&lt;p&gt;For access and permissions on Kubernetes, refer to &lt;a href=&#34;../../../access_permissions/kubernetes/&#34;&gt;Access and permissions for Alloy on Kubernetes&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When you enable a component, check its documented requirements first.
Refer to the &lt;a href=&#34;../../reference/&#34;&gt;component reference&lt;/a&gt; for component-specific constraints and limitations.&lt;/p&gt;
&lt;h2 id=&#34;security&#34;&gt;Security&lt;/h2&gt;
&lt;p&gt;Alloy supports TLS for secure communication.
Configure TLS in component &lt;code&gt;tls&lt;/code&gt; blocks for backend connections, or use the &lt;a href=&#34;../../reference/cli/run/&#34;&gt;&lt;code&gt;--cluster.enable-tls&lt;/code&gt; flag&lt;/a&gt; for &lt;a href=&#34;../../get-started/clustering/&#34;&gt;clustered mode&lt;/a&gt;.
Authentication methods such as basic auth, OAuth2, and bearer tokens are configured per component.&lt;/p&gt;
&lt;h3 id=&#34;secrets-management&#34;&gt;Secrets management&lt;/h3&gt;
&lt;p&gt;Store sensitive values like API keys and passwords outside your configuration files.
Alloy supports environment variable references and integrations such as HashiCorp Vault, Kubernetes Secrets, AWS S3, and local files.&lt;/p&gt;
&lt;p&gt;Refer to the &lt;a href=&#34;../../reference/&#34;&gt;component documentation&lt;/a&gt; for specific options.&lt;/p&gt;
&lt;h2 id=&#34;deployment-patterns&#34;&gt;Deployment patterns&lt;/h2&gt;
&lt;p&gt;Alloy supports edge, gateway, and hybrid deployment patterns.
Refer to &lt;a href=&#34;../how-alloy-works/&#34;&gt;How Alloy works&lt;/a&gt; for guidance on choosing the right pattern for your architecture.&lt;/p&gt;
&lt;p&gt;For detailed setup instructions, refer to &lt;a href=&#34;../../set-up/deploy/&#34;&gt;Deploy Alloy&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;clustering-and-scaling-behavior&#34;&gt;Clustering and scaling behavior&lt;/h2&gt;
&lt;p&gt;Some Alloy behavior depends on how you deploy it, not just on configuration.&lt;/p&gt;
&lt;p&gt;Alloy supports &lt;a href=&#34;../../get-started/clustering/&#34;&gt;clustering&lt;/a&gt; to distribute work across multiple instances.
Clustering uses a gossip protocol and consistent hashing to distribute scrape targets automatically.&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;Target auto-distribution requires enabling clustering at both the instance level and the component level.
Refer to &lt;a href=&#34;../../get-started/clustering/&#34;&gt;Clustering&lt;/a&gt; for configuration details.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;A few things that often surprise users:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;More Alloy instances means more meta-monitoring metrics.&lt;/li&gt;
&lt;li&gt;A switch between DaemonSet and centralized deployments can change observed series counts.&lt;/li&gt;
&lt;li&gt;Scaling clustered collectors changes how targets distribute, even when the target list stays the same.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For resource planning guidance, refer to &lt;a href=&#34;../../set-up/estimate-resource-usage/&#34;&gt;Estimate resource usage&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;data-durability&#34;&gt;Data durability&lt;/h2&gt;
&lt;p&gt;Alloy uses a Write-Ahead Log (WAL) for metrics to handle temporary backend outages.
The WAL buffers data locally and retries sending when the backend becomes available.&lt;/p&gt;
&lt;p&gt;For the WAL to persist across restarts, configure persistent storage using the &lt;a href=&#34;../../reference/cli/run/&#34;&gt;&lt;code&gt;--storage.path&lt;/code&gt; flag&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;Without persistent storage, Alloy loses buffered data on restart.
By default, Alloy stores data in a temporary directory.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;Push-based pipelines for logs, traces, and profiles have different durability characteristics.
Refer to &lt;a href=&#34;../../reference/&#34;&gt;component documentation&lt;/a&gt; for more information.&lt;/p&gt;
&lt;h2 id=&#34;monitor-alloy&#34;&gt;Monitor Alloy&lt;/h2&gt;
&lt;p&gt;Alloy exposes metrics about its own health and performance at the &lt;code&gt;/metrics&lt;/code&gt; endpoint.&lt;/p&gt;
&lt;p&gt;Key monitoring capabilities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Internal metrics:&lt;/strong&gt; Controller and component metrics in Prometheus format&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Health endpoints:&lt;/strong&gt; &lt;code&gt;/-/ready&lt;/code&gt; and &lt;code&gt;/-/healthy&lt;/code&gt; for load balancer checks&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Debugging UI:&lt;/strong&gt; Visual component graph and live debugging at &lt;code&gt;/&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Refer to &lt;a href=&#34;../../collect/metamonitoring/&#34;&gt;Set up meta-monitoring&lt;/a&gt; for configuration examples.&lt;/p&gt;
&lt;h2 id=&#34;component-capabilities&#34;&gt;Component capabilities&lt;/h2&gt;
&lt;p&gt;Each Alloy component has its own capabilities and limits.
Before you rely on a component in production, check:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Which signal types it accepts and emits: metrics, logs, traces, and profiles&lt;/li&gt;
&lt;li&gt;Whether the component is stable or still evolving&lt;/li&gt;
&lt;li&gt;Whether it&amp;rsquo;s a native Alloy component or wraps upstream OpenTelemetry Collector functionality&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Refer to the &lt;a href=&#34;../../reference/&#34;&gt;component reference&lt;/a&gt; for this information.&lt;/p&gt;
&lt;h2 id=&#34;troubleshoot-issues&#34;&gt;Troubleshoot issues&lt;/h2&gt;
&lt;p&gt;If something doesn&amp;rsquo;t behave as expected after deployment:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Review &lt;a href=&#34;../../troubleshoot/debug/&#34;&gt;Troubleshooting and debugging&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Check the &lt;a href=&#34;../../reference/&#34;&gt;component documentation&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Revisit deployment patterns and clustering assumptions.&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;&lt;a href=&#34;../../set-up/&#34;&gt;Set up Alloy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../get-started/clustering/&#34;&gt;Learn about clustering&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../../reference/&#34;&gt;Explore components&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="requirements-and-expectations">Requirements and expectations&lt;/h1>
&lt;p>Before you put Grafana Alloy into production, it helps to have a clear picture of where it runs well, how it&amp;rsquo;s usually deployed, and where people most often get surprised.&lt;/p></description></item></channel></rss>