Prerequisites
- A Bronto account and API key (how to create one)
- Envoy configured with a JSON access log (strongly recommended — see below)
- An OpenTelemetry Collector (recommended) or Fluent Bit installed
Configure a JSON access log
Add aFileAccessLog to the HTTP connection manager. Use typed_json_format so numeric fields stay numeric:
envoy.yaml
Configure the Collector
/etc/otel/config.yaml
<REGION> to eu or us. Running Envoy as a container or Istio sidecar? It logs to /dev/stdout — collect the container logs via the Docker or Kubernetes setup instead, and for a mesh see Istio.
Distributed tracing
Envoy can also emit traces natively via theenvoy.tracers.opentelemetry extension — point it at the same Collector’s OTLP gRPC endpoint (4317) and the spans flow to Bronto alongside these logs. See Send Traces to Bronto.
What you will see in Bronto
Open Search and filter byservice.name = envoy. Each entry carries the downstream remote address, method, path, response code, duration, upstream cluster, and bytes sent/received. JSON format maps directly to searchable attributes; plain-text access logs need Bronto’s Custom Parser.
Troubleshooting
- Unstructured logs? Use
typed_json_format(above) rather than the default text format, which requires parsing. - For general issues, see OTel Collector troubleshooting.
Alternative: Fluent Bit
Envoy’s stdout is captured in the container logs, so collect them with Fluent Bit’stail input as shown on the Docker or Kubernetes pages — set Format to json_lines (not json). See Connect Fluent Bit to Bronto.
