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

如何重用Logstash编解码器或模式定义? 背景,logstash,Logstash,目前在我的Logstash配置中,我有如下内容: input { file { type => "catalina-out" path => [ "/var/tomcat/logs/catalina.out"] sincedb_path => "$HOME/.sincedb" tags => ["tomcat", "catalina-out"] codec => multiline { pattern =>

目前在我的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输出文件,我想将此
编解码器
(或者,不太理想的是,
模式
)与其他
文件
定义一起重用

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

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
  }
...
问题
如何将
编解码器
(或者如果需要,将
模式
)与
文件
块分开定义一次,以便在其他
文件
块中重用它?

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

您也可以使用GELF将catalina日志直接推送到日志库:


另请参见

感谢您的回复。正如您所提到的,我最终将一个
多行
放在一个
过滤器
中的一个条件中。我们正在使用一个模板系统,但是为了理解它并保持它的简单性,我尝试尽可能多地使用提供的工具。