Logstash 用于选择和格式化某些日志行的Grok筛选器

Logstash 用于选择和格式化某些日志行的Grok筛选器,logstash,logstash-grok,Logstash,Logstash Grok,我正在编写一个grok过滤器来解析我的非结构化应用程序日志。我需要的是查找某些行并以特定格式生成输出。e、 下面是我的日志 2018-05-07 01:19:40 M :Memory (xivr = 513.2 Mb, system = 3502.0 Mb, physical = 5386.7 Mb), CpuLoad (sys = 0%, xivr = 0%) 2018-05-07 01:29:40 M :Memory (xivr = 513.2 Mb, system = 3495.3 Mb,

我正在编写一个grok过滤器来解析我的非结构化应用程序日志。我需要的是查找某些行并以特定格式生成输出。e、 下面是我的日志

2018-05-07 01:19:40 M :Memory (xivr = 513.2 Mb, system = 3502.0 Mb, physical = 5386.7 Mb), CpuLoad (sys = 0%, xivr = 0%)
2018-05-07 01:29:40 M :Memory (xivr = 513.2 Mb, system = 3495.3 Mb, physical = 5370.1 Mb), CpuLoad (sys = 0%, xivr = 0%)
2018-05-07 05:51:19 1 :Hangup call
***2018-05-07 05:51:22 24 :Answer call from 71840746 for 91783028 [C:\xivr\es\IVR-Dialin.dtx***]
2018-05-07 05:51:30 24 :Hangup call
***2018-05-07 05:51:34 24 :Answer call from 71840746 for 91783028 [C:\xivr\es\IVR-Dialin.dtx]***
2018-05-07 00:31:21 45 :Device Dialogic Digital dxxxB12C1 [gc60.dev - Dialogic (SDK 6.0) ver 3.0.702:11646] (ThreadID: 1FF0, DriverChannel: 44)
2018-05-07 00:31:22 40 :Device Dialogic Digital dxxxB10C4 [gc60.dev - Dialogic (SDK 6.0) ver 3.0.702:11646] (ThreadID: 1B2C, DriverChannel: 39)
我只需要在我的Kibana中输入以下格式中用***突出显示的行:其他行应该忽略

日志时间戳:2018-05-07 05:51:22
频道id:24
来源编号: 71840746
目的地号码:91783028


如何实现这一点?

您可以明确地编写该特定模式的独特之处,并用于其他模式

在你的情况下,格罗克模式是

%{TIMESTAMP_ISO8601:Logtimestamp} %{NUMBER:Channel_id} :Answer call from %{NUMBER:Source_number} for %{NUMBER:Destination_Number} %{GREEDYDATA:etc}
它将只匹配以下模式

2018-05-07 05:51:34 24 :Answer call from 71840746 for 91783028 [C:\xivr\es\IVR-Dialin.dtx]
解释 代码是
%{SYNTAX:SEMANTIC}

在你的过滤器里

  • %{TIMESTAMP_ISO8601:Logtimestamp}
    匹配
    2018-05-07 05:51:34
  • %{NUMBER:Channel_id}
    match
    24
  • :接听来自
    的电话时,会按字面意思匹配字符串
  • %{NUMBER:Source_NUMBER}
    匹配
    71840746
  • %{NUMBER:Destination_NUMBER}
    匹配
    91783028
  • %{GREEDYDATA:etc}
    匹配其余数据,即
    [C:\xivr\es\IVR Dialin.dtx]
按这个顺序

输出:

{
  "Logtimestamp": [
    [
      "2018-05-07 05:51:22"
    ]
  ],
  "Channel_id": [
    [
      "24"
    ]
  ],
  "Source_number": [
    [
      "71840746"
    ]
  ],
  "Destination_Number": [
    [
      "91783028"
    ]
  ],
  "etc": [
    [
      "[C:\\xivr\\es\\IVR-Dialin.dtx***]"
    ]
  ]
}
你可以


希望有帮助。

谢谢,使用该模式创建了它,还添加了过滤器以删除带有标记_grokpatternfailure的行。然而,我现在遇到了一个不同的问题。文件节拍显示以下错误。我打开了源和目标之间的所有端口。连接似乎正在关闭。2018-05-15T07:55:57.521-0400错误logstash/async.go:235未能发布事件,原因是:写入tcp 10.5.52.168:54592->xx.xx.xx:5044:wsasend:远程主机强制关闭了现有连接。2018-05-15T07:55:58.522-0400错误管道/输出。go:92未能发布事件:写入tcp 10.5.52.168:54592->xx.xx.xx.xx:5044:wsasend:现有连接被远程主机强制关闭。