Grafana Agent v0.31 release: new Helm chart, Flow support for Grafana Phlare, and more
Here at Grafana Labs, we aim to create products which integrate well with open standards and are easy to install everywhere. Today, we’re excited to announce Grafana Agent v0.31, which allows you to connect to even more types of observability signals for both scraping and remote writes. And to help you install the Agent more easily, there is now an official Windows Docker image and an official Helm Chart.
Here’s a breakdown of the latest features and upgrades in Grafana Agent v0.31.
Deploy Grafana Agent in Kubernetes with an official Helm Chart
If an Agent needs to run in a Kubernetes cluster, it can now be installed easily via the officially supported Helm Chart available on ArtifactHub. Its code is available on our GitHub repository in case you would like to contribute to it or just to inspect it.
helm repo add grafana https://grafana.github.io/helm-charts
helm install grafana-agent grafana/grafana-agent
Install Grafana Agent in Windows containers via our new Docker image
It is now also possible to install the Agent to a Windows container via an official image on DockerHub. To install it via cmd.exe, simply run a command like this:
docker run ^
-v c:\grafana-agent-data:c:\etc\grafana-agent\data ^
-v c:\workspace\config\grafana-agent:c:\etc\grafana-agent ^
grafana/agent:v0.31.0-windows`
For more information on container deployments, please refer to our Grafana Agent documentation.
Collect profiling data for Grafana Phlare
Grafana Phlare is Grafana Labs’ new open source project for continuous profiling. You can now use the Grafana Agent to pull data from scrape targets in Google’s pprof format and send it to a Phlare database for storage. This can be as simple as using just two new Grafana Agent Flow components — phlare.scrape and phlare.write.
phlare.scrape "default" {
// Scrape two local applications - the Agent itself and Phlare
targets = [
{"__address__" = "phlare:4100", "app"="phlare"},
{"__address__" = "agent:12345", "app"="agent"},
]
// Send the scraped data to the phlare.write component
forward_to = [phlare.write.staging.receiver]
}
phlare.write "staging" {
// Send profiles to a locally running Phlare instance.
endpoint {
url = "http://phlare:4100"
// Headers to include in the HTTP request to Phlare
headers = {
"X-Scope-Org-ID" = "squad-1",
}
}
// Labels to add to the profiles which Agent is sending to Phlare
external_labels = {
"env" = "staging",
}
}
You can also leverage Flow components discovery.kubernetes and discovery.relabel to automatically discover and scrape Kubernetes pods profiles.
discovery.kubernetes "phlare_kubernetes" {
role = "pod"
}
discovery.relabel "phlare_relabel" {
rule {
action = "labelmap"
regex = "__meta_kubernetes_pod_label_(.+)"
}
rule {
action = "replace"
source_labels = ["__meta_kubernetes_namespace"]
target_label = "namespace"
}
rule {
action = "replace"
source_labels = ["__meta_kubernetes_pod_name"]
target_label = "pod"
}
rule {
action = "replace"
source_labels = ["__meta_kubernetes_pod_container_name"]
target_label = "container"
}
targets = concat(discovery.kubernetes.phlare_kubernetes.targets)
}
phlare.scrape "default" {
forward_to = [phlare.write.staging.receiver]
targets = discovery.relabel.phlare_relabel.output
}
Going forward, Grafana Agent will be the default agent for Grafana Phlare, and we plan to implement more profiling features in the future.
To get started with continuous profiling, check out our recent blog post about Grafana Phlare!
Configure Grafana Mimir with PrometheusRule CRDs
Thanks to the new mimir.rules.kubernetes Flow component, the Grafana Agent can now auto-discover Kubernetes resources from the PrometheusRule CRD of the Prometheus Operator and load them into a Grafana Mimir instance. An example Agent configuration would look like this:
mimir.rules.kubernetes "local" {
address = "mimir:8080"
tenant_id = "team-a"
// Only rules and namespaces with the “agent” label set to “yes” are included.
rule_namespace_selector {
match_labels = {
agent = "yes",
}
}
rule_selector {
match_labels = {
agent = "yes",
}
}
}
Prometheus Rules allow users to precompute frequently needed or computationally expensive expressions and save their result as a new set of time series. Grafana Mimir supports the Rule format in its ruler component. The rules could then be used either for alerting or for improving the query time of PromQL queries.
Convert logs from OpenTelemetry format to Grafana Loki format
Would you like to receive OpenTelemetry log data via gRPC and send it over to Loki? With the release of Grafana Agent v0.31, this is now possible: The new otelcol.exporter.loki component can convert any OpenTelemetry-formatted logs to the Grafana Loki format, so that the Agent can send them to a Loki instance, like this:
otelcol.receiver.otlp "default" {
grpc {
endpoint = ”0.0.0.0:4317”
}
output {
logs = [otelcol.exporter.loki.default.input]
}
}
otelcol.exporter.loki "default" {
forward_to = [loki.write.local.receiver]
}
loki.write "local" {
endpoint {
url = "loki:3100"
}
}
The Agent example above receives OpenTelemetry logs on the 0.0.0.0:4317
address, and forwards them to a Loki instance on the loki:3100
address.
Convert logs from Grafana Loki format to OpenTelemetry format
The opposite conversion, from a Grafana Loki format to an OpenTelemetry format, is now possible via the otelcol.receiver.loki component. This allows you to ingest logs via any of our many loki.source. components, process them via loki.process, and then send them to either a Grafana Loki database, an OpenTelemetry-compatible endpoint, or both.
How to upgrade or get started with the Grafana Agent
If you are new to the Grafana Agent, there are two ways to get started:
- The future of the Agent is Grafana Agent Flow. It is currently in beta, but if you would like to try it, you could begin with our Flow documentation and then move on to one of the tutorials.
- To get started with the stable (non-Flow) part of the Agent, please see our quick start guide.
The full set of new features in the v0.31.0 is listed in our release notes on GitHub. For a list of deprecated features and breaking changes, you can go directly to the Agent upgrade guide in our documentation.
We are always happy to speak with the community! Please reach out to us on any one of the following channels:
- The #agent channel on the Grafana Labs Community Slack
- The next community call on Google Meet
- The issues or discussions sections in our GitHub repository
Grafana Cloud is the easiest way to get started with metrics, logs, traces, and dashboards. We have a generous free forever tier and plans for every use case. Sign up for free now!