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 集成?