logstash是否在配置文件中使用自己的文件语法?是否有配置文件语法的解析器或验证器?
对于那些不使用logstash但对文件格式有所了解的人来说,这是一个示例语法:
input {
file {
path => "/var/log/messages"
type => "syslog"
}
file {
path => "/var/log/apache/access.log"
type => "apache"
}
}
答案 0 :(得分:19)
Logstash配置文件是由Logstash人员使用Treetop开发的自定义格式。
语法本身在源文件grammar.treetop
中描述,并使用Treetop编译到自定义grammar.rb
解析器中。
然后该解析器为used by the pipeline.rb
文件,以便从Logstash配置中设置管道。
如果你对Ruby没有那么多,还有一个名为node-logstash的有趣项目,它在Node.js中提供了一个Logstash实现。配置格式与官方Logstash完全相同,尽管解析器显然是为Node.js编写的另一个。在这个项目中,Logstash configuration file grammar在jison中描述,解析器也是automatically generated,但任何Node.js模块都可以使用它,只需要生成解析器。
答案 1 :(得分:9)
您可以使用以下命令验证您的logstash配置文件是否有效:
bin/logstash --configtest --config <your config file>
答案 2 :(得分:4)
显然,命令行参数已更新,因为已发布答案且--configtest
和--config
参数不再有效。要求Logstash(至少v5)验证配置文件:
bin/logstash -t -f config.conf
扩展参数看起来像这样:
bin/logstash --config.test_and_exit --path.config config.conf
答案 3 :(得分:1)
到目前为止。 logstash配置没有任何解析器或验证器。您只能使用logstash来验证配置。
有关配置的详细信息,请访问here。所有格式都在此页面中介绍。
答案 4 :(得分:0)
Logstash-Config Go package配置为Go中的Logstash配置文件提供了立即可用的解析器和抽象语法树。
Logstash配置格式的语法分析基础是原始的Logstash Treetop grammar。
logstash-config使用pigeon从PEG(解析器表达语法)生成解析器。