<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Remote configuration on Grafana Labs</title><link>https://grafana.com/docs/learning-hub/intro-to-fleet-management/02-remote-configuration/</link><description>Recent content in Remote configuration on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/learning-hub/intro-to-fleet-management/02-remote-configuration/index.xml" rel="self" type="application/rss+xml"/><item><title>The scaling challenge</title><link>https://grafana.com/docs/learning-hub/intro-to-fleet-management/02-remote-configuration/13-scaling-challenge/</link><pubDate>Tue, 18 Aug 2026 05:43:38 -0700</pubDate><guid>https://grafana.com/docs/learning-hub/intro-to-fleet-management/02-remote-configuration/13-scaling-challenge/</guid><content><![CDATA[&lt;h1 id=&#34;the-scaling-challenge&#34;&gt;The scaling challenge&lt;/h1&gt;
&lt;p&gt;Say you need to add a new metrics scrape to your collectors, maybe you&amp;rsquo;re rolling out a new integration or collecting extra data to troubleshoot an incident. With the manual approach, you access each machine, edit its configuration file, and reload the collector, then repeat for the next one. For 5 collectors that&amp;rsquo;s tedious. For 50 it&amp;rsquo;s most of a day. For 500 it&amp;rsquo;s impossible to do consistently.&lt;/p&gt;
&lt;p&gt;Configuration management tools like Ansible or Terraform help, but they don&amp;rsquo;t remove the work. You&amp;rsquo;re still managing deployments, testing changes, and coordinating rollouts, so every configuration change becomes its own project.&lt;/p&gt;

&lt;div class=&#34;learning-hub-image&#34;&gt;
  &lt;a href=&#34;fleet-management-scaling-challenge.svg&#34; title=&#34;The scaling challenge: manual approach vs remote configuration&#34;&gt;
    &lt;img
      
      
      class=&#34;d-inline-block&#34;
      src=&#34;fleet-management-scaling-challenge.svg&#34;
      
      alt=&#34;The scaling challenge: manual approach vs remote configuration&#34; width=&#34;800&#34; height=&#34;400&#34;/&gt;
    &lt;div class=&#34;learning-hub-image__zoom&#34;&gt;
      &lt;svg width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;
        &lt;path d=&#34;M21 21L15 15M17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10Z&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
        &lt;path d=&#34;M10 7V13M7 10H13&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34;/&gt;
      &lt;/svg&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;h2 id=&#34;how-remote-configuration-changes-this&#34;&gt;How remote configuration changes this&lt;/h2&gt;
&lt;p&gt;Remote configuration flips the model. You create a configuration pipeline once in Fleet Management and assign it to collectors by their attributes, such as all production collectors or everything in &lt;code&gt;us-east&lt;/code&gt;. The collectors pull the new configuration automatically on their next poll cycle.&lt;/p&gt;
&lt;h2 id=&#34;updates-per-change&#34;&gt;Updates per change&lt;/h2&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Approach&lt;/th&gt;
              &lt;th&gt;5 collectors&lt;/th&gt;
              &lt;th&gt;50 collectors&lt;/th&gt;
              &lt;th&gt;500 collectors&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Manual&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;5 updates&lt;/td&gt;
              &lt;td&gt;50 updates&lt;/td&gt;
              &lt;td&gt;500 updates&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Remote config&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;1 update&lt;/td&gt;
              &lt;td&gt;1 update&lt;/td&gt;
              &lt;td&gt;1 update&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Configure once, deploy everywhere.&lt;/strong&gt; One update reaches your entire fleet.&lt;/p&gt;&lt;/blockquote&gt;
]]></content><description>&lt;h1 id="the-scaling-challenge">The scaling challenge&lt;/h1>
&lt;p>Say you need to add a new metrics scrape to your collectors, maybe you&amp;rsquo;re rolling out a new integration or collecting extra data to troubleshoot an incident. With the manual approach, you access each machine, edit its configuration file, and reload the collector, then repeat for the next one. For 5 collectors that&amp;rsquo;s tedious. For 50 it&amp;rsquo;s most of a day. For 500 it&amp;rsquo;s impossible to do consistently.&lt;/p></description></item><item><title>Configuration pipelines</title><link>https://grafana.com/docs/learning-hub/intro-to-fleet-management/02-remote-configuration/14-configuration-pipelines/</link><pubDate>Tue, 18 Aug 2026 05:43:38 -0700</pubDate><guid>https://grafana.com/docs/learning-hub/intro-to-fleet-management/02-remote-configuration/14-configuration-pipelines/</guid><content><![CDATA[&lt;h1 id=&#34;configuration-pipelines&#34;&gt;Configuration pipelines&lt;/h1&gt;
&lt;p&gt;A &lt;strong&gt;configuration pipeline&lt;/strong&gt; is the unit you create in Fleet Management. When you configure a collector remotely, you&amp;rsquo;re creating at least one pipeline. Each pipeline holds standard collector configuration for a single operation, such as scraping MySQL metrics, built from components like &lt;code&gt;prometheus.scrape&lt;/code&gt;, &lt;code&gt;loki.source.file&lt;/code&gt;, or &lt;code&gt;prometheus.remote_write&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;You match a pipeline to collectors by their attributes. One pipeline can match many collectors, and one collector can match many pipelines. Each collector pulls the set of pipelines that match it, and that set is its &lt;strong&gt;remote configuration&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Each pipeline has a name, configuration content, and matching attributes.&lt;/p&gt;

&lt;div class=&#34;learning-hub-image&#34;&gt;
  &lt;a href=&#34;fleet-management-pipeline-anatomy.svg&#34; title=&#34;Anatomy of a configuration pipeline&#34;&gt;
    &lt;img
      
      
      class=&#34;d-inline-block&#34;
      src=&#34;fleet-management-pipeline-anatomy.svg&#34;
      
      alt=&#34;Anatomy of a configuration pipeline&#34; width=&#34;800&#34; height=&#34;340&#34;/&gt;
    &lt;div class=&#34;learning-hub-image__zoom&#34;&gt;
      &lt;svg width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;
        &lt;path d=&#34;M21 21L15 15M17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10Z&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
        &lt;path d=&#34;M10 7V13M7 10H13&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34;/&gt;
      &lt;/svg&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;h2 id=&#34;pipeline-components&#34;&gt;Pipeline components&lt;/h2&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Component&lt;/th&gt;
              &lt;th&gt;Description&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Unique identifier for the pipeline&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Content&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Standard collector components for one operation&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Matching attributes&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Rules that assign the pipeline to collectors&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Pipelines are reusable.&lt;/strong&gt; Create once, assign to many collectors using attribute matching.&lt;/p&gt;&lt;/blockquote&gt;
]]></content><description>&lt;h1 id="configuration-pipelines">Configuration pipelines&lt;/h1>
&lt;p>A &lt;strong>configuration pipeline&lt;/strong> is the unit you create in Fleet Management. When you configure a collector remotely, you&amp;rsquo;re creating at least one pipeline. Each pipeline holds standard collector configuration for a single operation, such as scraping MySQL metrics, built from components like &lt;code>prometheus.scrape&lt;/code>, &lt;code>loki.source.file&lt;/code>, or &lt;code>prometheus.remote_write&lt;/code>.&lt;/p></description></item><item><title>Working with pipelines</title><link>https://grafana.com/docs/learning-hub/intro-to-fleet-management/02-remote-configuration/15-working-with-pipelines/</link><pubDate>Tue, 18 Aug 2026 05:43:38 -0700</pubDate><guid>https://grafana.com/docs/learning-hub/intro-to-fleet-management/02-remote-configuration/15-working-with-pipelines/</guid><content><![CDATA[&lt;h1 id=&#34;creating-pipelines&#34;&gt;Creating pipelines&lt;/h1&gt;
&lt;p&gt;There are two ways to create a pipeline. Start from a Grafana Cloud integration to get going quickly, or write your own configuration from scratch when you have specific requirements.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Approach&lt;/th&gt;
              &lt;th&gt;Best for&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Grafana Cloud integration&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Common use cases (Linux, MySQL, PostgreSQL)&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Custom configuration&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Specific requirements, custom scrapes&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;pipeline-operations&#34;&gt;Pipeline operations&lt;/h2&gt;
&lt;p&gt;Once a pipeline exists, several operations are available. Deactivate a pipeline to temporarily stop collecting certain metrics, edit its content at any time, or view its history, which is invaluable for troubleshooting.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Action&lt;/th&gt;
              &lt;th&gt;What it does&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Activate/Deactivate&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Toggle collection on/off instantly&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Edit&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Update configuration content&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;View history&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;See what changed and when&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;why-this-matters&#34;&gt;Why this matters&lt;/h2&gt;
&lt;p&gt;Create a pipeline once, match it to collectors with attributes, and Fleet Management distributes it. One pipeline can serve hundreds of collectors.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Instant changes&lt;/strong&gt;: Changes apply with no deployments or restarts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Safe experimentation&lt;/strong&gt;: Toggle off if something goes wrong.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Audit trail&lt;/strong&gt;: History shows what changed and when.&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="creating-pipelines">Creating pipelines&lt;/h1>
&lt;p>There are two ways to create a pipeline. Start from a Grafana Cloud integration to get going quickly, or write your own configuration from scratch when you have specific requirements.&lt;/p></description></item><item><title>Designing your attribute schema</title><link>https://grafana.com/docs/learning-hub/intro-to-fleet-management/02-remote-configuration/16-designing-attributes/</link><pubDate>Tue, 18 Aug 2026 05:43:38 -0700</pubDate><guid>https://grafana.com/docs/learning-hub/intro-to-fleet-management/02-remote-configuration/16-designing-attributes/</guid><content><![CDATA[&lt;h1 id=&#34;how-to-choose-your-attributes&#34;&gt;How to choose your attributes&lt;/h1&gt;
&lt;p&gt;A little planning up front saves a lot of pain later. Start by asking one question: &lt;strong&gt;&amp;ldquo;What groups of collectors should receive the same configuration?&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;To match a pipeline to&amp;hellip;&lt;/th&gt;
              &lt;th&gt;You need an attribute like&amp;hellip;&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;All production servers&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;env=production&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Collectors in specific regions&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;region=us-east&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Collectors owned by a team&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;team=platform&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Collectors for a specific service&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;service=api-gateway&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;
&lt;div class=&#34;learning-hub-image&#34;&gt;
  &lt;a href=&#34;fleet-management-attribute-schema.svg&#34; title=&#34;Start with one question&#34;&gt;
    &lt;img
      
      
      class=&#34;d-inline-block&#34;
      src=&#34;fleet-management-attribute-schema.svg&#34;
      
      alt=&#34;Start with one question&#34; width=&#34;800&#34; height=&#34;300&#34;/&gt;
    &lt;div class=&#34;learning-hub-image__zoom&#34;&gt;
      &lt;svg width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;
        &lt;path d=&#34;M21 21L15 15M17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10Z&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
        &lt;path d=&#34;M10 7V13M7 10H13&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34;/&gt;
      &lt;/svg&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;h2 id=&#34;common-attribute-patterns&#34;&gt;Common attribute patterns&lt;/h2&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Attribute&lt;/th&gt;
              &lt;th&gt;Example values&lt;/th&gt;
              &lt;th&gt;Use case&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;env&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;production&lt;/code&gt;, &lt;code&gt;staging&lt;/code&gt;, &lt;code&gt;dev&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Environment-specific configs&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;region&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;us-east&lt;/code&gt;, &lt;code&gt;eu-west&lt;/code&gt;, &lt;code&gt;ap-south&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Region-specific collection&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;team&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;platform&lt;/code&gt;, &lt;code&gt;backend&lt;/code&gt;, &lt;code&gt;data&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Team ownership&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;service&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;api&lt;/code&gt;, &lt;code&gt;web&lt;/code&gt;, &lt;code&gt;worker&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Service-specific monitoring&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Start simple.&lt;/strong&gt; Begin with &lt;code&gt;env&lt;/code&gt; and one or two others. Add more as patterns emerge from real usage.&lt;/p&gt;&lt;/blockquote&gt;
]]></content><description>&lt;h1 id="how-to-choose-your-attributes">How to choose your attributes&lt;/h1>
&lt;p>A little planning up front saves a lot of pain later. Start by asking one question: &lt;strong>&amp;ldquo;What groups of collectors should receive the same configuration?&amp;rdquo;&lt;/strong>&lt;/p></description></item><item><title>Attribute mistakes to avoid</title><link>https://grafana.com/docs/learning-hub/intro-to-fleet-management/02-remote-configuration/17-attribute-anti-patterns/</link><pubDate>Tue, 18 Aug 2026 05:43:38 -0700</pubDate><guid>https://grafana.com/docs/learning-hub/intro-to-fleet-management/02-remote-configuration/17-attribute-anti-patterns/</guid><content><![CDATA[&lt;h1 id=&#34;what-not-to-do&#34;&gt;What &lt;em&gt;not&lt;/em&gt; to do&lt;/h1&gt;
&lt;p&gt;Attributes should describe groups of collectors, not individual instances. Most mistakes come from ignoring that.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Mistake&lt;/th&gt;
              &lt;th&gt;Why it&amp;rsquo;s a problem&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;Too many attributes&lt;/td&gt;
              &lt;td&gt;Hard to manage, and hits the limits (22 local per API request, 100 remote per collector)&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Frequently changing values&lt;/td&gt;
              &lt;td&gt;Use remote attributes in UI instead&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Sensitive information&lt;/td&gt;
              &lt;td&gt;Attributes are visible in the Fleet Management UI&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Duplicating reserved attributes&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;collector.os&lt;/code&gt;, &lt;code&gt;collector.version&lt;/code&gt;, and &lt;code&gt;collector.ID&lt;/code&gt; already exist&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Inconsistent naming&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;myEnv&lt;/code&gt; vs &lt;code&gt;my_env&lt;/code&gt; vs &lt;code&gt;my-env&lt;/code&gt; causes confusion&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Overly specific values&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;hostname=server-123&lt;/code&gt; (use &lt;code&gt;collector.ID&lt;/code&gt; instead)&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;tips-for-beginners&#34;&gt;Tips for beginners&lt;/h2&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Tip&lt;/th&gt;
              &lt;th&gt;Why it helps&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Start simple&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Begin with &lt;code&gt;env&lt;/code&gt; and maybe one or two others&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Be consistent&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Pick a naming convention and stick to it&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Document your schema&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Note down what each attribute means&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Think about matching&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Every attribute should help you match pipelines to collectors&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;]]></content><description>&lt;h1 id="what-not-to-do">What &lt;em>not&lt;/em> to do&lt;/h1>
&lt;p>Attributes should describe groups of collectors, not individual instances. Most mistakes come from ignoring that.&lt;/p>
&lt;section class="expand-table-wrapper">&lt;div class="responsive-table-wrapper">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Mistake&lt;/th>
&lt;th>Why it&amp;rsquo;s a problem&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Too many attributes&lt;/td>
&lt;td>Hard to manage, and hits the limits (22 local per API request, 100 remote per collector)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Frequently changing values&lt;/td>
&lt;td>Use remote attributes in UI instead&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Sensitive information&lt;/td>
&lt;td>Attributes are visible in the Fleet Management UI&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Duplicating reserved attributes&lt;/td>
&lt;td>&lt;code>collector.os&lt;/code>, &lt;code>collector.version&lt;/code>, and &lt;code>collector.ID&lt;/code> already exist&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Inconsistent naming&lt;/td>
&lt;td>&lt;code>myEnv&lt;/code> vs &lt;code>my_env&lt;/code> vs &lt;code>my-env&lt;/code> causes confusion&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Overly specific values&lt;/td>
&lt;td>&lt;code>hostname=server-123&lt;/code> (use &lt;code>collector.ID&lt;/code> instead)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;/section>&lt;h2 id="tips-for-beginners">Tips for beginners&lt;/h2>
&lt;section class="expand-table-wrapper">&lt;div class="responsive-table-wrapper">
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Tip&lt;/th>
&lt;th>Why it helps&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Start simple&lt;/strong>&lt;/td>
&lt;td>Begin with &lt;code>env&lt;/code> and maybe one or two others&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Be consistent&lt;/strong>&lt;/td>
&lt;td>Pick a naming convention and stick to it&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Document your schema&lt;/strong>&lt;/td>
&lt;td>Note down what each attribute means&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Think about matching&lt;/strong>&lt;/td>
&lt;td>Every attribute should help you match pipelines to collectors&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>
&lt;/section></description></item><item><title>Attribute examples</title><link>https://grafana.com/docs/learning-hub/intro-to-fleet-management/02-remote-configuration/18-attribute-examples/</link><pubDate>Tue, 18 Aug 2026 05:43:38 -0700</pubDate><guid>https://grafana.com/docs/learning-hub/intro-to-fleet-management/02-remote-configuration/18-attribute-examples/</guid><content><![CDATA[&lt;h1 id=&#34;examples&#34;&gt;Examples&lt;/h1&gt;
&lt;p&gt;Seeing real configurations makes attributes concrete. These two Alloy examples move from a minimal starting schema to a more complete one for a larger deployment.&lt;/p&gt;
&lt;h2 id=&#34;example-1-minimal-starting-schema&#34;&gt;Example 1: Minimal starting schema&lt;/h2&gt;
&lt;p&gt;This example shows the recommended starting point for new Fleet Management users: just two attributes:&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;remotecfg {
    // ... other configuration ...
    
    attributes = {
        &amp;#34;env&amp;#34;  = &amp;#34;production&amp;#34;,   // Which environment: production, staging, or dev
        &amp;#34;team&amp;#34; = &amp;#34;platform&amp;#34;      // Who owns this collector
    }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Attribute&lt;/th&gt;
              &lt;th&gt;Value&lt;/th&gt;
              &lt;th&gt;What it means&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;env&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;production&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;This collector monitors production infrastructure.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;team&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;platform&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;The platform team owns and manages this collector.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;what-you-can-match-with-this-schema&#34;&gt;What you can match with this schema&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;All production collectors → &lt;code&gt;env=production&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;All collectors owned by platform team → &lt;code&gt;team=platform&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Production collectors owned by platform → &lt;code&gt;env=production, team=platform&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr /&gt;
&lt;h2 id=&#34;example-2-expanded-schema-for-larger-deployments&#34;&gt;Example 2: Expanded schema for larger deployments&lt;/h2&gt;
&lt;p&gt;As your fleet grows, you may need more precise matching. This example adds a region attribute:&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;remotecfg {
    // ... other configuration ...
    
    attributes = {
        &amp;#34;env&amp;#34;    = &amp;#34;production&amp;#34;,
        &amp;#34;region&amp;#34; = &amp;#34;us-east-1&amp;#34;,
        &amp;#34;team&amp;#34;   = &amp;#34;platform&amp;#34;
    }
}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Attribute&lt;/th&gt;
              &lt;th&gt;Value&lt;/th&gt;
              &lt;th&gt;What it means&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;env&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;production&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;This collector monitors production infrastructure.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;region&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;us-east-1&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;This collector is located in the US East region.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;team&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;platform&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;The platform team owns and manages this collector.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;what-you-can-match-with-this-schema-1&#34;&gt;What you can match with this schema&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;All US East collectors → &lt;code&gt;region=us-east-1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Production collectors in US East → &lt;code&gt;env=production, region=us-east-1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Platform team&amp;rsquo;s US East production collectors → all three attributes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Both examples define local attributes in the local configuration, but you can also set attributes through the Fleet Management API or the user interface. Notice the naming pattern in each: keys are lowercase with no spaces, and values are short, descriptive strings.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Start simple, expand as needed.&lt;/strong&gt; Begin with Example 1. Add more attributes when you need that level of matching precision.&lt;/p&gt;&lt;/blockquote&gt;
]]></content><description>&lt;h1 id="examples">Examples&lt;/h1>
&lt;p>Seeing real configurations makes attributes concrete. These two Alloy examples move from a minimal starting schema to a more complete one for a larger deployment.&lt;/p></description></item><item><title>Attribute matching</title><link>https://grafana.com/docs/learning-hub/intro-to-fleet-management/02-remote-configuration/19-attribute-matching/</link><pubDate>Tue, 18 Aug 2026 05:43:38 -0700</pubDate><guid>https://grafana.com/docs/learning-hub/intro-to-fleet-management/02-remote-configuration/19-attribute-matching/</guid><content><![CDATA[&lt;h1 id=&#34;attribute-matching&#34;&gt;Attribute matching&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Attribute matching&lt;/strong&gt; is the mechanism that connects pipelines to collectors. When you create a pipeline, you define matchers, which are rules that specify which collectors should receive that pipeline based on their attributes.&lt;/p&gt;
&lt;p&gt;Matchers determine which collectors receive a pipeline.&lt;/p&gt;

&lt;div class=&#34;learning-hub-image&#34;&gt;
  &lt;a href=&#34;fleet-management-attribute-matching.svg&#34; title=&#34;Attribute matching connects pipelines to collectors&#34;&gt;
    &lt;img
      
      
      class=&#34;d-inline-block&#34;
      src=&#34;fleet-management-attribute-matching.svg&#34;
      
      alt=&#34;Attribute matching connects pipelines to collectors&#34; width=&#34;800&#34; height=&#34;380&#34;/&gt;
    &lt;div class=&#34;learning-hub-image__zoom&#34;&gt;
      &lt;svg width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;
        &lt;path d=&#34;M21 21L15 15M17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10Z&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
        &lt;path d=&#34;M10 7V13M7 10H13&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34;/&gt;
      &lt;/svg&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;h2 id=&#34;how-matchers-work&#34;&gt;How matchers work&lt;/h2&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;You define&amp;hellip;&lt;/th&gt;
              &lt;th&gt;To match&amp;hellip;&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;env=production&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;All collectors with &lt;code&gt;env&lt;/code&gt; attribute set to &lt;code&gt;production&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;region=~&amp;quot;us-.*&amp;quot;&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;All collectors in any US region&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;matcher-syntax&#34;&gt;Matcher syntax&lt;/h2&gt;
&lt;p&gt;Each matcher combines an attribute name, an operator, and a value. Matchers follow the same syntax as Prometheus Alertmanager matchers, so they may look familiar.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Operator&lt;/th&gt;
              &lt;th&gt;Meaning&lt;/th&gt;
              &lt;th&gt;Example&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;=&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Equals&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;env=production&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;!=&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Not equals&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;env!=development&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;=~&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Regex match&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;region=~&amp;quot;us-.*&amp;quot;&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;!~&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;Regex not match&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;team!~&amp;quot;test-.*&amp;quot;&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;matching-rule-and-logic&#34;&gt;Matching rule: AND logic&lt;/h2&gt;
&lt;p&gt;When you assign multiple matchers to a pipeline, Fleet Management combines them with AND logic. All matchers must match for a collector to receive the pipeline.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Matchers defined&lt;/th&gt;
              &lt;th&gt;Collector receives pipeline if&amp;hellip;&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;env=prod&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;env&lt;/code&gt; is &lt;code&gt;prod&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;code&gt;env=prod&lt;/code&gt;, &lt;code&gt;region=us-east&lt;/code&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;env&lt;/code&gt; is &lt;code&gt;prod&lt;/code&gt; &lt;strong&gt;AND&lt;/strong&gt; &lt;code&gt;region&lt;/code&gt; is &lt;code&gt;us-east&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;This lets you be precise about which collectors receive a configuration. The more matchers you add, the narrower your matching becomes.&lt;/p&gt;
]]></content><description>&lt;h1 id="attribute-matching">Attribute matching&lt;/h1>
&lt;p>&lt;strong>Attribute matching&lt;/strong> is the mechanism that connects pipelines to collectors. When you create a pipeline, you define matchers, which are rules that specify which collectors should receive that pipeline based on their attributes.&lt;/p></description></item><item><title>Matching in practice</title><link>https://grafana.com/docs/learning-hub/intro-to-fleet-management/02-remote-configuration/20-matching-patterns/</link><pubDate>Tue, 18 Aug 2026 05:43:38 -0700</pubDate><guid>https://grafana.com/docs/learning-hub/intro-to-fleet-management/02-remote-configuration/20-matching-patterns/</guid><content><![CDATA[&lt;h1 id=&#34;common-patterns&#34;&gt;Common patterns&lt;/h1&gt;
&lt;p&gt;Because every collector carries its own attributes, you can organize your fleet along whatever dimensions fit: environment, region, team, service, or even Kubernetes namespace.&lt;/p&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Pattern&lt;/th&gt;
              &lt;th&gt;Matcher examples&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Environment-based&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;env=&amp;quot;production&amp;quot;&lt;/code&gt;, &lt;code&gt;env=&amp;quot;staging&amp;quot;&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Region-based&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;region=&amp;quot;us-east&amp;quot;&lt;/code&gt;, &lt;code&gt;region=&amp;quot;eu-west&amp;quot;&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Team-based&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;team=&amp;quot;platform&amp;quot;&lt;/code&gt;, &lt;code&gt;team=&amp;quot;backend&amp;quot;&lt;/code&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Catch-all&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;&lt;code&gt;collector.os=~&amp;quot;.&#43;&amp;quot;&lt;/code&gt; (matches all collectors)&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;example-production-platform-pipeline&#34;&gt;Example: Production platform pipeline&lt;/h2&gt;

&lt;div class=&#34;code-snippet code-snippet__mini&#34;&gt;&lt;div class=&#34;lang-toolbar__mini&#34;&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet code-snippet__border&#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-none&#34;&gt;Matchers: env=~&amp;#34;prod-.*&amp;#34;, team=&amp;#34;platform&amp;#34;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This pipeline applies to collectors where:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;env&lt;/code&gt; matches the regex &lt;code&gt;prod-.*&lt;/code&gt; &lt;strong&gt;AND&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;team&lt;/code&gt; equals &lt;code&gt;platform&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;limits-to-know&#34;&gt;Limits to know&lt;/h2&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Limit&lt;/th&gt;
              &lt;th&gt;Value&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;Matcher length&lt;/td&gt;
              &lt;td&gt;200 characters max (key &#43; operator &#43; value)&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;Local attributes per collector&lt;/td&gt;
              &lt;td&gt;22 max when polling&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;p&gt;These limits are generous for most use cases, but worth knowing as you design your schema.&lt;/p&gt;
]]></content><description>&lt;h1 id="common-patterns">Common patterns&lt;/h1>
&lt;p>Because every collector carries its own attributes, you can organize your fleet along whatever dimensions fit: environment, region, team, service, or even Kubernetes namespace.&lt;/p></description></item><item><title>Configuration strategies</title><link>https://grafana.com/docs/learning-hub/intro-to-fleet-management/02-remote-configuration/21-configuration-strategies/</link><pubDate>Tue, 18 Aug 2026 05:43:38 -0700</pubDate><guid>https://grafana.com/docs/learning-hub/intro-to-fleet-management/02-remote-configuration/21-configuration-strategies/</guid><content><![CDATA[&lt;h1 id=&#34;configuration-strategies&#34;&gt;Configuration strategies&lt;/h1&gt;
&lt;p&gt;Fleet Management gives you flexibility in how you balance local and remote configuration. You don&amp;rsquo;t have to go all-in on either approach. Choose the strategy that fits your situation.&lt;/p&gt;

&lt;div class=&#34;learning-hub-image&#34;&gt;
  &lt;a href=&#34;fleet-management-strategies.svg&#34; title=&#34;Three strategies for balancing local and remote configuration&#34;&gt;
    &lt;img
      
      
      class=&#34;d-inline-block&#34;
      src=&#34;fleet-management-strategies.svg&#34;
      
      alt=&#34;Three strategies for balancing local and remote configuration&#34; width=&#34;800&#34; height=&#34;300&#34;/&gt;
    &lt;div class=&#34;learning-hub-image__zoom&#34;&gt;
      &lt;svg width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;
        &lt;path d=&#34;M21 21L15 15M17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10Z&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
        &lt;path d=&#34;M10 7V13M7 10H13&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34;/&gt;
      &lt;/svg&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;h2 id=&#34;remote-first&#34;&gt;Remote-first&lt;/h2&gt;
&lt;p&gt;Minimal local config, everything else managed remotely. Best when a dedicated team manages observability and you want maximum central control over the fleet.&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;remotecfg {
    url = &amp;#34;https://...&amp;#34;
    // ... auth config
    id = constants.hostname
    attributes = {&amp;#34;env&amp;#34; = &amp;#34;prod&amp;#34;}
}

// Everything else comes from Fleet Management&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;local-first&#34;&gt;Local-first&lt;/h2&gt;
&lt;p&gt;Primary config stays local, Fleet Management for self-monitoring. Best when your main configuration is already managed through an existing deployment process and you want Fleet Management mainly for collector health.&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;// Local config: full configuration
remotecfg {
    url = &amp;#34;https://...&amp;#34;
    id = constants.hostname
    attributes = {&amp;#34;env&amp;#34; = &amp;#34;prod&amp;#34;}
}

// All your standard collection is here
prometheus.scrape &amp;#34;node&amp;#34; { /* ... */ }
prometheus.scrape &amp;#34;app&amp;#34; { /* ... */ }
loki.source.file &amp;#34;logs&amp;#34; { /* ... */ }

// Fleet Management used only for collector self-monitoring&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;hybrid&#34;&gt;Hybrid&lt;/h2&gt;
&lt;p&gt;Top-level config blocks stay local. Everything else is remote. Best when some configuration must stay local but your needs vary by environment, so the rest is easier to manage remotely.&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;// Local config: top-level blocks
logging { level = &amp;#34;info&amp;#34; }

livedebugging { enabled = true }

remotecfg {
    url = &amp;#34;https://...&amp;#34;
    id = constants.hostname
    attributes = {&amp;#34;env&amp;#34; = &amp;#34;prod&amp;#34;}
}

// All other config managed remotely in Fleet Management&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
]]></content><description>&lt;h1 id="configuration-strategies">Configuration strategies&lt;/h1>
&lt;p>Fleet Management gives you flexibility in how you balance local and remote configuration. You don&amp;rsquo;t have to go all-in on either approach. Choose the strategy that fits your situation.&lt;/p></description></item><item><title>Why it's safe to experiment</title><link>https://grafana.com/docs/learning-hub/intro-to-fleet-management/02-remote-configuration/22-safeguards/</link><pubDate>Tue, 18 Aug 2026 05:43:38 -0700</pubDate><guid>https://grafana.com/docs/learning-hub/intro-to-fleet-management/02-remote-configuration/22-safeguards/</guid><content><![CDATA[&lt;h1 id=&#34;safeguards&#34;&gt;Safeguards&lt;/h1&gt;
&lt;p&gt;Changing configuration across a fleet can feel risky. Nobody wants to push a bad config, stop data collection, or make an incident worse. Fleet Management is designed with safety in mind, with four safeguards that make it safe to experiment.&lt;/p&gt;

&lt;div class=&#34;learning-hub-image&#34;&gt;
  &lt;a href=&#34;fleet-management-safeguards.svg&#34; title=&#34;Experiment with confidence&#34;&gt;
    &lt;img
      
      
      class=&#34;d-inline-block&#34;
      src=&#34;fleet-management-safeguards.svg&#34;
      
      alt=&#34;Experiment with confidence&#34; width=&#34;800&#34; height=&#34;340&#34;/&gt;
    &lt;div class=&#34;learning-hub-image__zoom&#34;&gt;
      &lt;svg width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;
        &lt;path d=&#34;M21 21L15 15M17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10Z&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
        &lt;path d=&#34;M10 7V13M7 10H13&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34;/&gt;
      &lt;/svg&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;h2 id=&#34;four-safeguards&#34;&gt;Four safeguards&lt;/h2&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Safeguard&lt;/th&gt;
              &lt;th&gt;What it means&lt;/th&gt;
              &lt;th&gt;Why it matters&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Isolation&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Local and remote Alloy configs run independently&lt;/td&gt;
              &lt;td&gt;Remote errors don&amp;rsquo;t break local collection.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Fallback&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Invalid Alloy configs aren&amp;rsquo;t applied&lt;/td&gt;
              &lt;td&gt;Bad syntax doesn&amp;rsquo;t stop your collector.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Instant rollback&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Deactivate pipelines with one click&lt;/td&gt;
              &lt;td&gt;Recovery from any problem is fast.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Staged rollout&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Use matchers to limit how many collectors are affected&lt;/td&gt;
              &lt;td&gt;Test on one collector before fleet-wide.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;h2 id=&#34;what-happens-when-things-go-wrong&#34;&gt;What happens when things go wrong&lt;/h2&gt;
&lt;section class=&#34;expand-table-wrapper&#34;&gt;&lt;div class=&#34;responsive-table-wrapper&#34;&gt;
    &lt;table&gt;
      &lt;thead&gt;
          &lt;tr&gt;
              &lt;th&gt;Scenario&lt;/th&gt;
              &lt;th&gt;What Alloy does&lt;/th&gt;
              &lt;th&gt;Your action&lt;/th&gt;
          &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Syntax error in pipeline&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Rejects config, keeps last known good&lt;/td&gt;
              &lt;td&gt;Fix syntax, re-save pipeline.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Pipeline causes high load&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Runs but collector health dashboards show warning&lt;/td&gt;
              &lt;td&gt;Deactivate pipeline, investigate.&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
              &lt;td&gt;&lt;strong&gt;Wrong collectors matched&lt;/strong&gt;&lt;/td&gt;
              &lt;td&gt;Pipeline runs on unintended collectors&lt;/td&gt;
              &lt;td&gt;Update matchers, deactivate if needed.&lt;/td&gt;
          &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;
&lt;/section&gt;&lt;blockquote&gt;
&lt;p&gt;Isolation and automatic fallback are Grafana Alloy behaviors. The OpenTelemetry Collector merges local and remote configuration and doesn&amp;rsquo;t automatically roll back, so validate changes carefully when using it.&lt;/p&gt;&lt;/blockquote&gt;
]]></content><description>&lt;h1 id="safeguards">Safeguards&lt;/h1>
&lt;p>Changing configuration across a fleet can feel risky. Nobody wants to push a bad config, stop data collection, or make an incident worse. Fleet Management is designed with safety in mind, with four safeguards that make it safe to experiment.&lt;/p></description></item><item><title>Safe experimentation workflow</title><link>https://grafana.com/docs/learning-hub/intro-to-fleet-management/02-remote-configuration/23-safe-experimentation/</link><pubDate>Tue, 18 Aug 2026 05:43:38 -0700</pubDate><guid>https://grafana.com/docs/learning-hub/intro-to-fleet-management/02-remote-configuration/23-safe-experimentation/</guid><content><![CDATA[&lt;h1 id=&#34;safe-experimentation-workflow&#34;&gt;Safe experimentation workflow&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;Create pipeline&lt;/li&gt;
&lt;li&gt;Set matcher for ONE test collector (e.g., collector.ID=&amp;ldquo;test-collector-01&amp;rdquo;)&lt;/li&gt;
&lt;li&gt;Activate and verify (no errors, acceptable performance)&lt;/li&gt;
&lt;li&gt;Expand matcher to small group (e.g., env=&amp;ldquo;staging&amp;rdquo;)&lt;/li&gt;
&lt;li&gt;Verify at scale&lt;/li&gt;
&lt;li&gt;Expand to full target (e.g., env=&amp;ldquo;production&amp;rdquo;)&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;why-this-is-safe&#34;&gt;Why this is safe&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Isolation &#43; Fallback &#43; Instant rollback &#43; Staged rollout = Safe to experiment&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;You&amp;rsquo;re not gambling with production. You&amp;rsquo;re making controlled changes with multiple safety nets. Start small, verify, expand. If something goes wrong at any step, deactivate and try again. Recovery is fast and doesn&amp;rsquo;t require deployments or restarts.&lt;/p&gt;
&lt;h2 id=&#34;coming-up-next&#34;&gt;Coming up next&lt;/h2&gt;
&lt;p&gt;You&amp;rsquo;ll categorize your collector fleet in the path. You&amp;rsquo;ll assign attributes like &lt;code&gt;team&lt;/code&gt;, &lt;code&gt;service.name&lt;/code&gt;, and &lt;code&gt;env&lt;/code&gt;, the foundation that makes precise configuration and safe rollouts possible.&lt;/p&gt;
]]></content><description>&lt;h1 id="safe-experimentation-workflow">Safe experimentation workflow&lt;/h1>
&lt;ol>
&lt;li>Create pipeline&lt;/li>
&lt;li>Set matcher for ONE test collector (e.g., collector.ID=&amp;ldquo;test-collector-01&amp;rdquo;)&lt;/li>
&lt;li>Activate and verify (no errors, acceptable performance)&lt;/li>
&lt;li>Expand matcher to small group (e.g., env=&amp;ldquo;staging&amp;rdquo;)&lt;/li>
&lt;li>Verify at scale&lt;/li>
&lt;li>Expand to full target (e.g., env=&amp;ldquo;production&amp;rdquo;)&lt;/li>
&lt;/ol>
&lt;h2 id="why-this-is-safe">Why this is safe&lt;/h2>
&lt;blockquote>
&lt;p>&lt;strong>Isolation + Fallback + Instant rollback + Staged rollout = Safe to experiment&lt;/strong>&lt;/p></description></item><item><title>Categorize your collector fleet</title><link>https://grafana.com/docs/learning-hub/intro-to-fleet-management/02-remote-configuration/24-categorize-fleet-journey/</link><pubDate>Tue, 18 Aug 2026 05:43:38 -0700</pubDate><guid>https://grafana.com/docs/learning-hub/intro-to-fleet-management/02-remote-configuration/24-categorize-fleet-journey/</guid><content><![CDATA[&lt;h1 id=&#34;categorize-your-collector-fleet&#34;&gt;Categorize your collector fleet&lt;/h1&gt;









  
    
  
  
    
  
&lt;div class=&#34;learning-path-card&#34;&gt;
  




  
  
    
  


&lt;div class=&#34;pathway-row__label mb-1&#34;&gt;
  
  &lt;svg width=&#34;40&#34; height=&#34;40&#34; viewBox=&#34;0 0 40 40&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;&lt;rect x=&#34;0.5&#34; y=&#34;0.5&#34; width=&#34;39&#34; height=&#34;39&#34; rx=&#34;3.5&#34; fill=&#34;white&#34; stroke=&#34;#D8D8DF&#34;&gt;&lt;/rect&gt;&lt;path d=&#34;M8 20H14C16.5 20 18.5 18 18.5 15.5V12&#34; stroke=&#34;#FF671D&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&lt;/path&gt;&lt;path d=&#34;M8 20H14C16.5 20 18.5 22 18.5 24.5V28&#34; stroke=&#34;#FF671D&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&lt;/path&gt;&lt;path d=&#34;M14 20H32&#34; stroke=&#34;#FF671D&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&lt;/path&gt;&lt;circle cx=&#34;18.5&#34; cy=&#34;12&#34; r=&#34;2&#34; stroke=&#34;#FF671D&#34; stroke-width=&#34;2&#34; fill=&#34;white&#34;&gt;&lt;/circle&gt;&lt;circle cx=&#34;18.5&#34; cy=&#34;28&#34; r=&#34;2&#34; stroke=&#34;#FF671D&#34; stroke-width=&#34;2&#34; fill=&#34;white&#34;&gt;&lt;/circle&gt;&lt;path d=&#34;M29 17L32 20L29 23&#34; stroke=&#34;#FF671D&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;&gt;&lt;/path&gt;&lt;/svg&gt;

  Learning path
&lt;/div&gt;

&lt;h4&gt;Categorize a collector fleet&lt;/h4&gt;
&lt;p&gt;Welcome to the Grafana Fleet Management learning path that shows you how to organize and categorize your collector fleet using custom attributes for remote configuration. Learn to categorize your infrastructure with meaningful attributes that answer critical questions such as who owns this collector, which service does it support, and where is it running.&lt;/p&gt;

&lt;div class=&#34;d-sm-flex gap-half mb-2&#34;&gt;
  &lt;div class=&#34;d-flex align-items-center gap-half text-gray-12 mt-half body-small&#34;&gt;
    &lt;div class=&#34;journey-list__icon&#34;&gt;
  &lt;svg width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;
  &lt;path fill-rule=&#34;evenodd&#34; clip-rule=&#34;evenodd&#34; d=&#34;M11.9995 22.5039C17.7985 22.5039 22.4995 17.8029 22.4995 12.0039C22.4995 6.20492 17.7985 1.50391 11.9995 1.50391C6.20052 1.50391 1.49951 6.20492 1.49951 12.0039C1.49951 17.8029 6.20052 22.5039 11.9995 22.5039Z&#34; stroke=&#34;#FF671D&#34; stroke-width=&#34;1.5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
  &lt;path d=&#34;M11.9995 12.0039V8.25391&#34; stroke=&#34;#FF671D&#34; stroke-width=&#34;1.5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
  &lt;path d=&#34;M11.9995 12.0078L16.6865 16.6958&#34; stroke=&#34;#FF671D&#34; stroke-width=&#34;1.5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
&lt;/svg&gt;
&lt;/div&gt;
    &lt;span&gt;9 min&lt;/span&gt;
  &lt;/div&gt;
  
  &lt;div class=&#34;d-flex align-items-center gap-half text-gray-12 mt-half body-small&#34;&gt;
    &lt;div class=&#34;journey-list__icon&#34;&gt;
  &lt;svg width=&#34;24&#34; height=&#34;25&#34; viewBox=&#34;0 0 24 25&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;
  &lt;path fill-rule=&#34;evenodd&#34; clip-rule=&#34;evenodd&#34; d=&#34;M0.75 9.83984C0.75 7.6307 2.54086 5.83984 4.75 5.83984H19.25C21.4591 5.83984 23.25 7.6307 23.25 9.83984V19.1198C23.25 21.329 21.4591 23.1198 19.25 23.1198H4.75C2.54086 23.1198 0.75 21.329 0.75 19.1198V9.83984Z&#34; stroke=&#34;#FF671D&#34; stroke-width=&#34;1.5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
  &lt;path fill-rule=&#34;evenodd&#34; clip-rule=&#34;evenodd&#34; d=&#34;M14.25 1.52344H9.75C8.92157 1.52344 8.25 2.16815 8.25 2.96344V5.84344H15.75V2.96344C15.75 2.16815 15.0784 1.52344 14.25 1.52344Z&#34; stroke=&#34;#FF671D&#34; stroke-width=&#34;1.5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
  &lt;path fill-rule=&#34;evenodd&#34; clip-rule=&#34;evenodd&#34; d=&#34;M12 15.923C12.8284 15.923 13.5 15.2783 13.5 14.483C13.5 13.6877 12.8284 13.043 12 13.043C11.1716 13.043 10.5 13.6877 10.5 14.483C10.5 15.2783 11.1716 15.923 12 15.923Z&#34; stroke=&#34;#FF671D&#34; stroke-width=&#34;1.5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
  &lt;path fill-rule=&#34;evenodd&#34; clip-rule=&#34;evenodd&#34; d=&#34;M13.2742 8.91315L13.7162 10.309C13.8671 10.7897 14.3806 11.0756 14.8902 10.9628L16.3622 10.6354C16.9349 10.5115 17.5249 10.7602 17.8175 11.2488C18.11 11.7374 18.037 12.3519 17.6372 12.7647L16.6062 13.8312C16.2493 14.1997 16.2493 14.7703 16.6062 15.1388L17.6372 16.2053C18.0379 16.6179 18.1115 17.2331 17.8188 17.7222C17.526 18.2113 16.9353 18.4601 16.3622 18.3356L14.8902 18.0082C14.3806 17.8953 13.8671 18.1812 13.7162 18.662L13.2742 20.0559C13.1055 20.5961 12.5877 20.9661 12.0002 20.9661C11.4128 20.9661 10.8949 20.5961 10.7262 20.0559L10.2842 18.661C10.1333 18.1803 9.61982 17.8944 9.11021 18.0072L7.63821 18.3346C7.06469 18.4597 6.47325 18.2109 6.18034 17.7213C5.88742 17.2317 5.96161 16.6159 6.36321 16.2034L7.39421 15.1368C7.75116 14.7684 7.75116 14.1978 7.39421 13.8293L6.36321 12.7628C5.96346 12.35 5.89039 11.7354 6.18296 11.2468C6.47553 10.7582 7.06551 10.5096 7.63821 10.6335L9.11021 10.9608C9.61923 11.0739 10.1324 10.7889 10.2842 10.309L10.7262 8.91507C10.8944 8.37473 11.412 8.00435 11.9995 8.00391C12.5869 8.00346 13.1051 8.37307 13.2742 8.91315V8.91315Z&#34; stroke=&#34;#FF671D&#34; stroke-width=&#34;1.5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
&lt;/svg&gt;
&lt;/div&gt;
    &lt;span&gt;Intermediate&lt;/span&gt;
  &lt;/div&gt;
  
  
  &lt;div class=&#34;d-flex align-items-center gap-half text-gray-12 mt-half body-small&#34;&gt;
    &lt;div class=&#34;journey-list__icon&#34;&gt;
  &lt;svg width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;
  &lt;path fill-rule=&#34;evenodd&#34; clip-rule=&#34;evenodd&#34; d=&#34;M0.75 2.75C0.75 1.64543 1.64543 0.75 2.75 0.75H21.25C22.3546 0.75 23.25 1.64543 23.25 2.75V21.25C23.25 22.3546 22.3546 23.25 21.25 23.25H2.75C1.64543 23.25 0.75 22.3546 0.75 21.25V2.75Z&#34; stroke=&#34;#FF671D&#34; stroke-width=&#34;1.5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
  &lt;path d=&#34;M12 4.5L7.5 10.5L4.5 7.5&#34; stroke=&#34;#FF671D&#34; stroke-width=&#34;1.5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
  &lt;path d=&#34;M14.25 8.25H18.75&#34; stroke=&#34;#FF671D&#34; stroke-width=&#34;1.5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
  &lt;path d=&#34;M12 13.5L7.5 19.5L4.5 16.5&#34; stroke=&#34;#FF671D&#34; stroke-width=&#34;1.5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
  &lt;path d=&#34;M14.25 17.25H18.75&#34; stroke=&#34;#FF671D&#34; stroke-width=&#34;1.5&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
&lt;/svg&gt;
&lt;/div&gt;
    &lt;span&gt;Docs &amp;amp; blog posts&lt;/span&gt;
  &lt;/div&gt;
  
&lt;/div&gt;










  






&lt;div class=&#34;pathfinder-cta orange-outline-list br-12 border-color-orange-flat border-width-2 p-1-5 pb-1&#34; x3-data=&#34;selectStack(&#39;/docs/learning-paths/categorize-collector-fleet&#39;, { packageId: &#39;categorize-collector-fleet-lj&#39; })&#34;&gt;
  &lt;div class=&#34;icon-heading d-flex&#34;&gt;
    &lt;div class=&#34;icon-heading__container&#34;&gt;
  &lt;svg width=&#34;30&#34; height=&#34;30&#34; viewBox=&#34;0 0 25 26&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;
  &lt;path d=&#34;M16.1401 14.4402C16.2141 14.4402 16.2852 14.4101 16.3373 14.3581C16.5355 14.1569 21.1904 9.39886 21.1904 5.0513C21.1904 2.26537 18.924 0 16.1391 0C13.3541 0 11.0878 2.26537 11.0878 5.0513C11.0878 9.39886 15.7427 14.1569 15.9419 14.3581C15.9939 14.4111 16.065 14.4402 16.1401 14.4402ZM13.5814 5.0513C13.5814 3.63882 14.7266 2.49262 16.1401 2.49262C17.5536 2.49262 18.6978 3.63781 18.6978 5.0513C18.6978 6.46478 17.5526 7.60999 16.1401 7.60999C14.7276 7.60999 13.5814 6.46478 13.5814 5.0513Z&#34; fill=&#34;#FF671D&#34;/&gt;
  &lt;path d=&#34;M24.9034 21.9305C24.0595 18.9113 17.9561 17.4147 12.5704 16.0933C9.54023 15.3496 5.76827 14.4246 5.73524 13.6037C5.72823 13.4225 5.97949 12.7398 9.52922 11.5516C9.80551 11.4585 9.96668 11.1842 9.91262 10.8989C9.85856 10.6136 9.60229 10.4164 9.318 10.4304C4.13956 10.6807 0.501743 12.1602 0.0482666 14.1993C-0.172966 15.1944 0.26149 16.749 3.58398 18.5009L4.29773 18.8763C6.54509 20.0545 8.16879 20.9064 8.1808 21.6992C8.19482 22.6502 5.93745 24.0507 3.72713 25.296C3.58398 25.3761 3.5139 25.5433 3.55495 25.7024C3.59699 25.8616 3.74014 25.9717 3.90431 25.9717H23.0354C23.1315 25.9717 23.2226 25.9337 23.2907 25.8656C24.6971 24.4581 25.2397 23.1347 24.9034 21.9305Z&#34; fill=&#34;#FBC55A&#34;/&gt;
&lt;/svg&gt;
&lt;/div&gt;
    &lt;div class=&#34;no-anchor-heading&#34;&gt;
      &lt;h4&gt;Open in Grafana Cloud&lt;/h4&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&#34;mt-1&#34;&gt;
    &lt;p class=&#34;mb-1 maxw-650&#34;&gt;
      
      Complete this learning path directly in your Grafana Cloud stack with an interactive learning experience.
      
    &lt;/p&gt;
    &lt;div class=&#34;d-flex column-gap-1 justify-content-end&#34;&gt;
      
      &lt;a
        x3-bind:href=&#34;launchUrl&#34;
        class=&#34;btn btn--primary br-8&#34;
        target=&#34;_blank&#34;
        rel=&#34;noopener noreferrer&#34;
        x3-on:click=&#34;trackPathfinderClick(&#39;categorize-collector-fleet&#39;, &#39;Categorize a collector fleet&#39;)&#34;&gt;
        Open in Grafana Cloud
      &lt;/a&gt;
      
      
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;div class=&#34;mt-1&#34;&gt;
  &lt;a
    href=&#34;/docs/learning-paths/categorize-collector-fleet/&#34;
    target=&#34;_blank&#34;
    rel=&#34;noopener noreferrer&#34;
    class=&#34;btn btn--outline arrow w-100p br-8&#34;
    x3-on:click=&#34;$dispatch(&#39;track-view-on-website&#39;, {
      pathId: &#39;categorize-collector-fleet&#39;,
      pathTitle: &#39;Categorize a collector fleet&#39;
    })&#34;&gt;
    View on website
  &lt;/a&gt;
&lt;/div&gt;

&lt;/div&gt;



]]></content><description>&lt;h1 id="categorize-your-collector-fleet">Categorize your collector fleet&lt;/h1>
&lt;div class="learning-path-card">
&lt;div class="pathway-row__label mb-1">
&lt;svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">&lt;rect x="0.5" y="0.5" width="39" height="39" rx="3.5" fill="white" stroke="#D8D8DF">&lt;/rect>&lt;path d="M8 20H14C16.5 20 18.5 18 18.5 15.5V12" stroke="#FF671D" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">&lt;/path>&lt;path d="M8 20H14C16.5 20 18.5 22 18.5 24.5V28" stroke="#FF671D" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">&lt;/path>&lt;path d="M14 20H32" stroke="#FF671D" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">&lt;/path>&lt;circle cx="18.5" cy="12" r="2" stroke="#FF671D" stroke-width="2" fill="white">&lt;/circle>&lt;circle cx="18.5" cy="28" r="2" stroke="#FF671D" stroke-width="2" fill="white">&lt;/circle>&lt;path d="M29 17L32 20L29 23" stroke="#FF671D" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">&lt;/path>&lt;/svg>
Learning path
&lt;/div>
&lt;h4>Categorize a collector fleet&lt;/h4>
&lt;p>Welcome to the Grafana Fleet Management learning path that shows you how to organize and categorize your collector fleet using custom attributes for remote configuration. Learn to categorize your infrastructure with meaningful attributes that answer critical questions such as who owns this collector, which service does it support, and where is it running.&lt;/p></description></item><item><title>Key takeaways</title><link>https://grafana.com/docs/learning-hub/intro-to-fleet-management/02-remote-configuration/25-key-takeaways/</link><pubDate>Tue, 18 Aug 2026 05:43:38 -0700</pubDate><guid>https://grafana.com/docs/learning-hub/intro-to-fleet-management/02-remote-configuration/25-key-takeaways/</guid><content><![CDATA[&lt;h1 id=&#34;key-takeaways&#34;&gt;Key takeaways&lt;/h1&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Fleet Management = Central control&lt;/strong&gt; for all your collectors.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Collectors register&lt;/strong&gt; with &lt;code&gt;remotecfg&lt;/code&gt; block and appear in inventory.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Configuration pipelines&lt;/strong&gt; remotely configure without touching machines.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Attribute matching&lt;/strong&gt; matches pipelines to specific collector groups.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Local &#43; remote configs&lt;/strong&gt; run in parallel, isolated from each other, which makes it safe to experiment.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Scales your operations&lt;/strong&gt; so managing many collectors takes the same effort as a few.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;the-core-workflow&#34;&gt;The core workflow&lt;/h2&gt;

&lt;div class=&#34;learning-hub-image&#34;&gt;
  &lt;a href=&#34;fleet-management-workflow.svg&#34; title=&#34;Fleet Management workflow: Register, Monitor, Create, Assign, Repeat&#34;&gt;
    &lt;img
      
      
      class=&#34;d-inline-block&#34;
      src=&#34;fleet-management-workflow.svg&#34;
      
      alt=&#34;Fleet Management workflow: Register, Monitor, Create, Assign, Repeat&#34; width=&#34;800&#34; height=&#34;180&#34;/&gt;
    &lt;div class=&#34;learning-hub-image__zoom&#34;&gt;
      &lt;svg width=&#34;24&#34; height=&#34;24&#34; viewBox=&#34;0 0 24 24&#34; fill=&#34;none&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;
        &lt;path d=&#34;M21 21L15 15M17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10Z&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34;/&gt;
        &lt;path d=&#34;M10 7V13M7 10H13&#34; stroke=&#34;currentColor&#34; stroke-width=&#34;2&#34; stroke-linecap=&#34;round&#34;/&gt;
      &lt;/svg&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;

]]></content><description>&lt;h1 id="key-takeaways">Key takeaways&lt;/h1>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Fleet Management = Central control&lt;/strong> for all your collectors.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Collectors register&lt;/strong> with &lt;code>remotecfg&lt;/code> block and appear in inventory.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Configuration pipelines&lt;/strong> remotely configure without touching machines.&lt;/p></description></item><item><title>Resources</title><link>https://grafana.com/docs/learning-hub/intro-to-fleet-management/02-remote-configuration/26-resources/</link><pubDate>Tue, 18 Aug 2026 05:43:38 -0700</pubDate><guid>https://grafana.com/docs/learning-hub/intro-to-fleet-management/02-remote-configuration/26-resources/</guid><content><![CDATA[&lt;h1 id=&#34;documentation&#34;&gt;Documentation&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://grafana.com/docs/grafana-cloud/send-data/fleet-management/&#34; target=&#34;_blank&#34;&gt;Fleet Management overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://grafana.com/docs/grafana-cloud/send-data/fleet-management/set-up/configuration-pipelines/&#34; target=&#34;_blank&#34;&gt;Configuration pipelines&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://grafana.com/docs/grafana-cloud/send-data/fleet-management/set-up/onboard-collectors/&#34; target=&#34;_blank&#34;&gt;Collector onboarding&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://grafana.com/docs/grafana-cloud/send-data/fleet-management/manage-fleet/collectors/troubleshoot-unhealthy-collector/&#34; target=&#34;_blank&#34;&gt;Troubleshoot unhealthy collectors&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://grafana.com/docs/grafana-cloud/send-data/fleet-management/set-up/infrastructure-as-code/terraform/&#34; target=&#34;_blank&#34;&gt;Fleet Management with Terraform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://grafana.com/docs/grafana-cloud/send-data/fleet-management/set-up/infrastructure-as-code/gitops/&#34; target=&#34;_blank&#34;&gt;Fleet Management with GitOps&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;community&#34;&gt;Community&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://community.grafana.com/&#34; target=&#34;_blank&#34;&gt;Grafana Community Forums&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://slack.grafana.com/&#34; target=&#34;_blank&#34;&gt;Grafana Slack&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="documentation">Documentation&lt;/h1>
&lt;ul>
&lt;li>&lt;a href="https://grafana.com/docs/grafana-cloud/send-data/fleet-management/" target="_blank">Fleet Management overview&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://grafana.com/docs/grafana-cloud/send-data/fleet-management/set-up/configuration-pipelines/" target="_blank">Configuration pipelines&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://grafana.com/docs/grafana-cloud/send-data/fleet-management/set-up/onboard-collectors/" target="_blank">Collector onboarding&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://grafana.com/docs/grafana-cloud/send-data/fleet-management/manage-fleet/collectors/troubleshoot-unhealthy-collector/" target="_blank">Troubleshoot unhealthy collectors&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://grafana.com/docs/grafana-cloud/send-data/fleet-management/set-up/infrastructure-as-code/terraform/" target="_blank">Fleet Management with Terraform&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://grafana.com/docs/grafana-cloud/send-data/fleet-management/set-up/infrastructure-as-code/gitops/" target="_blank">Fleet Management with GitOps&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="community">Community&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://community.grafana.com/" target="_blank">Grafana Community Forums&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://slack.grafana.com/" target="_blank">Grafana Slack&lt;/a>&lt;/li>
&lt;/ul></description></item></channel></rss>