diff --git a/SUMMARY.md b/SUMMARY.md index cafaf1057..3ebaabc07 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -180,6 +180,7 @@ * [Amazon Kinesis Data Streams](pipeline/outputs/kinesis.md) * [Amazon S3](pipeline/outputs/s3.md) * [Apache SkyWalking](pipeline/outputs/skywalking.md) + * [Bronto](pipeline/outputs/bronto.md) * [Counter](pipeline/outputs/counter.md) * [Dash0](pipeline/outputs/dash0.md) * [Datadog](pipeline/outputs/datadog.md) diff --git a/pipeline/outputs/bronto.md b/pipeline/outputs/bronto.md new file mode 100644 index 000000000..53c2fe926 --- /dev/null +++ b/pipeline/outputs/bronto.md @@ -0,0 +1,136 @@ +--- +description: Send logs to Bronto +--- + +# Bronto + +Stream logs to [Bronto](https://docs.bronto.io) by using the [HTTP plugin](http.md) to send data to a Bronto ingestion endpoint. Bronto parses and structures logs after ingestion, so you can send raw log records as JSON lines. + +Bronto exposes region-specific ingestion endpoints: + +| Region | Host | +| :--- | :--- | +| `EU` | `ingestion.eu.bronto.io` | +| `US` | `ingestion.us.bronto.io` | + +## Configuration parameters + +Bronto uses the standard [HTTP output plugin](http.md) parameters together with a set of Bronto-specific HTTP headers. + +| Key | Description | Default | +| :--- | :--- | :--- | +| `compress` | Compress the payload before sending. Use `gzip` for Bronto. | _none_ | +| `format` | The payload format to send. Use `json_lines` for Bronto. | `json` | +| `host` | Your Bronto ingestion endpoint: `ingestion.eu.bronto.io` (`EU`) or `ingestion.us.bronto.io` (`US`). | `127.0.0.1` | +| `port` | TCP port of the Bronto ingestion endpoint. Use `443`. | `80` | +| `tls` | Enable TLS. Required by Bronto endpoints. Use `on`. | `off` | + +### Headers + +| Header | Description | Required | +| :--- | :--- | :--- | +| `x-bronto-api-key` | Your Bronto API key. | Yes | +| `x-bronto-collection` | The collection used to group datasets. | Yes | +| `x-bronto-dataset` | The target dataset name. | Yes | +| `x-bronto-tags` | Key-value pairs for partitioning, for example `env=prod,team=platform`. | No | + +The `x-bronto-dataset` and `x-bronto-collection` headers are required when using the HTTP plugin. When you send data using OpenTelemetry, they're optional. See [Send logs using OpenTelemetry](#send-logs-using-opentelemetry). + +### TLS / SSL + +The HTTP output plugin supports TLS/SSL. For more details about the properties available and general configuration, see [TLS/SSL](../../administration/transport-security.md). + +## Get started + +To get started with sending logs to Bronto: + +1. In the Bronto UI, go to **Settings** > **API Keys** > **Add API Key** and create a key. An **Ingestion** role is sufficient for sending logs. +1. In your main Fluent Bit configuration file, append the following, replacing ``, ``, ``, and `` with your values: + +{% tabs %} +{% tab title="fluent-bit.yaml" %} + +```yaml +pipeline: + + outputs: + - name: http + match: '*' + host: ingestion..bronto.io + port: 443 + tls: on + format: json_lines + compress: gzip + header: + - x-bronto-api-key + - x-bronto-dataset + - x-bronto-collection +``` + +{% endtab %} +{% tab title="fluent-bit.conf" %} + +```text +[OUTPUT] + Name http + Match * + Host ingestion..bronto.io + Port 443 + Tls On + Format json_lines + Compress gzip + Header x-bronto-api-key + Header x-bronto-dataset + Header x-bronto-collection +``` + +{% endtab %} +{% endtabs %} + +## Send logs using OpenTelemetry + +Bronto also accepts OTLP over HTTP at the same ingestion endpoints. If you're standardizing on OpenTelemetry across your pipeline, you can use the [OpenTelemetry plugin](opentelemetry.md) instead. + +With this approach, Bronto can derive the dataset from the `service.name` resource attribute and the collection from `service.namespace`. Fluent Bit doesn't attach these resource attributes by default, so set the `x-bronto-dataset` and `x-bronto-collection` headers explicitly to control the target dataset and collection. + +{% tabs %} +{% tab title="fluent-bit.yaml" %} + +```yaml +pipeline: + + outputs: + - name: opentelemetry + match: '*' + host: ingestion..bronto.io + port: 443 + tls: on + logs_uri: /v1/logs + header: + - x-bronto-api-key + - x-bronto-dataset + - x-bronto-collection +``` + +{% endtab %} +{% tab title="fluent-bit.conf" %} + +```text +[OUTPUT] + Name opentelemetry + Match * + Host ingestion..bronto.io + Port 443 + Tls On + Logs_Uri /v1/logs + Header x-bronto-api-key + Header x-bronto-dataset + Header x-bronto-collection +``` + +{% endtab %} +{% endtabs %} + +## References + +- [Bronto Fluent Bit documentation](https://docs.bronto.io/agent-setup/fluent-bit) diff --git a/vale-styles/FluentBit/Spelling-exceptions.txt b/vale-styles/FluentBit/Spelling-exceptions.txt index 19a34ebee..b98287f3e 100644 --- a/vale-styles/FluentBit/Spelling-exceptions.txt +++ b/vale-styles/FluentBit/Spelling-exceptions.txt @@ -20,6 +20,7 @@ BitBake Blackhole blocklist boolean +Bronto Buildkite Buildroot cAdvisor