<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Troubleshoot Grafana Alloy on Grafana Labs</title><link>https://grafana.com/docs/alloy/v1.15/troubleshoot/</link><description>Recent content in Troubleshoot Grafana Alloy on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/alloy/v1.15/troubleshoot/index.xml" rel="self" type="application/rss+xml"/><item><title>Monitor the Grafana Alloy component controller</title><link>https://grafana.com/docs/alloy/v1.15/troubleshoot/controller_metrics/</link><pubDate>Mon, 30 Mar 2026 15:47:22 +0000</pubDate><guid>https://grafana.com/docs/alloy/v1.15/troubleshoot/controller_metrics/</guid><content><![CDATA[&lt;h1 id=&#34;monitor-the-hahahugoshortcode10403s0hbhb-component-controller&#34;&gt;Monitor the Grafana Alloy component controller&lt;/h1&gt;
&lt;p&gt;The Alloy &lt;a href=&#34;../../get-started/component_controller/&#34;&gt;component controller&lt;/a&gt; exposes Prometheus metrics which you can use to investigate the controller state.&lt;/p&gt;
&lt;p&gt;Metrics for the controller are exposed at the &lt;code&gt;/metrics&lt;/code&gt; HTTP endpoint of the Alloy HTTP server, which defaults to listening on &lt;code&gt;http://localhost:12345&lt;/code&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The documentation for the &lt;a href=&#34;../../reference/cli/run/&#34;&gt;&lt;code&gt;alloy run&lt;/code&gt;&lt;/a&gt; command describes how to modify the address Alloy listens on for HTTP traffic.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The controller exposes the following metrics:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;alloy_component_controller_evaluating&lt;/code&gt; (Gauge): Set to &lt;code&gt;1&lt;/code&gt; whenever the  component controller is evaluating components.
This value may be misrepresented depending on how fast evaluations complete or how often evaluations occur.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;alloy_component_controller_running_components&lt;/code&gt; (Gauge): The current number of running components by health.
The health is represented in the &lt;code&gt;health_type&lt;/code&gt; label.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;alloy_component_evaluation_seconds&lt;/code&gt; (Histogram): The time it takes to evaluate components after one of their dependencies is updated.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;alloy_component_dependencies_wait_seconds&lt;/code&gt; (Histogram): Time spent by components waiting to be evaluated after one of their dependencies is updated.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;alloy_component_evaluation_queue_size&lt;/code&gt; (Gauge): The current number of component evaluations waiting to be performed.&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="monitor-the-hahahugoshortcode10403s0hbhb-component-controller">Monitor the Grafana Alloy component controller&lt;/h1>
&lt;p>The Alloy &lt;a href="../../get-started/component_controller/">component controller&lt;/a> exposes Prometheus metrics which you can use to investigate the controller state.&lt;/p>
&lt;p>Metrics for the controller are exposed at the &lt;code>/metrics&lt;/code> HTTP endpoint of the Alloy HTTP server, which defaults to listening on &lt;code>http://localhost:12345&lt;/code>.&lt;/p></description></item><item><title>Monitor components</title><link>https://grafana.com/docs/alloy/v1.15/troubleshoot/component_metrics/</link><pubDate>Mon, 30 Mar 2026 15:47:22 +0000</pubDate><guid>https://grafana.com/docs/alloy/v1.15/troubleshoot/component_metrics/</guid><content><![CDATA[&lt;h1 id=&#34;monitor-components&#34;&gt;Monitor components&lt;/h1&gt;
&lt;p&gt;Alloy &lt;a href=&#34;../../get-started/components/&#34;&gt;components&lt;/a&gt; may optionally expose Prometheus metrics which can be used to investigate the behavior of that component.
These component-specific metrics are only generated when an instance of that component is running.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Component-specific metrics are different than any metrics processed by the component.
Component-specific metrics are used to expose the state of a component for observability, alerting, and debugging.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Component-specific metrics are exposed at the &lt;code&gt;/metrics&lt;/code&gt; HTTP endpoint of the Alloy HTTP server, which defaults to listening on &lt;code&gt;http://localhost:12345&lt;/code&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The documentation for the &lt;a href=&#34;../../reference/cli/run/&#34;&gt;&lt;code&gt;alloy run&lt;/code&gt;&lt;/a&gt; command describes how to modify the address Alloy listens on for HTTP traffic.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Component-specific metrics have a &lt;code&gt;component_id&lt;/code&gt; label matching the component ID generating those metrics.
For example, component-specific metrics for a &lt;code&gt;prometheus.remote_write&lt;/code&gt; component labeled &lt;code&gt;production&lt;/code&gt; has a &lt;code&gt;component_id&lt;/code&gt; label with the value &lt;code&gt;prometheus.remote_write.production&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&#34;../../reference/components/&#34;&gt;reference documentation&lt;/a&gt; for each component described the list of component-specific metrics that the component exposes.
Not all components expose metrics.&lt;/p&gt;
]]></content><description>&lt;h1 id="monitor-components">Monitor components&lt;/h1>
&lt;p>Alloy &lt;a href="../../get-started/components/">components&lt;/a> may optionally expose Prometheus metrics which can be used to investigate the behavior of that component.
These component-specific metrics are only generated when an instance of that component is running.&lt;/p></description></item><item><title>Import rendered mixin dashboards</title><link>https://grafana.com/docs/alloy/v1.15/troubleshoot/import-mixin-dashboards/</link><pubDate>Thu, 02 Apr 2026 19:39:57 +0000</pubDate><guid>https://grafana.com/docs/alloy/v1.15/troubleshoot/import-mixin-dashboards/</guid><content><![CDATA[&lt;h1 id=&#34;import-rendered-mixin-dashboards&#34;&gt;Import rendered mixin dashboards&lt;/h1&gt;
&lt;p&gt;The Grafana Alloy mixin defines dashboards you can use to monitor collector health, resource use, and internal pipeline metrics. You can import these dashboards from the Grafana Alloy mixin directly into your Grafana instance.
The dashboards are available as rendered JSON files in the source repository or in the release archive.&lt;/p&gt;
&lt;h2 id=&#34;before-you-begin&#34;&gt;Before you begin&lt;/h2&gt;
&lt;p&gt;Before you begin, ensure you have the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Access to a Grafana instance where you can import dashboards.&lt;/li&gt;
&lt;li&gt;Access to rendered mixin files from one of these sources:
&lt;ul&gt;
&lt;li&gt;The Alloy source repository at &lt;code&gt;operations/alloy-mixin/rendered/dashboards/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The release archive &lt;code&gt;alloy-mixin-dashboards-&amp;lt;RELEASE_TAG&amp;gt;.zip&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;A configured Prometheus data source in Grafana for imported dashboards.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;get-rendered-mixin-dashboard-files&#34;&gt;Get rendered mixin dashboard files&lt;/h2&gt;
&lt;p&gt;Choose one source for dashboards:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source repository:&lt;/strong&gt; Use the rendered dashboard files located in &lt;code&gt;operations/alloy-mixin/rendered/dashboards/&lt;/code&gt; in your copy or clone of the Alloy repository.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Release archive:&lt;/strong&gt; Download &lt;code&gt;alloy-mixin-dashboards-&amp;lt;RELEASE_TAG&amp;gt;.zip&lt;/code&gt; from an Alloy release artifact and extract the archive.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;import-dashboards-from-json-files&#34;&gt;Import dashboards from JSON files&lt;/h2&gt;
&lt;p&gt;Use the Grafana dashboard import UI to import each rendered dashboard JSON file:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open Grafana and go to &lt;strong&gt;Dashboards&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;New&lt;/strong&gt; and then click &lt;strong&gt;Import&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Upload a JSON file from &lt;code&gt;operations/alloy-mixin/rendered/dashboards/&lt;/code&gt; or from the extracted zip archive.&lt;/li&gt;
&lt;li&gt;Select the target data source mappings.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Import&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Repeat for each dashboard file you want to import.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For full UI details and options, refer to &lt;a href=&#34;/docs/grafana/latest/dashboards/build-dashboards/import-dashboards/&#34;&gt;importing dashboards&lt;/a&gt; in the Grafana documentation.&lt;/p&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;../&#34;&gt;Troubleshoot Grafana Alloy&lt;/a&gt; for additional troubleshooting tasks.&lt;/li&gt;
&lt;li&gt;Refer to the &lt;a href=&#34;https://github.com/grafana/alloy/tree/main/operations/alloy-mixin&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Alloy mixin source&lt;/a&gt; for rendered files and customization options.&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="import-rendered-mixin-dashboards">Import rendered mixin dashboards&lt;/h1>
&lt;p>The Grafana Alloy mixin defines dashboards you can use to monitor collector health, resource use, and internal pipeline metrics. You can import these dashboards from the Grafana Alloy mixin directly into your Grafana instance.
The dashboards are available as rendered JSON files in the source repository or in the release archive.&lt;/p></description></item><item><title>Generate a support bundle</title><link>https://grafana.com/docs/alloy/v1.15/troubleshoot/support_bundle/</link><pubDate>Mon, 30 Mar 2026 15:47:22 +0000</pubDate><guid>https://grafana.com/docs/alloy/v1.15/troubleshoot/support_bundle/</guid><content><![CDATA[&lt;h1 id=&#34;generate-a-support-bundle&#34;&gt;Generate a support bundle&lt;/h1&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;Generate support bundle isn&amp;rsquo;t available on Alloy v1.4 and older.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;The &lt;code&gt;/-/support?duration=N&lt;/code&gt; endpoint returns a support bundle, a compressed file that contains information
about a running Alloy instance, and can be used as a baseline of information when trying
to debug an &lt;a href=&#34;https://github.com/grafana/alloy/issues/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;issue&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This feature isn&amp;rsquo;t covered by the &lt;a href=&#34;../../introduction/backward-compatibility/&#34;&gt;backward-compatibility&lt;/a&gt; guarantees.&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;This endpoint is enabled by default, but may be disabled using the &lt;code&gt;--disable-support-bundle&lt;/code&gt; runtime flag.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;The duration parameter is optional, must be less than or equal to the
configured HTTP server write timeout, and if not provided, defaults to it.
The endpoint is only exposed to the Alloy HTTP server listen address, which
defaults to &lt;code&gt;localhost:12345&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The support bundle contains all information in plain text, so you can
inspect it before sharing to verify that no sensitive information has leaked.&lt;/p&gt;
&lt;p&gt;In addition, you can inspect the &lt;a href=&#34;https://github.com/grafana/alloy/blob/main/internal/service/http/supportbundle.go&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;support bundle implementation&lt;/a&gt;
to verify the code used to generate these bundles.&lt;/p&gt;
&lt;p&gt;A support bundle contains the following data:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;alloy-components.json&lt;/code&gt; contains information about the &lt;a href=&#34;../../get-started/components/&#34;&gt;components&lt;/a&gt; running on this Alloy instance, generated by the &lt;code&gt;/api/v0/web/components&lt;/code&gt; endpoint.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;alloy-environment.txt&lt;/code&gt; contains the values of several environment variables relevant to the golang runtime.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;alloy-logs.txt&lt;/code&gt; contains the logs during the bundle generation.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;alloy-metadata.yaml&lt;/code&gt; contains the Alloy build version and the installation&amp;rsquo;s operating system, architecture, and uptime.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;alloy-metrics-sample-start.txt&lt;/code&gt; contains a snapshot of the internal metrics for Alloy at the start of the bundle collection.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;alloy-metrics-sample-end.txt&lt;/code&gt; contains a snapshot of the internal metrics for Alloy at the end of the bundle collection.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;alloy-peers.json&lt;/code&gt; contains information about the identified cluster peers of this Alloy instance, generated by the &lt;code&gt;/api/v0/web/peers&lt;/code&gt; endpoint.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;alloy-runtime-flags.txt&lt;/code&gt; contains the values of the runtime flags available in Alloy.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;pprof/&lt;/code&gt; directory contains Go runtime profiling data (CPU, heap, goroutine, mutex, block profiles) as exported by the pprof package.
Refer to the &lt;a href=&#34;../profile/&#34;&gt;profile&lt;/a&gt; documentation for more details on how to use this information.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;sources/&lt;/code&gt; directory contains copies of the local configuration files used to configure Alloy.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sources/remote-config/remote.alloy&lt;/code&gt; contains a copy of the last received &lt;a href=&#34;../../reference/config-blocks/remotecfg/&#34;&gt;remote configuration&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="generate-a-support-bundle">Generate a support bundle&lt;/h1>
&lt;div class="admonition admonition-note">&lt;blockquote>&lt;p class="title text-uppercase">Note&lt;/p>&lt;p>Generate support bundle isn&amp;rsquo;t available on Alloy v1.4 and older.&lt;/p>&lt;/blockquote>&lt;/div>
&lt;p>The &lt;code>/-/support?duration=N&lt;/code> endpoint returns a support bundle, a compressed file that contains information
about a running Alloy instance, and can be used as a baseline of information when trying
to debug an &lt;a href="https://github.com/grafana/alloy/issues/" target="_blank" rel="noopener noreferrer">issue&lt;/a>.&lt;/p></description></item><item><title>Profile Grafana Alloy resource consumption</title><link>https://grafana.com/docs/alloy/v1.15/troubleshoot/profile/</link><pubDate>Mon, 30 Mar 2026 15:47:22 +0000</pubDate><guid>https://grafana.com/docs/alloy/v1.15/troubleshoot/profile/</guid><content><![CDATA[&lt;h1 id=&#34;profile-grafana-alloy-resource-consumption&#34;&gt;Profile Grafana Alloy resource consumption&lt;/h1&gt;
&lt;p&gt;Alloy is written in the Go programming language, which offers &lt;a href=&#34;https://pkg.go.dev/net/http/pprof/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;built-in&lt;/a&gt; support for profiling.
Like other applications written in Go, you can profile Alloy by sending an HTTP request, which returns a pprof Go profile.&lt;/p&gt;
&lt;p&gt;After you have the pprof file, visualize it as a &lt;a href=&#34;/docs/pyroscope/latest/view-and-analyze-profile-data/flamegraphs/&#34;&gt;flame graph&lt;/a&gt; in &lt;a href=&#34;/docs/pyroscope/latest/get-started/&#34;&gt;Grafana Pyroscope&lt;/a&gt;.
Alternatively, you could visualize it on &lt;a href=&#34;https://play.grafana.org/a/grafana-pyroscope-app/ad-hoc&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Grafana Play&lt;/a&gt; or locally by using Go&amp;rsquo;s built-in &lt;a href=&#34;https://go.dev/blog/pprof/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;pprof tool&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;A profile may contain sensitive information about your environment.
You may not want to upload your profiles to a public location.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;The port you use to send the HTTP request is controlled by the &lt;code&gt;--server.http.listen-addr&lt;/code&gt; &lt;a href=&#34;../../reference/cli/run/&#34;&gt;command line argument&lt;/a&gt;.
It&amp;rsquo;s set to &lt;code&gt;127.0.0.1:12345&lt;/code&gt; by default.&lt;/p&gt;
&lt;h2 id=&#34;obtain-a-single-profile&#34;&gt;Obtain a single profile&lt;/h2&gt;
&lt;p&gt;Different types of HTTP requests retrieve different profiles.&lt;/p&gt;
&lt;h3 id=&#34;memory-consumption&#34;&gt;Memory consumption&lt;/h3&gt;
&lt;p&gt;Goroutine leaks often cause memory leaks.
This is why obtaining a goroutine profile is usually necessary when investigating memory issues.
For example:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;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;curl localhost:12345/debug/pprof/heap -o heap.pprof
curl localhost:12345/debug/pprof/goroutine -o goroutine.pprof&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;It&amp;rsquo;s often helpful to collect profiles both when memory usage is low and when it&amp;rsquo;s high.
You can compare the profiles, and it may be easier to identify what caused the memory consumption to increase.&lt;/p&gt;
&lt;h3 id=&#34;cpu-consumption&#34;&gt;CPU consumption&lt;/h3&gt;
&lt;p&gt;If you are experiencing high CPU consumption, you can collect a CPU profile:&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;curl http://localhost:12345/debug/pprof/profile?seconds=30 -o cpu.pprof&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The &lt;code&gt;?seconds=30&lt;/code&gt; part of the URL above means the profiling continues for 30 seconds.&lt;/p&gt;
&lt;h2 id=&#34;continuous-profiling&#34;&gt;Continuous profiling&lt;/h2&gt;
&lt;p&gt;You don&amp;rsquo;t have to send manual &lt;code&gt;curl&lt;/code&gt; commands each time you want to collect profiles.
You can also profile continuously using the &lt;a href=&#34;../../reference/components/pyroscope/&#34;&gt;pyroscope components&lt;/a&gt; in Alloy.&lt;/p&gt;
&lt;p&gt;If you have very few Alloy instances, you can even configure them to profile themselves.
However, if you have a large cluster of collectors, it&amp;rsquo;s best to set up Alloy instances whose sole job is to profile other Alloy instances.&lt;/p&gt;
&lt;p&gt;The following is an example of an Alloy instance profiling itself:&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;Alloy&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-alloy&#34;&gt;pyroscope.scrape &amp;#34;default&amp;#34; {
  targets    = [{&amp;#34;__address__&amp;#34; = &amp;#34;localhost:12345&amp;#34;, &amp;#34;service_name&amp;#34;=&amp;#34;alloy&amp;#34;}]
  forward_to = [pyroscope.write.default.receiver]
}

pyroscope.write &amp;#34;default&amp;#34; {
  endpoint {
    url = &amp;#34;https://profiles-prod-014.grafana.net&amp;#34;
    basic_auth {
      username = sys.env(&amp;#34;PYROSCOPE_USERNAME&amp;#34;)
      password = sys.env(&amp;#34;PYROSCOPE_PASSWORD&amp;#34;)
    }
  }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;expected-resource-consumption&#34;&gt;Expected resource consumption&lt;/h2&gt;
&lt;p&gt;Refer to &lt;a href=&#34;../../introduction/estimate-resource-usage/&#34;&gt;Estimate resource usage&lt;/a&gt; for more information about the expected resource consumption in Alloy.&lt;/p&gt;
&lt;h2 id=&#34;alloy-consumes-an-abnormally-large-amount-of-resources&#34;&gt;Alloy consumes an abnormally large amount of resources&lt;/h2&gt;
&lt;p&gt;If Alloy consumes an abnormally large amount of resources, you can open an issue in the &lt;a href=&#34;https://github.com/grafana/alloy/issues/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Alloy repository&lt;/a&gt;.
Attach your pprof files and your Alloy configuration file.
Make sure you redact any secrets in the attachments.&lt;/p&gt;
]]></content><description>&lt;h1 id="profile-grafana-alloy-resource-consumption">Profile Grafana Alloy resource consumption&lt;/h1>
&lt;p>Alloy is written in the Go programming language, which offers &lt;a href="https://pkg.go.dev/net/http/pprof/" target="_blank" rel="noopener noreferrer">built-in&lt;/a> support for profiling.
Like other applications written in Go, you can profile Alloy by sending an HTTP request, which returns a pprof Go profile.&lt;/p></description></item><item><title>Debug Grafana Alloy</title><link>https://grafana.com/docs/alloy/v1.15/troubleshoot/debug/</link><pubDate>Mon, 30 Mar 2026 15:47:22 +0000</pubDate><guid>https://grafana.com/docs/alloy/v1.15/troubleshoot/debug/</guid><content><![CDATA[&lt;h1 id=&#34;debug-grafana-alloy&#34;&gt;Debug Grafana Alloy&lt;/h1&gt;
&lt;p&gt;Follow these steps to debug issues with Alloy:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Use the Alloy UI to debug issues.&lt;/li&gt;
&lt;li&gt;If the Alloy UI doesn&amp;rsquo;t help with debugging an issue, you can examine the logs.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;alloy-ui&#34;&gt;Alloy UI&lt;/h2&gt;
&lt;p&gt;Alloy includes an embedded UI viewable from the Alloy HTTP server, which defaults to listening at &lt;code&gt;http://localhost:12345&lt;/code&gt;.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;For security reasons, installations of Alloy on non-containerized platforms default to listening on &lt;code&gt;localhost&lt;/code&gt;.
This default prevents other machines on the network from being able to view the UI.&lt;/p&gt;
&lt;p&gt;To expose the UI to other machines on the network on non-containerized platforms, refer to the documentation for how you &lt;a href=&#34;../../set-up/install/&#34;&gt;installed&lt;/a&gt; Alloy.&lt;/p&gt;
&lt;p&gt;If you are running a custom installation of Alloy, refer to the documentation for the &lt;a href=&#34;../../reference/cli/run/&#34;&gt;&lt;code&gt;run&lt;/code&gt;&lt;/a&gt; command to learn how to change the HTTP listen address and pass the appropriate flag when running Alloy.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h3 id=&#34;home-page&#34;&gt;Home page&lt;/h3&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p &#34;
    style=&#34;max-width: 1787px;&#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/ui_home_page.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/ui_home_page.png&#34;data-srcset=&#34;/media/docs/alloy/ui_home_page.png?w=320 320w, /media/docs/alloy/ui_home_page.png?w=550 550w, /media/docs/alloy/ui_home_page.png?w=750 750w, /media/docs/alloy/ui_home_page.png?w=900 900w, /media/docs/alloy/ui_home_page.png?w=1040 1040w, /media/docs/alloy/ui_home_page.png?w=1240 1240w, /media/docs/alloy/ui_home_page.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;Alloy UI home page&#34;width=&#34;1787&#34;height=&#34;945&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/media/docs/alloy/ui_home_page.png&#34;
            alt=&#34;Alloy UI home page&#34;width=&#34;1787&#34;height=&#34;945&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;The home page shows a table of components defined in the configuration file and their health.&lt;/p&gt;
&lt;p&gt;Click &lt;strong&gt;View&lt;/strong&gt; on a row in the table to navigate to the &lt;a href=&#34;#component-detail-page&#34;&gt;Component detail page&lt;/a&gt; for that component.&lt;/p&gt;
&lt;p&gt;Click the Alloy logo to navigate back to the home page.&lt;/p&gt;
&lt;h3 id=&#34;graph-page&#34;&gt;Graph page&lt;/h3&gt;


&lt;div data-shared=&#34;stability/experimental_feature.md&#34;&gt;
            &lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;EXPERIMENTAL&lt;/strong&gt;: This 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.
To enable and use an experimental feature, you must set the &lt;code&gt;stability.level&lt;/code&gt; 
    &lt;a href=&#34;/docs/alloy/v1.15/reference/cli/run/&#34;&gt;flag&lt;/a&gt; to &lt;code&gt;experimental&lt;/code&gt;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;/div&gt;

        
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p &#34;
    style=&#34;max-width: 2540px;&#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/ui_graph_page_new_2.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/ui_graph_page_new_2.png&#34;data-srcset=&#34;/media/docs/alloy/ui_graph_page_new_2.png?w=320 320w, /media/docs/alloy/ui_graph_page_new_2.png?w=550 550w, /media/docs/alloy/ui_graph_page_new_2.png?w=750 750w, /media/docs/alloy/ui_graph_page_new_2.png?w=900 900w, /media/docs/alloy/ui_graph_page_new_2.png?w=1040 1040w, /media/docs/alloy/ui_graph_page_new_2.png?w=1240 1240w, /media/docs/alloy/ui_graph_page_new_2.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;Alloy UI graph page&#34;width=&#34;2540&#34;height=&#34;1226&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/media/docs/alloy/ui_graph_page_new_2.png&#34;
            alt=&#34;Alloy UI graph page&#34;width=&#34;2540&#34;height=&#34;1226&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;The &lt;strong&gt;Graph&lt;/strong&gt; page shows a graph view of components defined in the configuration file.
Clicking a component in the graph navigates to the &lt;a href=&#34;#component-detail-page&#34;&gt;Component detail page&lt;/a&gt; for that component.&lt;/p&gt;
&lt;p&gt;You can click and drag the components to move them around.&lt;/p&gt;
&lt;p&gt;To access the graph page of a module, click on the &lt;strong&gt;Graph&lt;/strong&gt; button on the module&amp;rsquo;s detail page.&lt;/p&gt;
&lt;p&gt;The amount of data that exits a component that supports &lt;a href=&#34;#live-debugging-page&#34;&gt;live debugging&lt;/a&gt; is shown on the outgoing edges of the component.
The data is refreshed according to the &lt;code&gt;window&lt;/code&gt; parameter.&lt;/p&gt;
&lt;h3 id=&#34;component-detail-page&#34;&gt;Component detail page&lt;/h3&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p &#34;
    style=&#34;max-width: 1791px;&#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/ui_component_detail_page_2.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/ui_component_detail_page_2.png&#34;data-srcset=&#34;/media/docs/alloy/ui_component_detail_page_2.png?w=320 320w, /media/docs/alloy/ui_component_detail_page_2.png?w=550 550w, /media/docs/alloy/ui_component_detail_page_2.png?w=750 750w, /media/docs/alloy/ui_component_detail_page_2.png?w=900 900w, /media/docs/alloy/ui_component_detail_page_2.png?w=1040 1040w, /media/docs/alloy/ui_component_detail_page_2.png?w=1240 1240w, /media/docs/alloy/ui_component_detail_page_2.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;Alloy UI component detail page&#34;width=&#34;1791&#34;height=&#34;1132&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/media/docs/alloy/ui_component_detail_page_2.png&#34;
            alt=&#34;Alloy UI component detail page&#34;width=&#34;1791&#34;height=&#34;1132&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;The component detail page shows the following information for each component:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The health of the component with a message explaining the health.&lt;/li&gt;
&lt;li&gt;The current evaluated arguments for the component.&lt;/li&gt;
&lt;li&gt;The current exports for the component.&lt;/li&gt;
&lt;li&gt;The current debug info for the component if the component has debug info.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;From there you can also go to the component documentation or to its corresponding &lt;a href=&#34;#live-debugging-page&#34;&gt;Live Debugging page&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;Values marked as a &lt;a href=&#34;../../get-started/configuration-syntax/expressions/types_and_values/#secrets&#34;&gt;secret&lt;/a&gt; display only as the text &lt;code&gt;(secret)&lt;/code&gt;.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h3 id=&#34;clustering-page&#34;&gt;Clustering page&lt;/h3&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p &#34;
    style=&#34;max-width: 1787px;&#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/ui_clustering_page.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/ui_clustering_page.png&#34;data-srcset=&#34;/media/docs/alloy/ui_clustering_page.png?w=320 320w, /media/docs/alloy/ui_clustering_page.png?w=550 550w, /media/docs/alloy/ui_clustering_page.png?w=750 750w, /media/docs/alloy/ui_clustering_page.png?w=900 900w, /media/docs/alloy/ui_clustering_page.png?w=1040 1040w, /media/docs/alloy/ui_clustering_page.png?w=1240 1240w, /media/docs/alloy/ui_clustering_page.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;Alloy UI clustering page&#34;width=&#34;1787&#34;height=&#34;945&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/media/docs/alloy/ui_clustering_page.png&#34;
            alt=&#34;Alloy UI clustering page&#34;width=&#34;1787&#34;height=&#34;945&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;The clustering page shows the following information for each cluster node:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The node&amp;rsquo;s name.&lt;/li&gt;
&lt;li&gt;The node&amp;rsquo;s advertised address.&lt;/li&gt;
&lt;li&gt;The node&amp;rsquo;s current state: Viewer, Participant, or Terminating.&lt;/li&gt;
&lt;li&gt;The local node that serves the UI.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;live-debugging-page&#34;&gt;Live Debugging page&lt;/h3&gt;
&lt;figure
    class=&#34;figure-wrapper figure-wrapper__lightbox w-100p &#34;
    style=&#34;max-width: 1791px;&#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/ui_live_debugging_page.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/ui_live_debugging_page.png&#34;data-srcset=&#34;/media/docs/alloy/ui_live_debugging_page.png?w=320 320w, /media/docs/alloy/ui_live_debugging_page.png?w=550 550w, /media/docs/alloy/ui_live_debugging_page.png?w=750 750w, /media/docs/alloy/ui_live_debugging_page.png?w=900 900w, /media/docs/alloy/ui_live_debugging_page.png?w=1040 1040w, /media/docs/alloy/ui_live_debugging_page.png?w=1240 1240w, /media/docs/alloy/ui_live_debugging_page.png?w=1920 1920w&#34;data-sizes=&#34;auto&#34;alt=&#34;Alloy UI live debugging page&#34;width=&#34;1791&#34;height=&#34;1190&#34;/&gt;
        &lt;noscript&gt;
          &lt;img
            src=&#34;/media/docs/alloy/ui_live_debugging_page.png&#34;
            alt=&#34;Alloy UI live debugging page&#34;width=&#34;1791&#34;height=&#34;1190&#34;/&gt;
        &lt;/noscript&gt;&lt;/div&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;Live debugging provides a real-time stream of debugging data from a component. You can access this page from the corresponding &lt;a href=&#34;#component-detail-page&#34;&gt;Component detail page&lt;/a&gt;.&lt;/p&gt;


&lt;div class=&#34;admonition admonition-caution&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Caution&lt;/p&gt;&lt;p&gt;Live debugging defaults to disabled to avoid accidentally displaying sensitive telemetry data. To enable live debugging, configure the &lt;a href=&#34;../../reference/config-blocks/livedebugging/&#34;&gt;&lt;code&gt;livedebugging&lt;/code&gt;&lt;/a&gt; block.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;Live debugging allows you to do the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pause and clear the data stream.&lt;/li&gt;
&lt;li&gt;Sample data and disable auto-scrolling to handle heavy loads.&lt;/li&gt;
&lt;li&gt;Search through the data using keywords.&lt;/li&gt;
&lt;li&gt;Copy the entire data stream to the clipboard.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The format and content of the debugging data vary depending on the component type.&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;Live debugging isn&amp;rsquo;t yet available in all components.&lt;/p&gt;
&lt;p&gt;Supported components:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;loki.process&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;loki.relabel&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;loki.secretfilter&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;otelcol.connector.*&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;otelcol.processor.*&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;otelcol.receiver.*&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;prometheus.remote_write&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;prometheus.relabel&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;discovery.*&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;prometheus.scrape&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;h2 id=&#34;debug-using-the-ui&#34;&gt;Debug using the UI&lt;/h2&gt;
&lt;p&gt;To debug using the UI:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ensure that no component reports as unhealthy.&lt;/li&gt;
&lt;li&gt;Ensure that the arguments and exports for misbehaving components appear correct.&lt;/li&gt;
&lt;li&gt;Ensure that the live debugging data meets your expectations.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;examine-logs&#34;&gt;Examine logs&lt;/h2&gt;
&lt;p&gt;Alloy provides different log levels that help you determine the root cause of issues.
You can configure the log level using the &lt;a href=&#34;../../reference/config-blocks/logging/&#34;&gt;&lt;code&gt;logging&lt;/code&gt;&lt;/a&gt; configuration block in your Alloy configuration file.&lt;/p&gt;
&lt;p&gt;Logs from Alloy are written in &lt;code&gt;logfmt&lt;/code&gt; format by default.
You can configure the &lt;a href=&#34;../../reference/config-blocks/logging/#log-format&#34;&gt;log format&lt;/a&gt; to be either &lt;code&gt;logfmt&lt;/code&gt; or &lt;code&gt;json&lt;/code&gt;.
You can &lt;a href=&#34;../../reference/config-blocks/logging/#retrieve-logs&#34;&gt;retrieve&lt;/a&gt; the logs in different ways depending on your platform and installation method.&lt;/p&gt;
&lt;h3 id=&#34;common-log-messages&#34;&gt;Common log messages&lt;/h3&gt;
&lt;p&gt;The following log messages are normal during Alloy operation:&lt;/p&gt;
&lt;h4 id=&#34;component-lifecycle-messages&#34;&gt;Component lifecycle messages&lt;/h4&gt;
&lt;p&gt;During normal startup and operation, you&amp;rsquo;ll see messages about component lifecycle:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Component startup and initialization:&lt;/strong&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;text&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-text&#34;&gt;level=info msg=&amp;#34;starting controller&amp;#34;
level=info msg=&amp;#34;starting server&amp;#34;
level=info msg=&amp;#34;starting server&amp;#34; addr=localhost:8080
level=info msg=&amp;#34;started scheduled components&amp;#34;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;div class=&#34;admonition admonition-note&#34;&gt;&lt;blockquote&gt;&lt;p class=&#34;title text-uppercase&#34;&gt;Note&lt;/p&gt;&lt;p&gt;The &lt;code&gt;starting server&lt;/code&gt; messages refer to the built-in &lt;a href=&#34;../../reference/config-blocks/http/&#34;&gt;HTTP server&lt;/a&gt; that hosts the debugging UI, &lt;code&gt;/metrics&lt;/code&gt; endpoint, and other debugging endpoints.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Component updates and configuration changes:&lt;/strong&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;text&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-text&#34;&gt;level=info msg=&amp;#34;configuration loaded&amp;#34;
level=info msg=&amp;#34;module content loaded&amp;#34;
level=info msg=&amp;#34;started scheduled components&amp;#34;
level=info msg=&amp;#34;terminating server&amp;#34;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Component health reporting:&lt;/strong&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;text&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-text&#34;&gt;level=info msg=&amp;#34;started scheduled components&amp;#34;
level=warn msg=&amp;#34;failed to start scheduled component&amp;#34; err=&amp;#34;connection refused&amp;#34;
level=warn msg=&amp;#34;the discovery.process component only works on linux; enabling it otherwise will do nothing&amp;#34;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h4 id=&#34;cluster-operation-messages&#34;&gt;Cluster operation messages&lt;/h4&gt;
&lt;p&gt;If you enable clustering, you&amp;rsquo;ll see messages about cluster operations:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Normal startup and peer discovery:&lt;/strong&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;text&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-text&#34;&gt;level=info msg=&amp;#34;starting cluster node&amp;#34; peers_count=2 peers=192.168.1.10:12345,192.168.1.11:12345 advertise_addr=192.168.1.12:12345
level=info msg=&amp;#34;using provided peers for discovery&amp;#34; join_peers=&amp;#34;192.168.1.10:12345, 192.168.1.11:12345&amp;#34;
level=info msg=&amp;#34;discovered peers&amp;#34; peers_count=3 peers=192.168.1.10:12345,192.168.1.11:12345,192.168.1.12:12345
level=info msg=&amp;#34;rejoining peers&amp;#34; peers_count=2 peers=192.168.1.10:12345,192.168.1.11:12345&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Cluster size management:&lt;/strong&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;text&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-text&#34;&gt;level=info msg=&amp;#34;minimum cluster size reached, marking cluster as ready to admit traffic&amp;#34; minimum_cluster_size=3 peers_count=3
level=warn msg=&amp;#34;minimum cluster size requirements are not met - marking cluster as not ready for traffic&amp;#34; minimum_cluster_size=3 minimum_size_wait_timeout=5m0s peers_count=2
level=warn msg=&amp;#34;deadline passed, marking cluster as ready to admit traffic&amp;#34; minimum_cluster_size=3 minimum_size_wait_timeout=5m0s peers_count=2&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Normal cluster operations:&lt;/strong&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;text&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-text&#34;&gt;level=debug msg=&amp;#34;found an IP cluster join address&amp;#34; addr=192.168.1.10:12345
level=debug msg=&amp;#34;received DNS query response&amp;#34; addr=cluster.example.com record_type=A records_count=3&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h4 id=&#34;expected-warnings&#34;&gt;Expected warnings&lt;/h4&gt;
&lt;p&gt;Some warnings are normal during startup or cluster changes:&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;text&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-text&#34;&gt;level=warn msg=&amp;#34;failed to get peers to join at startup; will create a new cluster&amp;#34; err=&amp;#34;no peers available&amp;#34;
level=warn msg=&amp;#34;failed to connect to peers; bootstrapping a new cluster&amp;#34; err=&amp;#34;connection refused&amp;#34;
level=warn msg=&amp;#34;failed to resolve provided join address&amp;#34; addr=unavailable-node:12345&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h4 id=&#34;problematic-messages&#34;&gt;Problematic messages&lt;/h4&gt;
&lt;p&gt;These messages indicate issues that require attention:&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;text&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-text&#34;&gt;level=error msg=&amp;#34;failed to bootstrap a fresh cluster with no peers&amp;#34; err=&amp;#34;bind: address already in use&amp;#34;
level=error msg=&amp;#34;failed to rejoin list of peers&amp;#34; err=&amp;#34;connection timeout&amp;#34;
level=warn msg=&amp;#34;failed to refresh list of peers&amp;#34; err=&amp;#34;dns resolution failed&amp;#34;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;debug-clustering-issues&#34;&gt;Debug clustering issues&lt;/h2&gt;
&lt;p&gt;To debug issues when using &lt;a href=&#34;../../get-started/clustering/&#34;&gt;clustering&lt;/a&gt;, check for the following symptoms.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cluster not converging&lt;/strong&gt;: The cluster peers aren&amp;rsquo;t converging on the same view of their peers&amp;rsquo; status.
This is most likely due to network connectivity issues between the cluster nodes.
Use the Alloy UI of each running peer to understand which nodes aren&amp;rsquo;t picked up correctly.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cluster split brain&lt;/strong&gt;: The cluster peers aren&amp;rsquo;t aware of one another, thinking they&amp;rsquo;re the only node present.
Again, check for network connectivity issues.
Check that the addresses or DNS names given to the node to join are correctly formatted and reachable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configuration drift&lt;/strong&gt;: Clustering assumes that all nodes are running with the same configuration file at roughly the same time.
Check the logs for issues with the reloaded configuration file as well as the graph page to verify that the changes are applied.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Node name conflicts&lt;/strong&gt;: Clustering assumes all nodes have unique names.
The cluster rejects nodes with conflicting names and they won&amp;rsquo;t join the cluster.
Look at the clustering UI page for the list of current peers with their names, and check the logs for any reported name conflict events.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Node stuck in terminating state&lt;/strong&gt;: The node attempted to gracefully shut down and set its state to Terminating, but it hasn&amp;rsquo;t completely gone away.
Check the clustering page to view the state of the peers and verify that the terminating Alloy has been shut down.&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;Some issues that appear to be clustering issues may be symptoms of other issues, for example, problems with scraping or service discovery can result in missing metrics for an Alloy instance that you can interpret as a node not joining the cluster.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;

]]></content><description>&lt;h1 id="debug-grafana-alloy">Debug Grafana Alloy&lt;/h1>
&lt;p>Follow these steps to debug issues with Alloy:&lt;/p>
&lt;ol>
&lt;li>Use the Alloy UI to debug issues.&lt;/li>
&lt;li>If the Alloy UI doesn&amp;rsquo;t help with debugging an issue, you can examine the logs.&lt;/li>
&lt;/ol>
&lt;h2 id="alloy-ui">Alloy UI&lt;/h2>
&lt;p>Alloy includes an embedded UI viewable from the Alloy HTTP server, which defaults to listening at &lt;code>http://localhost:12345&lt;/code>.&lt;/p></description></item></channel></rss>