Caution
Grafana Agent has reached End-of-Life (EOL) on November 1, 2025. Agent is no longer receiving vendor support and will no longer receive security or bug fixes. Current users of Agent Static mode, Agent Flow mode, and Agent Operator should proceed with migrating to Grafana Alloy. If you have already migrated to Alloy, no further action is required. 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.
discovery_target_decode
The discovery_target_decode function decodes a string into an array of
targets matching the exports of discovery.* components.
The string must match the JSON format used by Prometheus’ HTTP and file service discovery:
[
{
"targets": [ "<host:ip>", ... ],
"labels": {
"<label name>": "<label value>"
}
}
]If the provided string doesn’t match the expected JSON format,
discovery_target_decode fails to evaluate and marks the component containing
the expression as unhealthy.
Elements specified by the targets key are converted into a flat list of
targets. The base set of labels for each target is retrieved from the labels
key, and the __address__ label is received from the target element.
For example, the following JSON file maps to the River objects provided below:
[
{
"targets": [ "host-a:80", "host-b:80" ],
"labels": {
"cluster": "production",
"region": "us-west-0"
}
},
{
"targets": [ "host-c:80" ],
"labels": {
"cluster": "development",
"region": "us-west-0"
}
}
][
{
__address__ = "host-a:80",
cluster = "production",
region = "us-west-0",
},
{
__address__ = "host-b:80",
cluster = "production",
region = "us-west-0",
},
{
__address__ = "host-c:80",
cluster = "development",
region = "us-west-0",
},
]Example pipeline
local.file "example" {
filename = env("TARGETS_FILE")
}
prometheus.scrape "default" {
targets = discovery_target_decode(local.file.example.content)
}


