Skip to main content
Bronto ingests OpenTelemetry logs, metrics, and traces over OTLP/HTTP. On Azure, the recommended path is a self-managed OpenTelemetry Collector, which sends data straight to Bronto with full control over routing and processing.
Exponential histograms are not supported, and the Metric Explorer does not currently provide a Rate function.

Choosing an Approach


Bronto Ingestion Endpoints

The /v1/logs, /v1/metrics, and /v1/traces endpoints accept OTLP protobuf over HTTP only. Exponential histograms are not supported.
All requests require the header:
See API Keys for how to generate a key.

Self-Managed OpenTelemetry Collector

Running your own OpenTelemetry Collector is the recommended approach: it sends logs, metrics, and traces straight to Bronto, without routing your data through any other vendor, and gives you:
  • Full configuration control — custom processors, attribute transformation, or sampling rules
  • Fan-out — forwarding the same telemetry to multiple backends simultaneously
  • Existing OTel infrastructure — you already operate a collector fleet and want to add Bronto as an exporter
  • Advanced routing — sending different log types or services to different Bronto datasets or collections
Application logs, metrics, and traces can be sent directly to Bronto’s ingestion endpoints, but routing through a Collector is strongly recommended. The Collector handles retries, batching, and compression.

Supported sources

A self-managed Collector can run anywhere you control compute, and supports any source that has an OpenTelemetry receiver:
The Collector forwards only what it receives — deploying it does not automatically collect your logs. If you aren’t seeing all the logs you expect:
  • Application logs, metrics, and traces require instrumenting your app with the OpenTelemetry SDK, or tailing its log files with the filelog receiver.
  • Azure platform and diagnostic logs (resource logs, activity logs) are not collected by the Collector — they are exported through Azure Monitor diagnostic settings via the Event Hub Forwarder.
See Ingesting Azure Data into Bronto for the full per-service source-to-method mapping, and the per-service pages — AKS, Container Apps, Container Instances, App Service, Functions, Virtual Machines — for what each service emits and how.

Collector configuration

The core Bronto exporter configuration is the same regardless of how you deploy the collector on Azure. For full installation instructions and parameter reference, see the OpenTelemetry Collector guide. The minimal configuration exports logs, metrics, and traces to Bronto:
Replace <REGION> with eu or us and <YOUR_API_KEY> with your Bronto API key.

Deployment options on Azure

Azure Kubernetes Service (AKS)

Deploy as a DaemonSet (one collector per node) for node-level log collection, or as a Deployment behind a ClusterIP service for centralised collection. The simplest path is the OpenTelemetry Helm chart:
Add the k8sattributes processor to enrich logs, metrics, and traces with pod, namespace, and node metadata. See the OpenTelemetry Collector guide for a complete values.yaml example.

Azure Virtual Machines / VM Scale Sets

Install the OpenTelemetry Collector directly on your VMs following the official installation guide. Place your config at /etc/otel/config.yaml and run the collector as a systemd service. For VM Scale Sets, bake the collector into your image or install it via a custom-script extension or cloud-init so every instance starts the collector on boot.

Azure Container Apps

Run the OpenTelemetry Collector as its own container app and have your other apps export OTLP to it; the Collector forwards logs, metrics, and traces to Bronto over OTLP/HTTP. Alternatively, instrument each app with the OpenTelemetry SDK to export to Bronto directly.
The Container Apps environment’s built-in managed OpenTelemetry agent exports only over OTLP/gRPC, which Bronto’s ingestion endpoint does not accept — so it can’t deliver to Bronto directly. Use a Collector container or direct SDK export instead.

Azure Container Instances (ACI)

Run the collector as a sidecar container within the same container group as your application. Both containers share the group’s network namespace, so the usual defaults are localhost:4317 for OTLP/gRPC and localhost:4318 for OTLP/HTTP. Replace them when your receiver uses different port, protocol, or TLS settings. Use the standard otel/opentelemetry-collector-contrib image and provide your config via a mounted Azure Files share or a secret volume.

Collecting from Windows hosts

Windows workloads are common on Azure — VMs and VM Scale Sets, App Service on Windows plans, and Windows node pools on AKS. Windows hosts produce two distinct kinds of logs: Windows Event Log entries (collected with the windowseventlog receiver) and file-based logs such as IIS and SQL Server (collected with the filelog receiver). The same Collector you run for Linux workloads — including as an AKS DaemonSet on Windows nodes — can collect both. See Collecting Windows OS Logs for the receiver configuration, the channels worth collecting, XPath filtering for noisy channels, Windows filelog gotchas (encoding, multi-line stack traces), and installing the Collector as a Windows service.

Azure Monitor OpenTelemetry Distro

If you already use Microsoft’s Azure Monitor OpenTelemetry Distro with Application Insights, you can also forward the same logs, metrics, and traces to Bronto by adding an OTLP exporter. See the dedicated page for details.

Data Organization

Bronto maps service.name to a Dataset and service.namespace to a Collection — see Data Organization for how datasets, collections, and tags work. Set these as resource attributes in your SDK or collector config:
You can also override routing per-exporter using HTTP headers, which is useful when one collector ships to multiple datasets:
For Kubernetes, set x-bronto-collection to your cluster name (e.g. cluster1-prod-eu-west-1) to identify the source cluster in Bronto.
For assistance or questions, contact support@bronto.io.