logstash或filebeat从tomcat日志创建多个输出文件

lokaqttq  于 2022-12-09  发布在  Logstash
关注(0)|答案(1)|浏览(198)

我需要解析一个tomcat日志文件并将其输出到几个输出文件中。
每个文件都是某个过滤器的结果,该过滤器将挑选tomcat文件中与一系列正则表达式或其他转换规则匹配的某些条目。
目前我正在使用Python脚本进行此操作,但它不是很灵活。有没有可配置的工具来完成此操作?
我研究过filebeat和logstash [我对它们都不熟悉],但不清楚是否可以将它们配置为将单个输入文件Map到多个输出文件,每个输出文件都有一组不同的filter/grok表达式。
是否可以使用filebeat/logstash实现这一点?

xqkwcwgp

xqkwcwgp1#

如果所有的日志文件都在相同的服务器上,你不需要Filebeat. Logstash就可以完成这项工作。
下面是一个配置logstash的例子。在输入中,你有tomcat日志文件,在解析日志后,你有依赖于loglevel的多输出(json)。
grok也是一个示例,您必须根据日志格式定义自己grok模式。

input { 
 file {
    path => "/var/log/tomcat.log"
  }
}

filter {
  grok {
    match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:loglevel} - %{POSTFIX_SESSIONID:sessionId}: %{GREEDYDATA:messageText}" }
  }
}

output {
  if [loglevel] == "info" {
     file {
       codec => "json"
       path => "/var/log/tomcat_info_parsed.log"
     }
  }
  
  if [loglevel] == "warning" {
     file {
       codec => "json"
       path => "/var/log/tomcat_warning_parsed.log"
     }
  }
}

相关问题