Automatic namespacing for configuration files

New automatic namespacing functionality to better organize your Vector configuration files

We’ve released automatic namespacing for configuration files, which simplifies namespace configuration for your pipelines.

As Vector continues to evolve, releasing more configuration-heavy functionality such as an aggregator role and pipelines features, there’s often a proliferation in the amount of configuration necessary to run Vector. The ability to organize Vector across multiple files was also lacking in any concrete recommendations for collaboration and navigation; Vector users may have dozens of Vector configuration files, from multiple source files to countless sink files, in a single directory.

Let’s look at how we can refactor an existing set of Vector configuration files.

Assuming Vector is loaded using the configuration via --config-dir /etc/vector:

/etc/vector/
│   file001.toml
│   file002.toml
│   file003.toml
│   ...
│   file022.toml
│   file023.toml

We can update this using Vector’s new automatic namespacing to organize the configuration into separate files based on Vector’s configuration directory structure. This makes it easy for users like you to split up your configuration files and collaborate with others on their team.

When using --config-dir to provide Vector’s configuration, it will look for subdirectories with the component types (e.g. transforms, or sources) and automatically infer that the files in these directories refer to that type of component. Further, Vector will use filenames of the configuration files as their component ID. The end result is that you have to specify less configuration as Vector can infer the component type and id from the directory structure.

Using the above example, now with automatic namespacing, you can update this to look like:

/etc/vector/
└───sources/
│   │   file001.toml
│   │   ...
│   │   file005.toml
└───transforms/
│   │   file006.toml
│   │   ...
│   │   file016.toml
└───sinks/
    │   file017.toml
    │   file022.toml

The configuration files become simplified from:

# /etc/vector/file017.toml
[sinks.foo]
type = "anything"

to:

# /etc/vector/sinks/file017.toml
type = "anything"

This can similarly be applied to the newly added enrichment_tables and tests as well.

If you any feedback for us, let us know on our Discord chat or on Twitter.