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. When Envoy and the Collector share a host, localhost:4317 is the standard OTLP/gRPC default; otherwise use the Collector address, port, and TLS settings reachable from Envoy. The spans flow to Bronto alongside these logs. See Send Traces to Bronto.
Metrics
Envoy exposes Prometheus metrics from its admin interface at/stats/prometheus. Scrape that endpoint with the Collector:
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.
