【问题标题】:How to reuse Logstash codec or pattern definition?如何重用 Logstash 编解码器或模式定义?
【发布时间】:2014-12-02 00:41:04
【问题描述】:

背景

目前在我的 Logstash 配置中,我有类似的内容:

input {
  file {
    type => "catalina-out"
    path => [ "/var/tomcat/logs/catalina.out"]
    sincedb_path => "$HOME/.sincedb"
    tags => ["tomcat", "catalina-out"]
    codec => multiline {
      pattern => "(^.+Exception: .+)|(^\s+at .+)|(^\s+... \d+ more)|(^\s*Caused by:.+)|(%{LOGLEVEL}: %{GREEDYDATA})"
    what => "previous"
    }
  }
...

我想要完成的事情

我有很多 Tomcat 输出文件,我想将这个codec(或者,不太理想的pattern)与其他file 定义一起使用。

问题

我的问题是以下给了我一个错误:

input {

  tomcat_multiline_codec => multiline {
    pattern => "(^.+Exception: .+)|(^\s+at .+)|(^\s+... \d+ more)|(^\s*Caused by:.+)|(%{LOGLEVEL}: %{GREEDYDATA})"
    what => "previous"
  }

  file {
    type => "catalina-out"
    path => [ "/var/tomcat/logs/catalina.out"]
    sincedb_path => "$HOME/.sincedb"
    tags => ["tomcat", "catalina-out"]
    codec => tomcat_multiline_codec
  }
...

问题

我怎样才能将codec(或如果需要,pattern)与file 块分开定义一次,以便我可以在其他file 块中重复使用它?

【问题讨论】:

    标签: logstash


    【解决方案1】:

    这根本不受支持。 Logstash 没有通用变量。除非您可以使用多行 filter,否则最好的选择是使用具有模板支持的配置管理系统来生成和部署 Logstash 配置文件。无论如何,您不应该手动维护它们。

    【讨论】:

    • 感谢您的回复。正如您所提到的,我最终将multiline 放入filter 内的条件中。我们正在使用模板系统,但我尽量使用提供的工具,以便理解它并保持简单。
    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    • 2019-07-12
    • 2015-11-25
    • 2020-07-06
    相关资源
    最近更新 更多