Prerequisites
- A Bronto account and API key (how to create one)
- Nginx running and writing logs (default paths:
/var/log/nginx/access.logand/var/log/nginx/error.log) - An OpenTelemetry Collector (recommended) or Fluent Bit installed on the same host
- For traces: Nginx 1.25.3+ with the
ngx_otel_module(install thenginx-module-otelpackage)
Logs and traces
Nginx emits request traces over OTLP/gRPC viangx_otel_module. Point the module at a local Collector that forwards both signals to Bronto.
1. Enable tracing in Nginx. Add load_module to the top of nginx.conf and the otel_* directives inside the http block:
nginx.conf
/etc/otel/config.yaml
<REGION> to eu or us. The service.name / service.namespace attributes (and otel_service_name) route data to the Bronto dataset and collection.
Logs only
If you only need logs, drop theotlp receiver and the traces pipeline:
/etc/otel/config.yaml
What you will see in Bronto
Open Search and filter byservice.name = nginx. Access logs in the default combined format carry the client IP, request method and path, HTTP status code, response size, referrer, and user agent; error logs carry a timestamp, severity level (error, warn, crit), and the message. Bronto’s Custom Parser extracts these fields server-side — no parser operators needed in the Collector.
Traces appear in Explore Traces — one span per request, with the method, route, status code, and duration. See Send Traces to Bronto for more.
Troubleshooting
- No logs? Confirm the Collector’s user can read
/var/log/nginx/. Runsudo chmod +r /var/log/nginx/*.logor add the user to theadmgroup, then restart the Collector. - No traces? Confirm
ngx_otel_moduleis loaded (nginx -V),otel_traceison, and theotel_exporterendpoint matches the Collector’sotlpgRPC port (4317). - Want structured fields at the source? Switch Nginx to a JSON
log_format(see the Nginx log_format reference) for direct field extraction. - For general issues, see OTel Collector troubleshooting.
Alternative: Fluent Bit
If your organization already runs Fluent Bit, forward the Nginx log files with itstail input and HTTP output. Fluent Bit handles logs only — for traces, use the OpenTelemetry Collector above.
fluent-bit.conf
json_lines, not json — json sends a single array and breaks ingestion. See Connect Fluent Bit to Bronto for installation and the full output reference.
