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



Background

目前在我的 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 没有通用变量。除非您可以使用多行过滤器,否则最好的办法是使用具有模板支持的配置管理系统来生成和部署 Logstash 配置文件。无论如何,您都不应该手动维护它们。

您也可以使用 GELF: 将 catalina 日志直接推送到 logstash: http://www.paluch.biz/blog/105-integrating-logstash-with-tomcat-7.html

参见 如何将 Tomcat6 的 catalina.out 文件与 Logstash + ElasticSearch + Kibana 集成?

最新更新