Skip to main content
Collect logs from Docker and Docker Compose containers with the OpenTelemetry Collector, reading the files written by Docker’s default json-file logging driver. The same Collector can also forward traces and metrics from your apps — see Connect OpenTelemetry Collector to Bronto.

Prerequisites

Run the Collector

Add the Collector to your docker-compose.yml and give it read access to Docker’s container log directory:
docker-compose.yml
The Collector tails the container logs, unwraps Docker’s JSON envelope, and ships to Bronto:
otel-config.yaml
Set <REGION> to eu or us.

What you will see in Bronto

Open Search and filter by service.name. Docker’s json-file driver wraps each line as {"log": "...", "stream": "stdout|stderr", "time": "..."}; the json_parser operator promotes those into fields, so you get the container’s message, the stream, and a timestamp. Bronto’s Custom Parser extracts further structure from the message body.

Troubleshooting

  • No logs? Confirm the driver is json-file (docker inspect -f '{{.HostConfig.LogConfig.Type}}' <container>) and that the Collector mounts /var/lib/docker/containers read-only.
  • Per-service datasets? Run one Collector centrally with a service.name per environment, or route by container labels with an attributes processor.
  • For general issues, see OTel Collector troubleshooting.

Alternative: Fluent Bit

If you already run Fluent Bit, tail the container log files and forward them over HTTP. The docker multiline parser reassembles partial lines from the json-file driver:
fluent-bit.conf
Set Format to json_lines, not json. You can also point Docker’s native fluentd logging driver at Fluent Bit. See Connect Fluent Bit to Bronto for installation.