首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从logstash过滤器中的多个日志行生成单个输出json对象?

如何从logstash过滤器中的多个日志行生成单个输出json对象?
EN

Stack Overflow用户
提问于 2018-01-12 06:11:41
回答 1查看 681关注 0票数 0

我是Logstash和Grok过滤器的新手。我想解析这样的日志-

代码语言:javascript
复制
2018-01-11 17:17:16,071 | DEBUG | [Thread-2] | com.example.monitor.MonitorHelper:cpuMonitoring(307) | CommittedVirtualMemorySize :: 401186816 
2018-01-11 17:17:16,071 | DEBUG | [Thread-2] | com.example.monitor.MonitorHelper:cpuMonitoring(307) | FreePhysicalMemorySize :: 1751130112 
2018-01-11 17:17:16,072 | DEBUG | [Thread-2] | com.example.monitor.MonitorHelper:cpuMonitoring(307) | FreeSwapSpaceSize :: 4294967295 
2018-01-11 17:17:16,694 | DEBUG | [Thread-2] | com.example.monitor.MonitorHelper:cpuMonitoring(307) | ProcessCpuLoad :: -1.0 
2018-01-11 17:17:16,694 | DEBUG | [Thread-2] | com.example.monitor.MonitorHelper:cpuMonitoring(307) | ProcessCpuTime :: 47471104300 
2018-01-11 17:17:16,698 | DEBUG | [Thread-2] | com.example.monitor.MonitorHelper:cpuMonitoring(307) | SystemCpuLoad :: 1.0 
2018-01-11 17:17:16,698 | DEBUG | [Thread-2] | com.example.monitor.MonitorHelper:cpuMonitoring(307) | TotalPhysicalMemorySize :: 4285849600 
2018-01-11 17:17:16,698 | DEBUG | [Thread-2] | com.example.monitor.MonitorHelper:cpuMonitoring(307) | TotalSwapSpaceSize :: 4294967295 

像这样的JSON对象-

代码语言:javascript
复制
{
  "timestamp": "2018-01-11 17:17:16,071",
  "log_level": "DEBUG",
  "thread_name": "Thread-2",
  "class": "com.example.monitor.MonitorHelper",
  "method": "cpuMonitoring",
  "line_number": "307",
  "CommittedVirtualMemorySize": "401186816",
  "FreePhysicalMemorySize": "1751130112",
  "FreeSwapSpaceSize": "4294967295",
  "ProcessCpuLoad": "-1.0",
  "ProcessCpuTime": "47471104300",
  "SystemCpuLoad": "1.0",
  "TotalPhysicalMemorySize": "4285849600",
  "TotalSwapSpaceSize": "4294967295"
}

到现在为止我的感觉是-

%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:log_level} {GREEDYDATA:log_message} [(?\b\w-+\b)] \x{GREEDYDATA:log_message}

为每个输入日志行提供多个输出行。JSON对象看起来是这样的-

代码语言:javascript
复制
{
  "timestamp": "2018-01-11 17:17:16,071",  
  "log_level": "DEBUG",
  "thread_name": "Thread-2",
  "class": "com.example.monitor.MonitorHelper",
  "method": "cpuMonitoring",
  "line_number": "307",
  "log_message": "CommittedVirtualMemorySize :: 401186816 "
}

为了达到这个目标,你能帮我做些什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-19 21:09:51

第一个建议是将原始日志输出更改为一行。

如果不能,并且正在使用filebeat发送文件,那么在将其发送到logstash之前,请使用FB的多行配置合并行。

如果不使用filebeat,可以尝试在logstash中使用多行编解码器

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48220540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档