您的位置:首页 > 其它

ELK显示多行日志

2016-03-31 15:41 369 查看
1.默认,logstash对日志文件的选取是以单行为单位的;但像log4j这种输出日志经常会是以时间头开始的多行日志;

2.显示多行,需要配置logstash的config;

input {
file {
   type =>"cbb-sh-robot"
   path => ["/home/weblogic/apps/cbb-robot/cbb-sender-sh-pre-robot-logs/cbb.log","/home/weblogic/apps/cbb-robot/cbb-sender-sh-pre-robot-logs/cbb-robot.log"]
   codec => multiline {
        pattern=> "^%{TIMESTAMP_ISO8601} "
        negate => true
        what=> previous
}
  }
file{
   type =>"cbb-web"
   path => ["/home/weblogic/Oracle/Middleware/user_projects/domains/base_domain/cbb-web-logs/cbb.log"]

   codec => multiline {
        pattern=> "^%{TIMESTAMP_ISO8601} "
        negate => true
        what=> previous
}
}
}

output {
  elasticsearch { hosts => ["localhost:9200"] }
  stdout { codec => rubydebug }
}

 

multiline插件最重要的方面:

pattern
选项指定一个正则表达式。 事件匹配指定的正则表达式来确定是前一个事件的内容还是新的事件的内容。可以使用grok正则表达式的模板来配置该选项。
what
选项有两个选择值:
previous
或者
next。
previous
值指定行匹配pattern选项的内容是上一行的一部分。
next
指定行匹配pattern选项的内容是下一行的一部分。*
negate选项适用于
multiline codec 行不匹配pattern选项指定的正则表达式。
该配置使用negate => true 选项来指定任何不是以时间戳开始的行属于前行。也就是不匹配pattern的行都属于前行的内容的一部分。





如上图所示,2222 3333 4444 均为多行的数据,可以被正确的显示在一个时间头开始的日志里;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: