一尘不染

我如何在Logstash 5.1.2中为Tomcat / Java配置多行

tomcat

我使用logtash,filebeat,elasticsearch的5.1.2版本…“ ELK”

我尝试从tomcat服务器发送日志(catalina.out和apps-
java日志),但是无法完成,因为存在logstash多行过滤器/编解码器的配置问题。

我遵循以下说明
https://blog.lanyonm.org/articles/2014/01/12/logstash-multiline-tomcat-log-
parsing.html

Logstash.conf是这样的:

input {
    beats {
    port => 9000
    }
}

filter {
  if [type] == "tomcat-pro" {
    codec => "multiline" {
      patterns_dir => "/opt/logstash/patterns"
      pattern => "(^%{TOMCAT_DATESTAMP})|(^%{CATALINA_DATESTAMP})"
      negate => true
      what => "previous"
    }
  }
}

output {
    elasticsearch {
        hosts => ["localhost:9200"]
        index => "tomcat-pro"
    }   
}

Logstash接收filebeat文件。
Filebeat.yml

filebeat.prospectors:
- input_type: log
  document_type: tomcat-pro
  paths:
  - /opt/tomcat-test/logs/catalina.out

当我启动该服务时,控制台会向我显示以下内容:

[2017-01-26T13:10:33,712][ERROR][logstash.agent           ] fetched an invalid config {:config=>"input {\n    beats {\n    port => 9000\n    }\n}\n\nfilter {\n  if [type] == \"tomcat-pro\" {\n    codec => \"multiline\" {\n      patterns_dir => \"/opt/logstash/patterns\"\n      pattern => \"(^%{TOMCAT_DATESTAMP})|(^%{CATALINA_DATESTAMP})\"\n      negate => true\n      what => \"previous\"\n    }\n  }\n}\n\noutput {\n    elasticsearch {\n        hosts => [\"localhost:9200\"]\n        index => \"tomcat-pro\"\n    }   \n}\n", :reason=>"Expected one of #, { at line 9, column 11 (byte 96) after filter {\n  if [type] == \"tomcat-pro\" {\n    codec "}

摘要:

fetched an invalid config
reason=>"Expected one of #, { at line 9, column 11 (byte 96) after filter {\n  if [type] == \"tomcat-pro\" {\n    codec "}

我在Google中读过,建议在Filebeat中使用多行而不是在Logstash中使用多行,但是我的配置不很好…

有人可以帮我吗?:(

PD:我是西班牙人,对“谷歌翻译”感到抱歉。Si puedes响应者,西班牙语,大量


阅读 249

收藏
2020-06-16

共1个答案

一尘不染

我认为在Filebeat中进行多行处理是解决问题的方法,因此与其调试您发布的Logstash配置错误,不如我展示一个Filebeat配置,其中Filebeat在发送事件之前将这些行合并在一起。

如果仅将Logstash用于多行过滤器,则可以直接从Filebeat输出到Elasticsearch。但是,如果确实需要输出到Logstash,请按照说明配置与Logstash一起使用的Filebeat。

我在下面使用的模式尚未经过全面测试,因此请对照实际日志进行测试。

filebeat.prospectors:
- document_type: catalina-wine-mixer
  paths:
  - /opt/tomcat-test/logs/catalina.out
  multiline.pattern: '^([0-9]{4}-[0-9]{2}-[0-9]{2})|([J|F|M|A|M|S|O|N|D][a-z]{2} [0-9]{1,2}, [0-9]{2})'
  multiline.negate: true
  multiline.match: after

output.elasticsearch:
  hosts: ['http://localhost:9200']
2020-06-16