Configuration parser for Fluent-bit
fluent-bit configuration parser will allow you to validate some aspects of fluent-bit configuration.
for more information about fluent-bit configuration you can visit fluent-bit website.
You can import the parser as follows:
import { FluentBitSchema } from '@calyptia/fluent-bit-config-parser';
This library offers a couple of methods:
schema
: it will return the parsed configuration as a fluent-bit schema.
toString()
: it will return the parsed schema, back to a string
source
: it will return the config as it was provided.
FluentBitSchema.isFluentBitConfiguration
: A static method, to validate if the configuration is fluentBit. It's important to notice, that this method, will not confirm if the provided config is valid. For that please see below:
import fs from 'fs';
import { FluentBitSchema } from '@calyptia/fluent-bit-config-parser';
const filePath = '/path/to/file.conf';
const file = fs.readFileSync(filePath, { encoding: 'utf-8' });
console.log(FluentBitSchema.isFluentBitConfiguration(file)); // => true/false
import fs from 'fs';
import { FluentBitSchema } from '@calyptia/fluent-bit-config-parser';
const filePath = '/path/to/file.conf';
const file = fs.readFileSync(filePath, { encoding: 'utf-8' });
try {
const config = new FluentBitSchema(file);
console.log('yay! my configuration is valid');
} catch (e) {
console.log(e.message); // this message will provide some insight int what went wrong.
}
import fs from 'fs';
import { FluentBitSchema } from '@calyptia/fluent-bit-config-parser';
const filePath = '/path/to/file.conf';
const file = fs.readFileSync(filePath, { encoding: 'utf-8' });
const config = new FluentBitSchema(file, filePath);
console.log(config.toString());
FluentBitSchema can handle directives such as @SET and @INCLUDE. That's why the second argument is a filePath
. Sometimes the configuration we create has full paths. These paths will most likely change when placing them in a repository. If that's your case, you can set ignoreFullPaths: true
and the parser will ignore @INCLUDES containing full paths. One handy example of this could be:
import fs from 'fs';
import { FluentBitSchema } from '@calyptia/fluent-bit-config-parser';
const filePath = '/path/to/file.conf';
const rawConfig = `
@INCLUDE /this/is/a/full/path/that/does/not/exist/in/my/repo/config.conf
[INPUT]
name dummy
`;
const file = fs.readFileSync(filePath, { encoding: 'utf-8' });
const config = new FluentBitSchema(file, filePath, { ignoreFullPaths: true });
console.log(config.toString()); // will not contain the @INCLUDE directive call.
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the MIT License. See LICENSE
for more information.