Skip to main content

Overview

On GKE Standard, the recommended setup is an OpenTelemetry Collector DaemonSet that reads pod logs and kubelet metrics from each node. If you already export logs to Cloud Logging — or you run GKE Autopilot, which does not permit node-level collection — bridge those logs through Pub/Sub instead.

Prerequisites

  • A Bronto account and API key (how to create one)
  • A GKE cluster with kubectl and Helm access

Primary: OTel Collector DaemonSet

Deploy the Collector as a DaemonSet with the OpenTelemetry Helm chart. Its presets collect pod logs and add Kubernetes metadata:
values.yaml
Set <REGION> to eu or us. This reads pod logs from the node and bypasses Cloud Logging. For more Collector detail, see Connect OpenTelemetry Collector to Bronto.
For volume or request/limit utilization metrics, grant the Collector service account get access to nodes/proxy.
GKE Autopilot: this DaemonSet path does not work. Autopilot does not support node-level log collection, and it blocks the nodes/proxy access the kubeletMetrics preset needs — enabling it leaves the DaemonSet crash-looping on privilege errors. On Autopilot, collect logs through the Pub/Sub bridge below, and get metrics and traces by exporting OTLP from each application (see Ingest OpenTelemetry data).
For receiver settings, authentication, and available measurements, see the Collector Contrib Kubelet Stats receiver.

Alternative: Cloud Logging via Pub/Sub

If you already route logs through Cloud Logging — or you are on Autopilot — create a Log Router sink to a Pub/Sub topic and read it with the googlecloudpubsub receiver. Use the inclusion filter resource.type="k8s_container", create a pull subscription on the topic, and grant the Collector’s service account roles/pubsub.subscriber (via Workload Identity). See the Cloud Logging routing docs.
/etc/otel/config.yaml
Don’t push Pub/Sub directly to Bronto — its message envelope isn’t parseable. The Collector unwraps it.

What you will see in Bronto

Open Search for pod logs and the Metric Explorer for kubelet metrics. Kubernetes resource attributes identify the pod, namespace, node, and container.

Troubleshooting

  • No logs (DaemonSet)? Confirm the DaemonSet runs on every node and the kubernetesAttributes preset’s RBAC is in place.
  • No metrics? Confirm the kubeletMetrics preset is enabled and the Collector can reach each node’s kubelet.
  • DaemonSet crash-looping on GKE Autopilot? Autopilot blocks nodes/proxy and node-level log collection — use the Pub/Sub bridge for logs and per-application OTLP for metrics instead.
  • No logs (Pub/Sub)? Verify the sink is active and the Collector’s service account has roles/pubsub.subscriber.
  • For general issues, see OTel Collector troubleshooting.