> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bronto.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Connect OpenTelemetry Collector to Bronto

> Deploy the OpenTelemetry Collector with OTLP exporters to receive, process, and forward logs, metrics, and traces to Bronto, including on Kubernetes.

The OpenTelemetry Collector forwards logs, metrics, and traces to Bronto via OTLP/HTTP. This page covers Collector configuration only.

For installation instructions, see the [OpenTelemetry Collector documentation](https://opentelemetry.io/docs/collector/installation/). For SDK-based instrumentation, see Bronto's [language-specific OpenTelemetry guides](/opentelemetry/overview).

## Getting your data into the Collector

The Collector only forwards the telemetry it **receives** — deploying it does not automatically discover your logs. If you've configured the Collector but aren't seeing all the logs you expect, the source usually hasn't been wired up to send data to it yet. There are two categories of source:

* **Application logs, metrics, and traces** — instrument your application with the OpenTelemetry SDK so it exports OTLP to the Collector (or directly to Bronto). See [Ingest OpenTelemetry data](/opentelemetry/overview) for per-language setup. Alternatively, point the `filelog` receiver at the log files your application already writes.
* **Infrastructure and service logs** — each source has its own setup. See [Ingesting Infrastructure and Database Logs](/integrations/infrastructure-overview) for the full list (Kubernetes, Docker, NGINX, databases, message brokers, and more), and [Collecting Windows OS Logs](/integrations/azure-windows-logs) for Windows Event Log and IIS.

The receiver examples on this page show the Collector-side plumbing; the source guides above show what each source emits and where it writes its logs.

## Endpoints

Use the endpoints for your Bronto region:

| Region | Logs endpoint                            | Metrics endpoint                            | Traces endpoint                            |
| ------ | ---------------------------------------- | ------------------------------------------- | ------------------------------------------ |
| EU     | `https://ingestion.eu.bronto.io/v1/logs` | `https://ingestion.eu.bronto.io/v1/metrics` | `https://ingestion.eu.bronto.io/v1/traces` |
| US     | `https://ingestion.us.bronto.io/v1/logs` | `https://ingestion.us.bronto.io/v1/metrics` | `https://ingestion.us.bronto.io/v1/traces` |

The OTel Collector uses `service.name` and `service.namespace` as shared resource identity across all three signals. For logs, Bronto also uses them to select the dataset and collection. Only the API key header is required; the rest are optional log-routing overrides:

| Header                | Required | Description                                                                                              |
| --------------------- | -------- | -------------------------------------------------------------------------------------------------------- |
| `x-bronto-api-key`    | Required | Your [Bronto API key](/Account-Management/API-Keys#create-a-new-api-key).                                |
| `x-bronto-dataset`    | Optional | Overrides `service.name` as the dataset.                                                                 |
| `x-bronto-collection` | Optional | Overrides `service.namespace` as the collection.                                                         |
| `x-bronto-tags`       | Optional | Key-value tag pairs (e.g. `env=prod,team=platform`). See [Partitions](/Search-and-Visualize/Partitions). |

## Logs, metrics, and traces

Run all three pipelines through a single Collector. Tail log files via the `filelog` receiver, accept OTLP metrics and traces from your applications via the `otlp` receiver, and ship each signal to its Bronto endpoint.

<Note>
  The example uses the standard OTLP receiver ports: `4317` for gRPC and `4318` for HTTP. Applications on the same host commonly use `localhost`; containers, Kubernetes workloads, remote Collectors, and TLS-enabled deployments require an address and scheme appropriate to that environment. Keep the SDK exporter and Collector receiver settings aligned.
</Note>

```yaml /etc/otel/config.yaml theme={"dark"}
receivers:
  filelog/app:
    include:
      - /path/to/your/logs
    resource:
      service.name: <YOUR_DATASET_NAME>
      service.namespace: <YOUR_COLLECTION_NAME>
  otlp:
    protocols:
      grpc:
        endpoint: 0.0.0.0:4317
      http:
        endpoint: 0.0.0.0:4318

processors:
  batch:
  cumulativetodelta:
    initial_value: drop

exporters:
  otlphttp/brontologs:
    logs_endpoint: "https://ingestion.<REGION>.bronto.io/v1/logs"
    compression: gzip
    headers:
      x-bronto-api-key: <YOUR_API_KEY>
  otlphttp/brontometrics:
    metrics_endpoint: "https://ingestion.<REGION>.bronto.io/v1/metrics"
    compression: gzip
    headers:
      x-bronto-api-key: <YOUR_API_KEY>
  otlphttp/brontotraces:
    traces_endpoint: "https://ingestion.<REGION>.bronto.io/v1/traces"
    compression: gzip
    headers:
      x-bronto-api-key: <YOUR_API_KEY>

service:
  pipelines:
    logs:
      receivers: [filelog/app]
      processors: [batch]
      exporters: [otlphttp/brontologs]
    metrics:
      receivers: [otlp]
      processors: [cumulativetodelta, batch]
      exporters: [otlphttp/brontometrics]
    traces:
      receivers: [otlp]
      processors: [batch]
      exporters: [otlphttp/brontotraces]
```

The `service.name` and `service.namespace` resource attributes are used by Bronto to route logs to the correct dataset and collection. You can override them with the `x-bronto-dataset` and `x-bronto-collection` headers.

<Note>
  Bronto supports sums, gauges, summaries, and explicit histograms. Sum and histogram metrics can be ingested as delta or cumulative, but delta is strongly recommended to get the best value from the current set of supported functions. Exponential histograms are not supported, and the Metric Explorer does not currently provide a Rate function.
</Note>

For signal-specific details, see [Send Metrics to Bronto](/metrics/send-metrics) and [Send Traces to Bronto](/tracing/send-traces).

## Send only the signals you need

Collector pipelines are independent. To send only one signal or a subset, remove the unused signal pipelines and exporters. You do not need a separate Collector.

## Windows hosts

On Windows, the `filelog` receiver picks up file-based logs (IIS, SQL Server, application files), but most platform and service diagnostics are written to the **Windows Event Log** and need the Windows-only `windowseventlog` receiver instead. See [Collecting Windows OS Logs](/integrations/azure-windows-logs) for the receiver configuration, the event channels worth collecting, XPath filtering for noisy channels, Windows `filelog` gotchas (UTF-16 encoding, multi-line stack traces), and running the Collector as a Windows service.

## Parsing unstructured logs

Rather than building parser operators in the Collector for unstructured text, ship raw log lines to Bronto and use the [Bronto Custom Parser](/core-features/custom-parser) to extract structured fields server-side. The Custom Parser uses LLMs to generate parsers automatically and ships with built-in support for Apache, IIS, HAProxy, Syslog, key-value, and custom formats — no regex maintenance required.

## Kubernetes

For Kubernetes deployments, install the Collector using the [OpenTelemetry Helm chart](https://github.com/open-telemetry/opentelemetry-helm-charts/tree/main/charts/opentelemetry-collector).

```bash theme={"dark"}
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
helm install otel-collector open-telemetry/opentelemetry-collector \
  --values values.yaml
```

Use the `x-bronto-collection` header to identify the cluster (e.g. `cluster1-prod-us-east-1`). Bronto infers dataset/service names from log attributes and span resources, so per-service routing is handled automatically.

```yaml values.yaml theme={"dark"}
mode: daemonset

config:
  receivers:
    filelog:
      include:
        - /var/log/pods/*/*/*.log
    otlp:
      protocols:
        grpc:
          endpoint: 0.0.0.0:4317
        http:
          endpoint: 0.0.0.0:4318

  processors:
    batch:
    cumulativetodelta:
      initial_value: drop
    k8sattributes:

  exporters:
    otlphttp/brontologs:
      logs_endpoint: "https://ingestion.<REGION>.bronto.io/v1/logs"
      compression: gzip
      headers:
        x-bronto-api-key: <YOUR_API_KEY>
        x-bronto-collection: <CLUSTER_NAME>-<ENVIRONMENT>-<REGION>
    otlphttp/brontometrics:
      metrics_endpoint: "https://ingestion.<REGION>.bronto.io/v1/metrics"
      compression: gzip
      headers:
        x-bronto-api-key: <YOUR_API_KEY>
    otlphttp/brontotraces:
      traces_endpoint: "https://ingestion.<REGION>.bronto.io/v1/traces"
      compression: gzip
      headers:
        x-bronto-api-key: <YOUR_API_KEY>
        x-bronto-collection: <CLUSTER_NAME>-<ENVIRONMENT>-<REGION>

  service:
    pipelines:
      logs:
        receivers: [filelog]
        processors: [k8sattributes, batch]
        exporters: [otlphttp/brontologs]
      metrics:
        receivers: [otlp]
        processors: [k8sattributes, cumulativetodelta, batch]
        exporters: [otlphttp/brontometrics]
      traces:
        receivers: [otlp]
        processors: [k8sattributes, batch]
        exporters: [otlphttp/brontotraces]
```

The `k8sattributes` processor enriches logs, metrics, and traces with pod, namespace, and node metadata. See the [OpenTelemetry Demo Kubernetes deployment guide](https://opentelemetry.io/docs/demo/kubernetes-deployment/#bring-your-own-backend) for further context on backend configuration.

## Verify delivery

Once your configuration is applied and the Collector is restarted:

* Logs appear in [Search](https://app.bronto.io/search).
* Metrics appear in the Metric Explorer.
* Traces appear in [Explore Traces](/tracing/explore-traces).

## Further reading

* [OpenTelemetry Collector configuration](https://opentelemetry.io/docs/collector/configuration/) — full receiver/processor/exporter reference
* [OpenTelemetry Helm chart](https://github.com/open-telemetry/opentelemetry-helm-charts/tree/main/charts/opentelemetry-collector) — for Kubernetes
* [Send Traces to Bronto](/tracing/send-traces) — including direct SDK export
* [Send Metrics to Bronto](/metrics/send-metrics) — supported metric types and limitations
* [Bronto OpenTelemetry SDK guides](/opentelemetry/overview) — language-specific instrumentation
* [Bronto Custom Parser](/core-features/custom-parser) — extract structured fields from unstructured logs
