<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Dynamic Configuration on Grafana Labs</title><link>https://grafana.com/docs/agent/v0.25/cookbook/dynamic-configuration/</link><description>Recent content in Dynamic Configuration on Grafana Labs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="/docs/agent/v0.25/cookbook/dynamic-configuration/index.xml" rel="self" type="application/rss+xml"/><item><title>Structure</title><link>https://grafana.com/docs/agent/v0.25/cookbook/dynamic-configuration/01_basics/01_structure/</link><pubDate>Thu, 27 Apr 2023 15:07:06 +0000</pubDate><guid>https://grafana.com/docs/agent/v0.25/cookbook/dynamic-configuration/01_basics/01_structure/</guid><content><![CDATA[&lt;h1 id=&#34;01-structure&#34;&gt;01 Structure&lt;/h1&gt;
&lt;p&gt;Dynamic Configuration uses a series of files to load templates. This example will show how they all combine together. Running the below command will combine all the templates into the final.yml. Any failure while loading the config will revert to the original config, or if this is the initial load Grafana Agent will quit.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse file:///etc/grafana/01_config.yml&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;dynamic-configuration&#34;&gt;Dynamic Configuration&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/agent/blob/main/docs/user/cookbook/dynamic-configuration/01_Basics/01_config.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;config.yml&lt;/a&gt;&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;template_paths:
  - &amp;#34;file:///etc/grafana/01_assets&amp;#34;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Tells the Grafana Agent where to load files from. It is important to note that dynamic configuration does NOT traverse directories. It will look at the directory specified only, if you need more directories then add them to the &lt;code&gt;template_paths&lt;/code&gt; array. NOTE, if no protocol specified ie &lt;code&gt;file://&lt;/code&gt; above, then file access will be assumed. &lt;code&gt;file:///etc/grafana/01_assets&lt;/code&gt; is equivalent to &lt;code&gt;//etc/grafana/01_assets&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;agent&#34;&gt;Agent&lt;/h2&gt;
&lt;p&gt;Dynamic Configuration will find the first file matching pattern &lt;code&gt;agent-*.yml&lt;/code&gt; and load that as the base. You can only have one agent template. If multiple matching templates are found then the configuration will fail to load.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/agent/blob/main/docs/user/cookbook/dynamic-configuration/01_Basics/01_assets/agent-1.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;agent-1.yml&lt;/a&gt;&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;server:
  log_level: debug
metrics:
  wal_directory: /tmp/grafana-agent-normal
  global:
    scrape_interval: 60s
    remote_write:
      - url: https://prometheus-us-central1.grafana.net/api/prom/push
        basic_auth:
          username: xyz
          password: secretpassword
integrations:
  node_exporter:
    enabled: true
  agent:
    enabled: true&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;server&#34;&gt;Server&lt;/h2&gt;
&lt;p&gt;Dynamic configuration will find the first file matching pattern &lt;code&gt;server-*.yml&lt;/code&gt; and replace the &lt;code&gt;Server&lt;/code&gt; config block in
the Agent Configuration. Note that you do NOT include the &lt;code&gt;server:&lt;/code&gt; tag, dynamic configuration knows by the name that it
is a configuration block.&lt;/p&gt;
&lt;p&gt;You can only have 1 server template.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/agent/blob/main/docs/user/cookbook/dynamic-configuration/01_Basics/01_assets/server-1.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;server-1.yml&lt;/a&gt;&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;log_level: info&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;final&#34;&gt;Final&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/agent/blob/main/docs/user/cookbook/dynamic-configuration/01_Basics/01_assets/final.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;final.yml&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In the above example the &lt;code&gt;log_level: debug&lt;/code&gt; block will be replaced with &lt;code&gt;log_level: info&lt;/code&gt; from the server-1.yml&lt;/p&gt;
]]></content><description>&lt;h1 id="01-structure">01 Structure&lt;/h1>
&lt;p>Dynamic Configuration uses a series of files to load templates. This example will show how they all combine together. Running the below command will combine all the templates into the final.yml. Any failure while loading the config will revert to the original config, or if this is the initial load Grafana Agent will quit.&lt;/p></description></item><item><title>Instances</title><link>https://grafana.com/docs/agent/v0.25/cookbook/dynamic-configuration/01_basics/02_instances/</link><pubDate>Thu, 27 Apr 2023 15:07:06 +0000</pubDate><guid>https://grafana.com/docs/agent/v0.25/cookbook/dynamic-configuration/01_basics/02_instances/</guid><content><![CDATA[&lt;h1 id=&#34;02-instances&#34;&gt;02 Instances&lt;/h1&gt;
&lt;p&gt;Dynamic configuration allows multiple prometheus instances to be loaded with a parent metric. This uses
the same agent-1 and server-1 yml from 01.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse file:///etc/grafana/02_config.yml&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;dynamic-configuration&#34;&gt;Dynamic Configuration&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/agent/blob/main/docs/user/cookbook/dynamic-configuration/01_Basics/02_config.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;config.yml&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Tells the Grafana Agent where to load files from.&lt;/p&gt;
&lt;h2 id=&#34;metrics&#34;&gt;Metrics&lt;/h2&gt;
&lt;p&gt;Dynamic Configuration will find the first file matching pattern &lt;code&gt;metrics-*.yml&lt;/code&gt; and load that as the base. You can only have one metrics template.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/agent/blob/main/docs/user/cookbook/dynamic-configuration/01_Basics/02_assets/metrics-1.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;metrics-1.yml&lt;/a&gt;&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;configs:
  - name: default
global:
  scrape_interval: 60s
  scrape_timeout: 20s
wal_directory: /tmp/grafana-agent-wal&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;metrics-instances&#34;&gt;Metrics Instances&lt;/h2&gt;
&lt;p&gt;You can have any number of metrics_instances and they are added to any existing metrics instances defined previously.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/agent/blob/main/docs/user/cookbook/dynamic-configuration/01_Basics/02_assets/metrics_instances-1.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;metrics_instances-1.yml&lt;/a&gt;&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;name: instance1
scrape_configs:
  - job_name: instance1_job
    static_configs:
      - targets:
          - localhost:4000&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/agent/blob/main/docs/user/cookbook/dynamic-configuration/01_Basics/02_assets/metrics_instances-2.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;metrics_instances-2.yml&lt;/a&gt;&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;name: instance2
scrape_configs:
  - job_name: instance2_job
    static_configs:
      - targets:
          - localhost:5555&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;final&#34;&gt;Final&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/agent/blob/main/docs/user/cookbook/dynamic-configuration/01_Basics/01_assets/final.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;final.yml&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In the above you will see the &lt;code&gt;final.yml&lt;/code&gt; includes all the instance configurations&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;default&lt;/li&gt;
&lt;li&gt;instance1&lt;/li&gt;
&lt;li&gt;instance2&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="02-instances">02 Instances&lt;/h1>
&lt;p>Dynamic configuration allows multiple prometheus instances to be loaded with a parent metric. This uses
the same agent-1 and server-1 yml from 01.&lt;/p></description></item><item><title>Integrations</title><link>https://grafana.com/docs/agent/v0.25/cookbook/dynamic-configuration/01_basics/03_integrations/</link><pubDate>Thu, 27 Apr 2023 15:07:06 +0000</pubDate><guid>https://grafana.com/docs/agent/v0.25/cookbook/dynamic-configuration/01_basics/03_integrations/</guid><content><![CDATA[&lt;h1 id=&#34;03-integrations&#34;&gt;03 Integrations&lt;/h1&gt;
&lt;p&gt;Dynamic configuration requires the use of &lt;code&gt;integrations-next&lt;/code&gt; feature flag, to allow arrays of integrations. In this we will load integrations of various types. This is all built on the previous examples.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse file:///etc/grafana/03_config.yml&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;dynamic-configuration&#34;&gt;Dynamic Configuration&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/agent/blob/main/docs/user/cookbook/dynamic-configuration/01_Basics/03_config.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;config.yml&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Tells the Grafana Agent where to load files from.&lt;/p&gt;
&lt;h2 id=&#34;integrations&#34;&gt;Integrations&lt;/h2&gt;
&lt;p&gt;Integrations are loaded from files matching &lt;code&gt;integrations-*.yml&lt;/code&gt; and are combined together. You can declare for example multiple sets of &lt;code&gt;redis_configs&lt;/code&gt; across several files.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/agent/blob/main/docs/user/cookbook/dynamic-configuration/01_Basics/03_assets/integrations-node.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;integrations-node.yml&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Note: You do NOT have to name the above file &lt;code&gt;integrations-node.yml&lt;/code&gt; with &lt;code&gt;node&lt;/code&gt;, &lt;code&gt;integrations-1.yml&lt;/code&gt; would work the same. The name does NOT determine the type of integrations a template can contain and a template can contain integrations of different types.&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;node_exporter: {}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/agent/blob/main/docs/user/cookbook/dynamic-configuration/01_Basics/03_assets/integrations-redis.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;integrations-redis.yml&lt;/a&gt;&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;redis_configs:
  - redis_addr: localhost:6379
    autoscrape:
      metric_relabel_configs:
        - source_labels: [__address__]
          target_label: &amp;#34;banana&amp;#34;
          replacement: &amp;#34;apple&amp;#34;
  - redis_addr: localhost:6380&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;final&#34;&gt;Final&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/agent/blob/main/docs/user/cookbook/dynamic-configuration/01_Basics/03_assets/final.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;final.yml&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The final result should have 3 integrations enabled, 1 node_exporter and 2 redis.&lt;/p&gt;
]]></content><description>&lt;h1 id="03-integrations">03 Integrations&lt;/h1>
&lt;p>Dynamic configuration requires the use of &lt;code>integrations-next&lt;/code> feature flag, to allow arrays of integrations. In this we will load integrations of various types. This is all built on the previous examples.&lt;/p></description></item><item><title>Logs and Traces</title><link>https://grafana.com/docs/agent/v0.25/cookbook/dynamic-configuration/01_basics/04_logs_and_traces/</link><pubDate>Thu, 27 Apr 2023 15:07:06 +0000</pubDate><guid>https://grafana.com/docs/agent/v0.25/cookbook/dynamic-configuration/01_basics/04_logs_and_traces/</guid><content><![CDATA[&lt;h1 id=&#34;04-logs-and-traces&#34;&gt;04 Logs and Traces&lt;/h1&gt;
&lt;p&gt;Logs and Traces can also be templated. This is built ontop of the previous examples.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse file:///etc/grafana/04_config.yml&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;dynamic-configuration&#34;&gt;Dynamic Configuration&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/agent/blob/main/docs/user/cookbook/dynamic-configuration/01_Basics/04_config.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;config.yml&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Tells the Grafana Agent where to load files from.&lt;/p&gt;
&lt;h2 id=&#34;logs&#34;&gt;Logs&lt;/h2&gt;
&lt;p&gt;Logs are loaded from a template matching &lt;code&gt;logs-*.yml&lt;/code&gt;. There can ONLY be 1 template loaded&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/agent/blob/main/docs/user/cookbook/dynamic-configuration/01_Basics/04_assets/logs-1.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;logs-1.yml&lt;/a&gt;&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;configs:
  - name: test_logs
    positions:
      filename: /tmp/positions.yaml
    scrape_configs:
      - job_name: test
        pipeline_stages:
          - regex:
            source: filename
            expression: &amp;#39;\\temp\\Logs\\(?P&amp;lt;log_app&amp;gt;.&amp;#43;?)\\&amp;#39;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/agent/blob/main/docs/user/cookbook/dynamic-configuration/01_Basics/04_assets/traces-1.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;traces.yml&lt;/a&gt;&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;configs:
  - name: test_traces
    automatic_logging:
      backend: stdout
      loki_name: default
      spans: true&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;final&#34;&gt;Final&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/agent/blob/main/docs/user/cookbook/dynamic-configuration/01_Basics/04_assets/final.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;final.yml&lt;/a&gt;&lt;/p&gt;
]]></content><description>&lt;h1 id="04-logs-and-traces">04 Logs and Traces&lt;/h1>
&lt;p>Logs and Traces can also be templated. This is built ontop of the previous examples.&lt;/p>
&lt;p>&lt;code>docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse file:///etc/grafana/04_config.yml&lt;/code>&lt;/p></description></item><item><title>Looping</title><link>https://grafana.com/docs/agent/v0.25/cookbook/dynamic-configuration/02_templates/01_looping/</link><pubDate>Thu, 27 Apr 2023 15:07:06 +0000</pubDate><guid>https://grafana.com/docs/agent/v0.25/cookbook/dynamic-configuration/02_templates/01_looping/</guid><content><![CDATA[&lt;h1 id=&#34;01-basics-of-templating&#34;&gt;01 Basics of Templating&lt;/h1&gt;
&lt;p&gt;The templating is based on the excellent &lt;a href=&#34;https://docs.gomplate.ca/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;gomplate&lt;/a&gt; library. Currently using a custom fork to allow loading gomplate as a library in addition to some new commands. This will NOT try to cover the full range of gomplate, would recommend reading the documentation for full knowledge.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse file:///etc/grafana/01_config.yml&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;looping&#34;&gt;Looping&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/agent/blob/main/docs/user/cookbook/dynamic-configuration/02_Templates/01_assets/agent-1.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;agent-1.yml&lt;/a&gt;&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;server:
  log_level: debug
metrics:
  wal_directory: /tmp/grafana-agent-normal
  global:
    scrape_interval: 60s
    remote_write:
      - url: https://prometheus-us-central1.grafana.net/api/prom/push
        basic_auth:
          username: xyz
          password: secretpassword
  configs:
    - name: default
  {{ range slice &amp;#34;apple&amp;#34; &amp;#34;banana&amp;#34; &amp;#34;pear&amp;#34; }}
    - name: {{ . }}
  {{ end }}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The templating engine uses directives that are wrapped in &lt;code&gt;{{ command }}&lt;/code&gt;, in the above the dynamic configuration engine will loop over the three values, and those values can be accessed by &lt;code&gt;{{ . }}&lt;/code&gt; which means current value.&lt;/p&gt;
&lt;h2 id=&#34;final&#34;&gt;Final&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/agent/blob/main/docs/user/cookbook/dynamic-configuration/02_Templates/01_assets/final.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;final.yml&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The final.yml contains 4 prometheus configs&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;default&lt;/li&gt;
&lt;li&gt;apple&lt;/li&gt;
&lt;li&gt;banana&lt;/li&gt;
&lt;li&gt;pear&lt;/li&gt;
&lt;/ul&gt;
]]></content><description>&lt;h1 id="01-basics-of-templating">01 Basics of Templating&lt;/h1>
&lt;p>The templating is based on the excellent &lt;a href="https://docs.gomplate.ca/" target="_blank" rel="noopener noreferrer">gomplate&lt;/a> library. Currently using a custom fork to allow loading gomplate as a library in addition to some new commands. This will NOT try to cover the full range of gomplate, would recommend reading the documentation for full knowledge.&lt;/p></description></item><item><title>Datasources</title><link>https://grafana.com/docs/agent/v0.25/cookbook/dynamic-configuration/02_templates/02_datasources/</link><pubDate>Thu, 27 Apr 2023 15:07:06 +0000</pubDate><guid>https://grafana.com/docs/agent/v0.25/cookbook/dynamic-configuration/02_templates/02_datasources/</guid><content><![CDATA[&lt;h1 id=&#34;02-datasources&#34;&gt;02 Datasources&lt;/h1&gt;
&lt;p&gt;Datasources are a powerful concept in gomplate. They allow you to reach out to other files, systems and resources to pull data.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse file:///etc/grafana/02_config.yml&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;config&#34;&gt;Config&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&#34;https://github.com/grafana/agent/blob/main/docs/user/cookbook/dynamic-configuration/02_Templates/02_config.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;config.yml&lt;/a&gt; adds a new field &lt;code&gt;sources&lt;/code&gt;. Sources can be any number of things defined in the gomplate &lt;a href=&#34;https://docs.gomplate.ca/datasources/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;datasources&lt;/a&gt; documentation. In this example using fruit.&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;template_paths:
  - &amp;#34;file:///etc/grafana/01_assets&amp;#34;
datasources:
  - name: fruit
    url: &amp;#34;file://etc/grafana/01_assets/fruit.json&amp;#34;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/agent/blob/main/docs/user/cookbook/dynamic-configuration/02_Templates/02_assets/fruit.json&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;fruit.json&lt;/a&gt;&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&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-json&#34;&gt;[&amp;#34;mango&amp;#34;,&amp;#34;peach&amp;#34;,&amp;#34;orange&amp;#34;]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;usage&#34;&gt;Usage&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/agent/blob/main/docs/user/cookbook/dynamic-configuration/02_Templates/02_assets/agent-1.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;agent-1.yml&lt;/a&gt;&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;server:
  log_level: debug
metrics:
  wal_directory: /tmp/grafana-agent-normal
  global:
    scrape_interval: 60s
    remote_write:
      - url: https://prometheus-us-central1.grafana.net/api/prom/push
        basic_auth:
          username: xyz
          password: secretpassword
  configs:
    - name: default
  {{ range (datasource &amp;#34;fruit&amp;#34;) }}
    - name: {{ . }}
  {{ end }}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;A Datasource is reference by name and in this case it is an array and used exactly like the looping example.&lt;/p&gt;
]]></content><description>&lt;h1 id="02-datasources">02 Datasources&lt;/h1>
&lt;p>Datasources are a powerful concept in gomplate. They allow you to reach out to other files, systems and resources to pull data.&lt;/p>
&lt;p>&lt;code>docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse file:///etc/grafana/02_config.yml&lt;/code>&lt;/p></description></item><item><title>Objects</title><link>https://grafana.com/docs/agent/v0.25/cookbook/dynamic-configuration/02_templates/03_datasource_and_objects/</link><pubDate>Thu, 27 Apr 2023 15:07:06 +0000</pubDate><guid>https://grafana.com/docs/agent/v0.25/cookbook/dynamic-configuration/02_templates/03_datasource_and_objects/</guid><content><![CDATA[&lt;h1 id=&#34;02-datasources&#34;&gt;02 Datasources&lt;/h1&gt;
&lt;p&gt;Datasources can also access objects.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse file:///etc/grafana/03_config.yml&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&#34;config&#34;&gt;Config&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&#34;https://github.com/grafana/agent/blob/main/docs/user/cookbook/dynamic-configuration/02_Templates/02_config.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;config.yml&lt;/a&gt; adds a new field &lt;code&gt;sources&lt;/code&gt;. Sources can be any number of things defined in the gomplate &lt;a href=&#34;https://docs.gomplate.ca/datasources/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;datasources&lt;/a&gt; documentation. In this example using fruit.&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;template_paths:
  - &amp;#34;file:///etc/grafana/03_assets&amp;#34;
datasources:
  - name: computers
    url: &amp;#34;file:///etc/grafana/03_assets/computers.json&amp;#34;&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/agent/blob/main/docs/user/cookbook/dynamic-configuration/02_Templates/03_assets/computers.json&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;computers.json&lt;/a&gt;&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;JSON&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-json&#34;&gt;[
  {
    &amp;#34;name&amp;#34;: &amp;#34;webhost1&amp;#34;,
    &amp;#34;ip&amp;#34; : &amp;#34;192.168.1.1&amp;#34;,
    &amp;#34;enabled&amp;#34;: true
  },
  {
    &amp;#34;name&amp;#34;: &amp;#34;webhost2&amp;#34;,
    &amp;#34;ip&amp;#34; : &amp;#34;192.168.1.2&amp;#34;,
    &amp;#34;enabled&amp;#34;: false

  },
  {
    &amp;#34;name&amp;#34;: &amp;#34;webhost3&amp;#34;,
    &amp;#34;ip&amp;#34; : &amp;#34;192.168.1.3&amp;#34;,
    &amp;#34;enabled&amp;#34;: true
  }
]&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h2 id=&#34;usage&#34;&gt;Usage&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/grafana/agent/blob/main/docs/user/cookbook/dynamic-configuration/02_Templates/02_assets/agent-1.yml&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;agent-1.yml&lt;/a&gt;&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;server:
  log_level: debug
metrics:
  wal_directory: /tmp/grafana-agent-normal
  global:
    scrape_interval: 60s
    remote_write:
      - url: https://prometheus-us-central1.grafana.net/api/prom/push
        basic_auth:
          username: xyz
          password: secretpassword
  configs:
    - name: default
      # Check for length so that if it is 0, we dont write any scrape configs
  {{ if $length := len (datasource &amp;#34;computers&amp;#34;) }}
  {{ if gt $length 0 }}
  scrape_configs:
  {{ end }}
  {{ end }}
  {{ range (datasource &amp;#34;computers&amp;#34;) }}
  # Only add if the computers are enabled
  # the . references our current object
  {{ if eq .enabled true }}
  - job_name: {{ .name }}
    static_configs:
      - targets:
          - {{ .ip }}
  {{ end }}
  {{ end }}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;This is a much more complex example, in the above we are doing:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;comparisons&lt;/li&gt;
&lt;li&gt;creating and setting variables&lt;/li&gt;
&lt;li&gt;looping over objects&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The final output will only list &lt;code&gt;webhost1&lt;/code&gt; and &lt;code&gt;webhost3&lt;/code&gt; since &lt;code&gt;webhost2&lt;/code&gt; is not enabled.&lt;/p&gt;
]]></content><description>&lt;h1 id="02-datasources">02 Datasources&lt;/h1>
&lt;p>Datasources can also access objects.&lt;/p>
&lt;p>&lt;code>docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse file:///etc/grafana/03_config.yml&lt;/code>&lt;/p>
&lt;h2 id="config">Config&lt;/h2>
&lt;p>The &lt;a href="https://github.com/grafana/agent/blob/main/docs/user/cookbook/dynamic-configuration/02_Templates/02_config.yml" target="_blank" rel="noopener noreferrer">config.yml&lt;/a> adds a new field &lt;code>sources&lt;/code>. Sources can be any number of things defined in the gomplate &lt;a href="https://docs.gomplate.ca/datasources/" target="_blank" rel="noopener noreferrer">datasources&lt;/a> documentation. In this example using fruit.&lt;/p></description></item><item><title>Querying AWS</title><link>https://grafana.com/docs/agent/v0.25/cookbook/dynamic-configuration/03_advanced_datasources/01_aws/</link><pubDate>Thu, 27 Apr 2023 15:07:06 +0000</pubDate><guid>https://grafana.com/docs/agent/v0.25/cookbook/dynamic-configuration/03_advanced_datasources/01_aws/</guid><content><![CDATA[&lt;h1 id=&#34;01-aws&#34;&gt;01 AWS&lt;/h1&gt;
&lt;p&gt;The AWS datasource assumes that you have appropriate credentials and environment variables set to access AWS resources. The custom fork of gomplate adds a new command to the existing AWS commands.&lt;/p&gt;
&lt;p&gt;Unfortunately there is not a specific docker command but generic examples are below.&lt;/p&gt;
&lt;h2 id=&#34;looping&#34;&gt;Looping&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;01_assets/agent-1.yml&#34;&gt;agent-1.yml&lt;/a&gt;&lt;/p&gt;

&lt;div class=&#34;code-snippet &#34;&gt;&lt;div class=&#34;lang-toolbar&#34;&gt;
    &lt;span class=&#34;lang-toolbar__item lang-toolbar__item-active&#34;&gt;YAML&lt;/span&gt;
    &lt;span class=&#34;code-clipboard&#34;&gt;
      &lt;button x-data=&#34;app_code_snippet()&#34; x-init=&#34;init()&#34; @click=&#34;copy()&#34;&gt;
        &lt;img class=&#34;code-clipboard__icon&#34; src=&#34;/media/images/icons/icon-copy-small-2.svg&#34; alt=&#34;Copy code to clipboard&#34; width=&#34;14&#34; height=&#34;13&#34;&gt;
        &lt;span&gt;Copy&lt;/span&gt;
      &lt;/button&gt;
    &lt;/span&gt;
    &lt;div class=&#34;lang-toolbar__border&#34;&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;div class=&#34;code-snippet &#34;&gt;
    &lt;pre data-expanded=&#34;false&#34;&gt;&lt;code class=&#34;language-yaml&#34;&gt;server:
  log_level: debug
metrics:
  wal_directory: /tmp/grafana-agent-normal
  global:
    scrape_interval: 60s
    remote_write:
      - url: https://prometheus-us-central1.grafana.net/api/prom/push
        basic_auth:
          username: xyz
          password: secretpassword
  configs:
    - name: default
      scrape_configs:
      {{ range $index , $value := aws.EC2Query &amp;#34;tag:service=webhost&amp;#34; -}}
      - job_name: {{ $value.InstanceId }}
        static_configs:
          - targets:
              - {{ $value.PrivateDnsName }}
        {{ end -}}&lt;/code&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The &lt;code&gt;aws.EC2Query&lt;/code&gt; command is a new command added for Grafana Agent and takes a string in the &lt;a href=&#34;https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;DescribeInstances&lt;/a&gt; format&lt;/p&gt;
&lt;h2 id=&#34;final&#34;&gt;Final&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;01_assets/final.yml&#34;&gt;final.yml&lt;/a&gt;&lt;/p&gt;
]]></content><description>&lt;h1 id="01-aws">01 AWS&lt;/h1>
&lt;p>The AWS datasource assumes that you have appropriate credentials and environment variables set to access AWS resources. The custom fork of gomplate adds a new command to the existing AWS commands.&lt;/p></description></item></channel></rss>