Awesome
logstash-config : parser and abstract syntax tree for Logstash config files
Overview
The Go package config provides a ready to use parser for Logstash (github) configuration files.
The basis of the grammar for the parsing of the Logstash configuration format is the original Logstash Treetop grammar which could be used with only minor changes.
logstash-config uses pigeon to generate the parser from the PEG (parser expression grammar). Special thanks to Martin Angers (mna).
This package is currently under development, no API guaranties.
Install
go get -t github.com/breml/logstash-config/...
Usage
mustache
mustache
is a command line tool that allows to syntax check, lint and format Logstash configuration files. The name of
the tool is inspired by the original Logstash Logo (wooden character with an eye-catching mustache).
The check
command verifies the syntax of Logstash configuration files:
mustache check file.conf
The lint
command checks for problems in Logstash configuration files.
The following checks are performed:
- Valid Logstash configuration file syntax
- No comments in exceptional places (these are comments, that are valid by the Logstash configuration file syntax, but but are located in exceptional or uncommon locations)
- Precence of an
id
attribute for each plugin in the Logstash configuration
If the --auto-fix-id
flag is passed, each plugin gets automatically an ID. Be aware, that this potentially reformats
the Logstash configuration files.
mustache lint --auto-fix-id file.conf
With the format
command, mustache returns the provided configuration files in a standardized format (indentation,
location of comments). By default, the reformatted file is print to standard out. If the flag --write-to-source
is provided, the Logstash config files are reformatted in place.
mustache format --write-to-source file.conf
Use the --help
flag to get more information about the usage of the tool.
Rebuild parser
- Get and install pigeon.
- Run
go generate
in the root directory of this repository.
Author
Copyright 2017-2021 by Lucas Bremgartner (breml)