Skip to content

Commit db6eb07

Browse files
committed
Merge remote-tracking branch 'origin/master' into azure-blob-mi-docs
# Conflicts: # pipeline/outputs/azure_blob.md
2 parents 3c3c9bf + c82e0a0 commit db6eb07

146 files changed

Lines changed: 2867 additions & 1494 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CONTRIBUTING.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,53 @@ When you create a new `.md` file for a new page, you must add an entry to this r
110110

111111
Similarly, if you update the `# h1` title header of an existing page, be sure to update that page's `SUMMARY.md` entry to match. `SUMMARY.md` entries takes precedence over in-page headers, which means that if you update a page's `# h1` title without updating `SUMMARY.md`, the unchanged `SUMMARY.md` title will persist in both the rendered page and the table of contents.
112112

113+
## Plugin documentation
114+
115+
When documenting a Fluent Bit plugin, follow these standards to keep plugin pages consistent.
116+
117+
### Configuration parameters table
118+
119+
- **Sort parameters alphabetically** by key name.
120+
- **List all parameters** defined in the plugin's `config_map`, plus the common `workers` parameter.
121+
- **Use `_none_` in the Default cell** when the parameter's default is `NULL` in the source `config_map`. Leave the cell empty only when the parameter has no entry in `config_map` at all (for example, `host` and `port`, which come from the network defaults).
122+
- Use this table header format:
123+
124+
```markdown
125+
| Key | Description | Default |
126+
| --- | ----------- | ------- |
127+
```
128+
129+
### Configuration examples
130+
131+
Every plugin page should include both a YAML and a classic configuration example, presented as tabs:
132+
133+
```markdown
134+
{% tabs %}
135+
{% tab title="fluent-bit.yaml" %}
136+
...
137+
{% endtab %}
138+
{% tab title="fluent-bit.conf" %}
139+
...
140+
{% endtab %}
141+
{% endtabs %}
142+
```
143+
144+
### Key casing in examples
145+
146+
Key casing differs between the two configuration formats:
147+
148+
- **YAML** (`fluent-bit.yaml`): All keys are lowercase. For example: `api_key`, `log_level`, `match`.
149+
- **Classic** (`fluent-bit.conf`): Keys use Title_Case — capitalize the first letter of every underscore-separated word. For example: `Api_Key`, `Log_Level`, `Match`.
150+
151+
| YAML key | Classic key |
152+
| --- | --- |
153+
| `api_key` | `Api_Key` |
154+
| `log_group_name` | `Log_Group_Name` |
155+
| `match` | `Match` |
156+
| `name` | `Name` |
157+
158+
This applies to all keys in every section (`[SERVICE]`, `[INPUT]`, `[OUTPUT]`, and so on).
159+
113160
## Linters
114161

115162
This repository runs linters as GitHub Actions for each pull request. If a linter finds errors or makes suggested changes, you can view these results in the **Files changed** tab.

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ description: High Performance Telemetry Agent for Logs, Metrics and Traces
3737

3838
For more details about changes in each release, refer to the [official release notes](https://fluentbit.io/announcements/).
3939

40+
If you are upgrading from the Fluent Bit `4.2` series, start with [What's new in Fluent Bit v5.0](installation/whats-new-in-fluent-bit-v5.0.md) and [Upgrade notes](installation/upgrade-notes.md).
41+
4042
## Fluent Bit, Fluentd, and CNCF
4143

4244
Fluent Bit is a [CNCF](https://www.cncf.io/) graduated sub-project under the umbrella of [Fluentd](https://www.fluentd.org).

SUMMARY.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
## About
66

7-
* [What is Fluent Bit?](about/what-is-fluent-bit.md)
7+
* [What's Fluent Bit?](about/what-is-fluent-bit.md)
88
* [Fluentd and Fluent Bit](about/fluentd-and-fluent-bit.md)
99
* [Lab resources](about/resources.md)
1010

@@ -33,6 +33,7 @@
3333
* [Kubernetes](installation/downloads/kubernetes.md)
3434
* [macOS](installation/downloads/macos.md)
3535
* [Windows](installation/downloads/windows.md)
36+
* [What's new in Fluent Bit v5.0](installation/whats-new-in-fluent-bit-v5.0.md)
3637
* [Upgrade notes](installation/upgrade-notes.md)
3738

3839
## Administration
@@ -87,6 +88,7 @@
8788
* [Elasticsearch](pipeline/inputs/elasticsearch.md)
8889
* [Exec](pipeline/inputs/exec.md)
8990
* [Exec WASI](pipeline/inputs/exec-wasi.md)
91+
* [Fluent Bit logs](pipeline/inputs/fluentbit-logs.md)
9092
* [Fluent Bit metrics](pipeline/inputs/fluentbit-metrics.md)
9193
* [Forward](pipeline/inputs/forward.md)
9294
* [GPU metrics](pipeline/inputs/gpu-metrics.md)
@@ -132,14 +134,16 @@
132134
* [Regular expression format](pipeline/parsers/regular-expression.md)
133135
* [Decoder settings](pipeline/parsers/decoders.md)
134136
* [Processors](pipeline/processors.md)
137+
* [Conditional processing](pipeline/processors/conditional-processing.md)
135138
* [Content modifier](pipeline/processors/content-modifier.md)
139+
* [Cumulative to delta](pipeline/processors/cumulative-to-delta.md)
140+
* [Filters as processors](pipeline/processors/filters.md)
136141
* [Labels](pipeline/processors/labels.md)
137142
* [Metrics selector](pipeline/processors/metrics-selector.md)
138143
* [OpenTelemetry envelope](pipeline/processors/opentelemetry-envelope.md)
139144
* [Sampling](pipeline/processors/sampling.md)
140145
* [SQL](pipeline/processors/sql.md)
141-
* [Filters as processors](pipeline/processors/filters.md)
142-
* [Conditional processing](pipeline/processors/conditional-processing.md)
146+
* [Topological data analysis](pipeline/processors/tda.md)
143147
* [Filters](pipeline/filters.md)
144148
* [AWS metadata](pipeline/filters/aws-metadata.md)
145149
* [CheckList](pipeline/filters/checklist.md)
@@ -214,8 +218,8 @@
214218
* [Standard output](pipeline/outputs/standard-output.md)
215219
* [Syslog](pipeline/outputs/syslog.md)
216220
* [TCP and TLS](pipeline/outputs/tcp-and-tls.md)
217-
* [UDP](pipeline/outputs/udp.md)
218221
* [Treasure Data](pipeline/outputs/treasure-data.md)
222+
* [UDP](pipeline/outputs/udp.md)
219223
* [Vivo Exporter](pipeline/outputs/vivo-exporter.md)
220224
* [WebSocket](pipeline/outputs/websocket.md)
221225

about/fluentd-and-fluent-bit.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ The following table describes a comparison of different areas of the projects:
2626
| Performance | Medium Performance | High Performance |
2727
| Dependencies | Built as a Ruby Gem, depends on other gems. | Zero dependencies, unless required by a plugin. |
2828
| Plugins | Over 1,000 external plugins available. | Over 100 built-in plugins available. |
29+
| OpenTelemetry | Available through plugins. | Native OTLP ingestion and delivery. |
2930
| License | [Apache License v2.0](https://apache.org/licenses/LICENSE-2.0) | [Apache License v2.0](https://apache.org/licenses/LICENSE-2.0) |
3031

3132
Both [Fluentd](https://www.fluentd.org) and [Fluent Bit](https://fluentbit.io) can work as Aggregators or Forwarders, and can complement each other or be used as standalone solutions.

about/what-is-fluent-bit.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,18 @@
22
description: Fluent Bit is a CNCF graduated project under the umbrella of Fluentd
33
---
44

5-
# What is Fluent Bit?
5+
# What's Fluent Bit?
66

7-
[Fluent Bit](https://fluentbit.io) is an open source telemetry agent specifically designed to efficiently handle the challenges of collecting and processing telemetry data across a wide range of environments, from constrained systems to complex cloud infrastructures. Managing telemetry data from various sources and formats can be a constant challenge, particularly when performance is a critical factor.
7+
[Fluent Bit](https://fluentbit.io) is an open source telemetry agent that processes logs, metrics, traces, and profiles. It's designed to efficiently handle the challenges of collecting and processing telemetry data across a wide range of environments, from constrained systems to complex cloud infrastructures. Managing telemetry data from various sources and formats can be a constant challenge, particularly when performance is a critical factor.
88

9-
Rather than serving as a drop-in replacement, Fluent Bit enhances the observability strategy for your infrastructure by adapting and optimizing your existing logging layer, and adding metrics and traces processing. Fluent Bit supports a vendor-neutral approach, seamlessly integrating with other ecosystems such as Prometheus and OpenTelemetry. Trusted by major cloud providers, banks, and companies in need of a ready-to-use telemetry agent solution, Fluent Bit effectively manages diverse data sources and formats while maintaining optimal performance and keeping resource consumption low.
9+
Rather than serving as a drop-in replacement, Fluent Bit enhances the observability strategy for your infrastructure. It adapts and optimizes your existing logging layer, and adds metrics and traces processing. Fluent Bit supports a vendor-neutral approach, with native OpenTelemetry (OTLP) ingestion and delivery and seamless integration with ecosystems such as Prometheus. Trusted by major cloud providers, banks, and companies that need a ready-to-use telemetry agent, Fluent Bit effectively manages diverse data sources and formats. It maintains optimal performance while keeping resource consumption low.
1010

1111
Fluent Bit can be deployed as an edge agent for localized telemetry data handling or utilized as a central aggregator/collector for managing telemetry data across multiple sources and environments.
1212

1313
{% embed url="https://www.youtube.com/watch?v=3ELc1helke4" %}
1414

1515
## The history of Fluent Bit
1616

17-
In 2014, the [Fluentd](https://www.fluentd.org/) team at [Treasure Data](https://www.treasuredata.com/) was forecasting the need for a lightweight log processor for constraint environments like embedded Linux and gateways. To meet this need, Eduardo Silva created Fluent Bit, a new open-source solution and part of the Fluentd ecosystem.
17+
In 2014, the [Fluentd](https://www.fluentd.org/) team at [Treasure Data](https://www.treasuredata.com/) was forecasting the need for a lightweight log processor for constraint environments like embedded Linux and gateways. To meet this need, Eduardo Silva created Fluent Bit, a new open source solution and part of the Fluentd ecosystem.
1818

1919
After the project matured, it gained traction for normal Linux systems. With the new containerized world, the cloud native community asked to extend the project scope to support more sources, filters, and destinations. Not long after, Fluent Bit became one of the preferred solutions to solve the logging challenges in cloud environments.

administration/aws-credentials.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ Plugins that interact with AWS services fetch credentials from the following pro
77
- [EKS Web Identity Token (OIDC)](#eks-web-identity-token-oidc)
88
- [ECS HTTP credentials endpoint](#ecs-http-credentials-endpoint)
99
- [EC2 Instance Profile Credentials (IMDS)](#ec2-instance-profile-credentials-imds)
10+
- [`AWS Greengrass` credentials](#aws-greengrass-credentials)
1011

1112
All AWS plugins additionally support a `role_arn` (or `AWS_ROLE_ARN`, for [Elasticsearch](../pipeline/outputs/elasticsearch.md)) configuration parameter. If specified, the fetched credentials are used to assume the given role.
1213

@@ -42,3 +43,7 @@ Credentials are fetched using a pod identity endpoint. See [Learn how EKS Pod I
4243
## EC2 instance profile credentials (IMDS)
4344

4445
Fetches credentials for the EC2 instance profile's role. See [IAM roles for Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html). As of Fluent Bit version 1.8.8, IMDSv2 is used by default and IMDSv1 might be disabled. Prior versions of Fluent Bit require enabling IMDSv1 on EC2.
46+
47+
## `AWS Greengrass` credentials
48+
49+
Fluent Bit fetches credentials from a localhost endpoint provided by the AWS IoT `Greengrass` token exchange service. The token exchange service runs as a local server on `Greengrass` core devices and provides AWS credentials through the `AWS_CONTAINER_CREDENTIALS_FULL_URI` and `AWS_CONTAINER_AUTHORIZATION_TOKEN` environment variables. For more information, see the AWS documentation about [Token exchange service](https://docs.aws.amazon.com/greengrass/v2/developerguide/token-exchange-service-component.html).

administration/configuring-fluent-bit.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,19 @@ podman run -rm -ti fluent/fluent-bit --help
2929
# Docker container tooling.
3030
docker run --rm -it fluent/fluent-bit --help
3131
```
32+
33+
### Validate configuration with `--dry-run`
34+
35+
Use the `--dry-run` flag to validate a configuration file without starting Fluent Bit:
36+
37+
```shell
38+
fluent-bit --dry-run -c /path/to/fluent-bit.yaml
39+
```
40+
41+
A successful validation prints `configuration test is successful` and exits with code `0`. If validation fails, Fluent Bit exits with a non-zero code and prints the errors to stderr.
42+
43+
As of Fluent Bit 4.2, `--dry-run` performs full property validation in addition to syntax checking. Prior to 4.2, unknown or misspelled plugin property names would only surface as errors at runtime; `--dry-run` now catches them during validation. For example, a configuration with an unknown property on a `dummy` input produces:
44+
45+
```
46+
[error] [config] dummy: unknown configuration property 'invalid_property_that_does_not_exist'.
47+
```

administration/configuring-fluent-bit/yaml/pipeline-section.md

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,49 @@ The `inputs` section defines one or more [input plugins](../../../pipeline/input
7777

7878
The `name` parameter is required and defines for Fluent Bit which input plugin should be loaded. The `tag` parameter is required for all plugins except for the `forward` plugin, which provides dynamic tags.
7979

80+
### Shared HTTP listener settings for inputs
81+
82+
Some HTTP-based input plugins share the same listener implementation and support the following common settings in addition to their plugin-specific parameters:
83+
84+
These settings are shared by HTTP-based inputs such as `http`, `splunk`,
85+
`elasticsearch`, `opentelemetry`, and `prometheus_remote_write`.
86+
Use these keys the same way across those plugins.
87+
88+
If a plugin page shows one of the `http_server.*` keys in its configuration
89+
table, it is documenting one of these shared listener settings, not a
90+
plugin-specific behavior.
91+
92+
| Key | Description | Default |
93+
| --- | ----------- | ------- |
94+
| `http_server.http2` | Enable HTTP/2 support for the input listener. | `true` |
95+
| `http_server.buffer_max_size` | Set the maximum size of the HTTP request buffer. | `4M` |
96+
| `http_server.buffer_chunk_size` | Set the allocation chunk size used for the HTTP request buffer. | `512K` |
97+
| `http_server.max_connections` | Set the maximum number of concurrent active HTTP connections. `0` means unlimited. | `0` |
98+
| `http_server.workers` | Set the number of HTTP listener worker threads. | `1` |
99+
| `http_server.ingress_queue_event_limit` | Set the maximum number of deferred ingress queue entries. This setting applies only when `http_server.workers` is greater than `1`. | `8192` |
100+
| `http_server.ingress_queue_byte_limit` | Set the maximum size of the deferred ingress queue. This setting applies only when `http_server.workers` is greater than `1`. | `256M` |
101+
102+
When `http_server.workers` is `1`, Fluent Bit does not use the deferred
103+
ingress queue, so the two `http_server.ingress_queue_*` settings have no
104+
effect.
105+
106+
For backward compatibility, some plugins also accept the legacy aliases `http2`, `buffer_max_size`, `buffer_chunk_size`, `max_connections`, and `workers`.
107+
108+
### Incoming `OAuth 2.0` `JWT` validation settings
109+
110+
The HTTP-based input plugins that support bearer token validation share the following `oauth2.*` settings:
111+
112+
| Key | Description | Default |
113+
| --- | ----------- | ------- |
114+
| `oauth2.validate` | Enable `OAuth 2.0` `JWT` validation for incoming requests. | `false` |
115+
| `oauth2.issuer` | Expected issuer (`iss`) claim. Required when `oauth2.validate` is `true`. | _none_ |
116+
| `oauth2.jwks_url` | `JWKS` endpoint URL used to fetch public keys for token validation. Required when `oauth2.validate` is `true`. | _none_ |
117+
| `oauth2.allowed_audience` | Audience claim to enforce when validating tokens. | _none_ |
118+
| `oauth2.allowed_clients` | Authorized `client_id` or `azp` claim values. This key can be specified multiple times. | _none_ |
119+
| `oauth2.jwks_refresh_interval` | How often in seconds to refresh cached `JWKS` keys. | `300` |
120+
121+
When validation is enabled, requests without a valid `Authorization: Bearer <token>` header are rejected.
122+
80123
### Example input configuration
81124

82125
The following is an example of an `inputs` section that contains a `cpu` plugin.
@@ -127,6 +170,29 @@ The `outputs` section defines one or more [output plugins](../../../pipeline/out
127170

128171
Fluent Bit can route up to 256 output plugins.
129172

173+
### Outgoing `OAuth 2.0` client credentials settings
174+
175+
Output plugins that support outgoing `OAuth 2.0` authentication can expose the following shared `oauth2.*` settings:
176+
177+
| Key | Description | Default |
178+
| --- | ----------- | ------- |
179+
| `oauth2.enable` | Enable `OAuth 2.0` client credentials for outgoing requests. | `false` |
180+
| `oauth2.token_url` | Token endpoint URL. | _none_ |
181+
| `oauth2.client_id` | Client ID. | _none_ |
182+
| `oauth2.client_secret` | Client secret. | _none_ |
183+
| `oauth2.scope` | Optional scope parameter. | _none_ |
184+
| `oauth2.audience` | Optional audience parameter. | _none_ |
185+
| `oauth2.resource` | Optional resource parameter. | _none_ |
186+
| `oauth2.auth_method` | Client authentication method. Supported values: `basic`, `post`, `private_key_jwt`. | `basic` |
187+
| `oauth2.jwt_key_file` | PEM private key file used with `private_key_jwt`. | _none_ |
188+
| `oauth2.jwt_cert_file` | Certificate file used to derive the `kid` or `x5t` header value for `private_key_jwt`. | _none_ |
189+
| `oauth2.jwt_aud` | Audience to use in `private_key_jwt` assertions. Defaults to `oauth2.token_url` when unset. | _none_ |
190+
| `oauth2.jwt_header` | JWT header claim name used for the thumbprint. Supported values: `kid`, `x5t`. | `kid` |
191+
| `oauth2.jwt_ttl_seconds` | Lifetime in seconds for `private_key_jwt` client assertions. | `300` |
192+
| `oauth2.refresh_skew_seconds` | Seconds before expiry at which to refresh the access token. | `60` |
193+
| `oauth2.timeout` | Timeout for token requests. | `0s` |
194+
| `oauth2.connect_timeout` | Connect timeout for token requests. | `0s` |
195+
130196
### Example output configuration
131197

132198
The following is an example of an `outputs` section that contains a `stdout` plugin:

administration/configuring-fluent-bit/yaml/service-section.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ The `service` section of YAML configuration files defines global properties of t
3636
| `streams_file` | Path for the [stream processor](../../../stream-processing/overview.md) configuration file. This file defines the rules and operations for stream processing in Fluent Bit. Stream processor configurations can also be defined directly in the `streams` section of YAML configuration files. | _none_ |
3737
| `windows.maxstdio` | If specified, adjusts the limit of `stdio`. Only provided for Windows. Values from `512` to `2048` are allowed. | `512` |
3838

39+
The `service` section only controls the built-in monitoring and control HTTP server. Plugin-specific HTTP listener settings such as `http_server.http2`, `http_server.buffer_max_size`, `http_server.buffer_chunk_size`, `http_server.max_connections`, `http_server.workers`, `http_server.ingress_queue_event_limit`, and `http_server.ingress_queue_byte_limit` are configured on the relevant input plugin in the [`pipeline.inputs`](../yaml/pipeline-section.md#shared-http-listener-settings-for-inputs) section.
40+
3941
## Storage configuration
4042

4143
The following storage-related keys can be set as children to the `storage` key:

0 commit comments

Comments
 (0)