1. Fleet Management and remotecfg #
Remote configuration.
The principle #
Updating 300 Alloys one by one doesn't scale. With Fleet Management (Grafana Cloud, or self-hosted for enterprise offers), you create pipelines matched to attributes; each Alloy polls the service with the remotecfg block and applies the pipelines matching its attributes. The inventory shows each collector's health, version and attributes.
config.alloy #
remotecfg {
url = sys.env("GCLOUD_FLEET_URL")
id = constants.hostname
attributes = {"env" = "production", "team" = "payments"}
poll_frequency = "1m"
basic_auth {
username = sys.env("GCLOUD_FLEET_USER")
password = sys.env("GCLOUD_RW_API_KEY")
}
}Configuration validated with alloy validate (Alloy v1.21.3, November 2026).
id: collector ID; without it, Alloy generates a UUID kept inalloy_seed.json.attributes: used to select pipelines; thecollector.prefix is reserved (collector.osandcollector.versionare added automatically).poll_frequency: 1 min by default, 10 s minimum.- The alloy-remote-config protocol is open (Apache 2.0): you can implement your own server.
Keep a minimal local configuration (the remotecfg block and self-monitoring): if the service is unreachable, Alloy keeps the last configuration received.2. Kubernetes Monitoring #
The k8s-monitoring Helm chart.
Several specialized Alloys #
The k8s-monitoring Helm chart (version 4 and later) deploys, via the Alloy Operator, several Alloys with distinct roles. In v4, you name the collectors yourself (collectors) and apply presets; each feature (clusterMetrics, podLogs, applicationObservability, autoInstrumentation…) is attached to a collector, and destinations are typed by protocol (prometheus, loki, otlp, pyroscope).
| Collector | Presets | Role |
|---|---|---|
| Metrics | clustered, statefulset | kubelet, cAdvisor, kube-state-metrics, ServiceMonitor |
| Events | singleton | Cluster events (single instance) |
| Logs | filesystem-log-reader, daemonset | Pod and node logs |
| Receiver | daemonset | OTLP pushed by applications |
| Profiles | privileged, daemonset | Continuous profiling |
helm repo add grafana https://grafana.github.io/helm-charts
helm upgrade --install k8s-monitoring grafana/k8s-monitoring \
--namespace monitoring --create-namespace -f values.yamlThe autoInstrumentation option also deploys Beyla as a DaemonSet. The values.yaml format changed between major versions: start from the Grafana Cloud wizard or the chart repository examples.
3. The OpenTelemetry engine #
A Collector configuration in Alloy.
alloy otel #
Already have OpenTelemetry Collector YAML configurations? Alloy's OTel engine (public preview) runs them as-is, without translating them to Alloy syntax. With alloy otel-supervisor, a built-in OpAMP supervisor lets Fleet Management drive that configuration remotely.
alloy otel --config otelcol.yaml
alloy convert --source-format=otelcol --output=config.alloy otelcol.yaml # or convert to Alloy syntax| Need | Choice |
|---|---|
| New configuration, Grafana components (faro, beyla, clustering) | Default engine (Alloy syntax) |
| Taking over an existing OpenTelemetry Collector fleet | OTel engine + OpAMP |
