Grafana Agent
Grafana Agent has reached End-of-Life (EOL) on November 1, 2025. It is recommended migrating to the Grafana Alloy collector, which is built on the foundation of Grafana Agent Flow.
This is release v0.39.0 of Grafana Agent.
Upgrading
Read the relevant upgrade guides for specific instructions on upgrading from older versions:
Notable changes:
Breaking changes
-
otelcol.receiver.prometheuswill drop allotel_scope_infometrics when converting them to OTLP. (@wildum)- If the
otel_scope_infometric has labelsotel_scope_nameandotel_scope_version, their values will be used to set OTLP Instrumentation Scope name and version respectively. - Labels of
otel_scope_infometrics other thanotel_scope_nameandotel_scope_versionare added as scope attributes with the matching name and version.
- If the
-
The
targetblock inprometheus.exporter.blackboxrequires a mandatorynameargument instead of a block label. (@hainenber) -
In the azure exporter, dimension options will no longer be validated by the Azure API. (@kgeckhart)
- This change will not break any existing configurations and you can opt in to validation via the
validate_dimensionsconfiguration option. - Before this change, pulling metrics for azure resources with variable dimensions required one configuration per metric + dimension combination to avoid an error.
- After this change, you can include all metrics and dimensions in a single configuration and the Azure APIs will only return dimensions which are valid for the various metrics.
- This change will not break any existing configurations and you can opt in to validation via the
Features
- A new
discovery.ovhcloudcomponent for discovering scrape targets on OVHcloud. (@ptodev) - Allow specifying additional containers to run. (@juangom)
Enhancements
-
Flow Windows service: Support environment variables. (@jkroepke)
-
Allow disabling collection of root Cgroup stats in
prometheus.exporter.cadvisor(flow mode) and thecadvisorintegration (static mode). (@hainenber) -
Grafana Agent on Windows now automatically restarts on failure. (@hainenber)
-
Added metrics, alerts and dashboard visualisations to help diagnose issues with unhealthy components and components that take too long to evaluate. (@thampiotr)
-
The
httpconfig block may now reference exports from any component. Previously, onlyremote.*andlocal.*components could be referenced without a circular dependency. (@rfratto) -
Add support for Basic Auth-secured connection with Elasticsearch cluster using
prometheus.exporter.elasticsearch. (@hainenber) -
Add a
resource_to_telemetry_conversionargument tootelcol.exporter.prometheusfor converting resource attributes to Prometheus labels. (@hainenber) -
pyroscope.ebpfsupport python on arm64 platforms. (@korniltsev) -
otelcol.receiver.prometheusdoes not drop histograms without buckets anymore. (@wildum) -
Added exemplars support to
otelcol.receiver.prometheus. (@wildum) -
mimir.rules.kubernetesmay now retry its startup on failure. (@hainenber) -
Added links between compatible components in the documentation to make it easier to discover them. (@thampiotr)
-
Allow defining
HTTPClientConfigfordiscovery.ec2. (@cmbrad) -
The
remote.httpcomponent can optionally define a request body. (@tpaschalis) -
Added support for
loki.writeto flush WAL on agent shutdown. (@thepalbi) -
Add support for
integrations-nextstatic to flow config conversion. (@erikbaranowski) -
Add support for passing extra arguments to the static converter such as
-config.expand-env. (@erikbaranowski) -
Added 'country' mmdb-type to log pipeline-stage geoip. (@superstes)
-
Azure exporter enhancements for flow and static mode, (@kgeckhart)
- Allows for pulling metrics at the Azure subscription level instead of resource by resource
- Disable dimension validation by default to reduce the number of exporter instances needed for full dimension coverage
-
Add
max_cache_sizetoprometheus.relabelto allow configurability instead of hard coded 100,000. (@mattdurham) -
Add support for
http_sd_configwithin ascrape_configfor prometheus to flow config conversion. (@erikbaranowski) -
discovery.lightsailnow supports additional parameters for configuring HTTP client settings. (@ptodev) -
Add
sample_age_limitto remote_write config to drop samples older than a specified duration. (@marctc)
For a full list of changes, please refer to the CHANGELOG!
Installation
Refer to our installation guides for how to install the variants of Grafana Agent: