【问题标题】:What is the format of logstash config filelogstash 配置文件的格式是什么
【发布时间】:2014-01-29 21:09:06
【问题描述】:

logstash 是否在配置文件中使用自己的文件语法?是否有任何配置文件语法的解析器或验证器?

对于不使用 logstash 但对文件格式有所了解的任何人,这里有一个示例语法:

input {
  file {
    path => "/var/log/messages"
    type => "syslog"
  }

  file {
    path => "/var/log/apache/access.log"
    type => "apache"
  }
}

【问题讨论】:

  • 您现在可以在使用--configtest 开关调用logstash 时检查配置。我也想知道这种格式是什么(意思是它是受什么启发,还是只是他们自己的想法)。

标签: serialization logstash


【解决方案1】:

Logstash 配置文件是由 Logstash 人员使用Treetop 开发的自定义格式。

语法本身在源文件grammar.treetop 中描述,并使用Treetop 编译到自定义grammar.rb 解析器中。

然后该解析器是 used by the pipeline.rb 文件,以便从 Logstash 配置设置管道。

如果您不太喜欢 Ruby,还有一个名为 node-logstash 的有趣项目,它在 Node.js 中提供了 Logstash 实现。配置格式与官方 Logstash 完全相同,尽管解析器显然是为 Node.js 编写的不同。在这个项目中,jison 中描述了 Logstash configuration file grammar,解析器也是 automatically generated,但只要需要生成的解析器,任何 Node.js 模块都可以使用它。

【讨论】:

【解决方案2】:

您可以使用以下命令来验证您的 logstash 配置文件是否有效:

bin/logstash --configtest --config <your config file>

【讨论】:

    【解决方案3】:

    显然,自从发布答案以来,命令行参数已经更新,--configtest 和 --config 参数不再有效。为了让 Logstash(至少 v5)验证配置文件:

    bin/logstash -t -f config.conf
    

    使用扩展参数,它看起来像这样:

    bin/logstash --config.test_and_exit --path.config config.conf
    

    【讨论】:

      【解决方案4】:

      到目前为止。 logstash 配置没有任何解析器或验证器。您只能使用 logstash 来验证配置。

      有关配置的更多信息,您可以访问here。本页介绍了所有格式。

      【讨论】:

        【解决方案5】:

        Logstash-Config Go package 配置为 Go 中的 Logstash 配置文件提供了一个现成的解析器和抽象语法树。

        Logstash配置格式解析的语法基础是原来的Logstash Treetop grammar。

        logstash-config 使用pigeon 从 PEG(解析器表达式语法)生成解析器。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-08-24
          • 1970-01-01
          • 2021-05-22
          • 1970-01-01
          • 2014-11-24
          • 1970-01-01
          • 2014-10-16
          • 2013-07-14
          相关资源
          最近更新 更多