如何重用Logstash编解码器或模式定义?

时间:2014-12-02 00:41:05

标签: logstash

背景

目前在我的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块中重复使用它?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)