Caution
Grafana Alloy is the new name for our distribution of the OTel collector. Grafana Agent has been deprecated and is in Long-Term Support (LTS) through October 31, 2025. Grafana Agent will reach an End-of-Life (EOL) on November 1, 2025. Read more about why we recommend migrating to Grafana Alloy.
Important: This documentation is about an older version. It's relevant only to the release noted, many of the features and functions have been updated or replaced. Please view the current version.
02 Datasources
Datasources can also access objects.
docker run -v ${PWD}/:/etc/grafana grafana/agentctl:latest template-parse file:///etc/grafana/03_config.yml
Config
The config.yml adds a new field sources
. Sources can be any number of things defined in the gomplate datasources documentation. In this example using fruit.
template_paths:
- "file:///etc/grafana/03_assets"
datasources:
- name: computers
url: "file:///etc/grafana/03_assets/computers.json"
[
{
"name": "webhost1",
"ip" : "192.168.1.1",
"enabled": true
},
{
"name": "webhost2",
"ip" : "192.168.1.2",
"enabled": false
},
{
"name": "webhost3",
"ip" : "192.168.1.3",
"enabled": true
}
]
Usage
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 "computers") }}
{{ if gt $length 0 }}
scrape_configs:
{{ end }}
{{ end }}
{{ range (datasource "computers") }}
# 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 }}
This is a much more complex example, in the above we are doing:
- comparisons
- creating and setting variables
- looping over objects
The final output will only list webhost1
and webhost3
since webhost2
is not enabled.