# Configuration File

![](https://static.scarf.sh/a.png?x-pxid=5e67142e-3887-4b56-b940-18494bcc23a7)

One of the ways to configure Fluent Bit is using a main configuration file. Fluent Bit allows the use one configuration file that works at a global scope and uses the defined [Format and Schema](https://docs.fluentbit.io/manual/3.2/administration/configuring-fluent-bit/classic-mode/format-schema).

The main configuration file supports four sections:

* Service
* Input
* Filter
* Output

It's also possible to split the main configuration file into multiple files using the Include File feature to include external files.

## Service

The `Service` section defines global properties of the service. The following keys are:

| Key                          | Description                                                                                                                                                                                                                                                                                                | Default Value |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- |
| `flush`                      | Set the flush time in `seconds.nanoseconds`. The engine loop uses a Flush timeout to define when it's required to flush the records ingested by input plugins through the defined output plugins.                                                                                                          | `1`           |
| `grace`                      | Set the grace time in `seconds` as an integer value. The engine loop uses a grace timeout to define wait time on exit.                                                                                                                                                                                     | `5`           |
| daemon                       | Boolean. Determines whether Fluent Bit should run as a Daemon (background). Allowed values are: `yes`, `no`, `on`, and `off`. Don't enable when using a Systemd based unit, such as the one provided in Fluent Bit packages.                                                                               | `Off`         |
| `dns.mode`                   | Set the primary transport layer protocol used by the asynchronous DNS resolver. Can be overridden on a per plugin basis.                                                                                                                                                                                   | `UDP`         |
| `log_file`                   | Absolute path for an optional log file. By default all logs are redirected to the standard error interface (stderr).                                                                                                                                                                                       | *none*        |
| `log_level`                  | Set the logging verbosity level. Allowed values are: `off`, `error`, `warn`, `info`, `debug`, and `trace`. Values are cumulative. If `debug` is set, it will include `error`, `warning`, `info`, and `debug`. Trace mode is only available if Fluent Bit was built with the *`WITH_TRACE`* option enabled. | `info`        |
| `parsers_file`               | Path for a `parsers` configuration file. Multiple `Parsers_File` entries can be defined within the section.                                                                                                                                                                                                | *none*        |
| `plugins_file`               | Path for a `plugins` configuration file. A `plugins` configuration file defines paths for external plugins. [See an example](https://github.com/fluent/fluent-bit/blob/master/conf/plugins.conf).                                                                                                          | *none*        |
| `streams_file`               | Path for the Stream Processor configuration file. [Learn more about Stream Processing configuration](https://docs.fluentbit.io/manual/3.2/stream-processing/introduction).                                                                                                                                 | *none*        |
| `http_server`                | Enable the built-in HTTP Server.                                                                                                                                                                                                                                                                           | `Off`         |
| `http_listen`                | Set listening interface for HTTP Server when it's enabled.                                                                                                                                                                                                                                                 | `0.0.0.0`     |
| `http_port`                  | Set TCP Port for the HTTP Server.                                                                                                                                                                                                                                                                          | `2020`        |
| `coro_stack_size`            | Set the coroutines stack size in bytes. The value must be greater than the page size of the running system. Setting the value too small (`4096`) can cause coroutine threads to overrun the stack buffer. The default value of this parameter shouldn't be changed.                                        | `24576`       |
| `scheduler.cap`              | Set a maximum retry time in seconds. Supported in v1.8.7 and greater.                                                                                                                                                                                                                                      | `2000`        |
| `scheduler.base`             | Set a base of exponential backoff. Supported in v1.8.7 and greater.                                                                                                                                                                                                                                        | `5`           |
| `json.convert_nan_to_null`   | If enabled, `NaN` converts to `null` when Fluent Bit converts `msgpack` to `json`.                                                                                                                                                                                                                         | `false`       |
| `sp.convert_from_str_to_num` | If enabled, Stream processor converts from number string to number type.                                                                                                                                                                                                                                   | `true`        |

The following is an example of a `SERVICE` section:

```python
[SERVICE]
    Flush           5
    Daemon          off
    Log_Level       debug
```

For scheduler and retry details, see [scheduling and retries](https://docs.fluentbit.io/manual/3.2/scheduling-and-retries#Scheduling-and-Retries).

## Config input

The `INPUT` section defines a source (related to an input plugin). Each [input plugin](https://docs.fluentbit.io/manual/pipeline/inputs) can add its own configuration keys:

| Key         | Description                                                                                                                                                          |
| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Name`      | Name of the input plugin.                                                                                                                                            |
| `Tag`       | Tag name associated to all records coming from this plugin.                                                                                                          |
| `Log_Level` | Set the plugin's logging verbosity level. Allowed values are: `off`, `error`, `warn`, `info`, `debug`, and `trace`. Defaults to the `SERVICE` section's `Log_Level`. |

`Name` is mandatory and tells Fluent Bit which input plugin to load. `Tag` is mandatory for all plugins except for the `input forward` plugin, which provides dynamic tags.

### Example

The following is an example of an `INPUT` section:

```python
[INPUT]
    Name cpu
    Tag  my_cpu
```

## Config filter

The `FILTER` section defines a filter (related to an filter plugin). Each filter plugin can add it own configuration keys. The base configuration for each `FILTER` section contains:

| Key           | Description                                                                                                                                                          |
| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Name`        | Name of the filter plugin.                                                                                                                                           |
| `Match`       | A pattern to match against the tags of incoming records. Case sensitive, supports asterisk (`*`) as a wildcard.                                                      |
| `Match_Regex` | A regular expression to match against the tags of incoming records. Use this option if you want to use the full regular expression syntax.                           |
| `Log_Level`   | Set the plugin's logging verbosity level. Allowed values are: `off`, `error`, `warn`, `info`, `debug`, and `trace`. Defaults to the `SERVICE` section's `Log_Level`. |

`Name` is mandatory and lets Fluent Bit know which filter plugin should be loaded. `Match` or `Match_Regex` is mandatory for all plugins. If both are specified, `Match_Regex` takes precedence.

### Filter example

The following is an example of a `FILTER` section:

```python
[FILTER]
    Name  grep
    Match *
    Regex log aa
```

## Config output

The `OUTPUT` section specifies a destination that certain records should go to after a `Tag` match. Fluent Bit can route up to 256 `OUTPUT` plugins. The configuration supports the following keys:

| Key           | Description                                                                                                                                                          |
| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Name`        | Name of the output plugin.                                                                                                                                           |
| `Match`       | A pattern to match against the tags of incoming records. Case sensitive and supports the asterisk (`*`) character as a wildcard.                                     |
| `Match_Regex` | A regular expression to match against the tags of incoming records. Use this option if you want to use the full regular expression syntax.                           |
| `Log_Level`   | Set the plugin's logging verbosity level. Allowed values are: `off`, `error`, `warn`, `info`, `debug`, and `trace`. Defaults to the `SERVICE` section's `Log_Level`. |

### Output example

The following is an example of an `OUTPUT` section:

```python
[OUTPUT]
    Name  stdout
    Match my*cpu
```

### Example: collecting CPU metrics

The following configuration file example demonstrates how to collect CPU metrics and flush the results every five seconds to the standard output:

```python
[SERVICE]
    Flush     5
    Daemon    off
    Log_Level debug

[INPUT]
    Name  cpu
    Tag   my_cpu

[OUTPUT]
    Name  stdout
    Match my*cpu
```

## Config Include File

To avoid complicated long configuration files is better to split specific parts in different files and call them (include) from one main file. The `@INCLUDE` can be used in the following way:

```
@INCLUDE somefile.conf
```

The configuration reader will try to open the path `somefile.conf`. If not found, the reader assumes the file is on a relative path based on the path of the base configuration file:

* Main configuration path: `/tmp/main.conf`
* Included file: `somefile.conf`
* Fluent Bit will try to open `somefile.conf`, if it fails it will try `/tmp/somefile.conf`.

The `@INCLUDE` command only works at top-left level of the configuration line, and can't be used inside sections.

Wildcard character (`*`) supports including multiple files. For example:

```
@INCLUDE input_*.conf
```

Files matching the wildcard character are included unsorted. If plugin ordering between files needs to be preserved, the files should be included explicitly.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.fluentbit.io/manual/3.2/administration/configuring-fluent-bit/classic-mode/configuration-file.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
