Regex fluend正则表达式解析问题-组合来自多个条目的日志消息

Regex fluend正则表达式解析问题-组合来自多个条目的日志消息,regex,parsing,logging,fluentd,Regex,Parsing,Logging,Fluentd,嗨,我正在尝试解析docker容器日志文件中的日志。 日志文件的外观如下所示: {“log”:“[S=26853604][BID=fb0e19:3](N 24959591)HandleARecordQuery- 主机:sip3.pstnhub.microsoft.com不在缓存中,正在设置计时器 [时间:18-09@08:30:55.728]\n,“流”:“标准输出”,“时间”:“2020-09-18T07:30:57.683119437Z”} {“log”:“[S=26853605][BID=

嗨,我正在尝试解析docker容器日志文件中的日志。 日志文件的外观如下所示:

{“log”:“[S=26853604][BID=fb0e19:3](N 24959591)HandleARecordQuery- 主机:sip3.pstnhub.microsoft.com不在缓存中,正在设置计时器 [时间:18-09@08:30:55.728]\n,“流”:“标准输出”,“时间”:“2020-09-18T07:30:57.683119437Z”} {“log”:“[S=26853605][BID=fb0e19:3](N 24959592) DNSResolver::HandleItemExpiredOnWaitForRecord: 主持人:sip3.pstnhub.microsoft.com [时间:18-09@08:30:55.788]\n,“流”:“标准输出”,“时间”:“2020-09-18T07:30:57.6831237377Z”} {“log”:“[S=26853606][BID=fb0e19:3](N 24959593) DNSResolver::HandleTimeExponWaitareRecord- 主机:sip3.pstnhub.microsoft.com已在外部表中解析 [时间:18-09@08:30:55.788]\n,“流”:“标准输出”,“时间”:“2020-09-18T07:30:57.683127537Z”} {“log”:“[S=26853607][BID=fb0e19:3](N 249594) SIPServersIPList::AddResolvedProxiseList(ProxySet 1)- sip3.pstnhub.microsoft.com已通过DNS解析为52.114.7.24 [时间:18-09@08:30:55.788]\n,“流”:“标准输出”,“时间”:“2020-09-18T07:30:57.683207738Z”} {“log”:“[S=26853608][BID=fb0e19:3](N 249595) SIPServersIPList::UpdateList(ProxySet 1)-更新过程已完成 [时间:18-09@08:30:55.788]\n,“流”:“标准输出”,“时间”:“2020-09-18T07:30:57.683236038Z”}

以下是我的fluentd解析器配置:

<source>
  @id fluentd-containers.log
  @type tail
  path /var/log/containers/*.log
  pos_file /var/log/containers.log.pos
  tag raw.kubernetes.*
  read_from_head true
  <parse>
    @type multi_format
    <pattern>
      format json
      time_key time
      time_format %Y-%m-%dT%H:%M:%S.%NZ
    </pattern>
    <pattern>
      format /^(?<time>.+) (?<stream>stdout|stderr) [^ ]* (?<log>.*)$/
      time_format %Y-%m-%dT%H:%M:%S.%N%:z
    </pattern>
  </parse>
</source>
<filter kubernetes.var.log.containers.**count-log**.log>
  @id filter_rsyslog
  @type parser
  key_name log
  reserve_data true
  <parse>
    @type regexp
    expression /^.*?\[S=(?<skey>.[0-9]+)\].*?(\[SID=(?<sid>.*?)\] | \s)(?<message>.*?)\[Time:(?<timedata>.*?)\]$/
  </parse>
</filter>

@id fluentd-containers.log
@型尾
路径/var/log/containers/*.log
pos_文件/var/log/containers.log.pos
标记raw.kubernetes*
从你的头上读出来是真的
@键入多字符格式
格式json
时间键时间
时间\u格式%Y-%m-%dT%H:%m:%S.%NZ
格式/^(?.+)(?标准输出|标准输出)[^]*(?*)$/
时间\u格式%Y-%m-%dT%H:%m:%S.%N%:z
@id过滤器\u rsyslog
@类型分析器
密钥名称日志
保留数据为真
@类型regexp
表达式/^.*.[S=(?[0-9]+)\].*(\[SID=(?.*)\].\S)(?.*?)\[时间:(?.*)]$/
问题在于fluentd将多个日志消息合并到一个条目中,生成的json如下所示:

{
"log": "[S=26852255] [SID=fb0e19:3:768876]  (N 24958326) (#498)gwSession[Allocated]. Handle:00007FD174227408; Global session ID: 899236dede666591 [Time:18-09@08:26:32.000]\n",
"stream": "stdout",
"skey": "26852255",
"sid": "fb0e19:3:768876",
"message": " (N 24958326) (#498)gwSession[Allocated]. Handle:00007FD174227408; Global session ID: 899236dede666591  (N 24958335) ---- Incoming SIP Message from 52.114.148.0:5061 to SIPInterface #1 (Teams_SIPInterface) TLS TO(#1520) SocketID(362205) ----  SIP/2.0 200 OK #012FROM: <sip:11.1.0.5>;tag=1c1113388569 #012TO: <sip:11.1.0.5> #012CSEQ: 1 OPTIONS #012CALL-ID: 494156082189202082632@sbc.connecttoteams.com #012VIA: SIP/2.0/TLS sbc.connecttoteams.com:5061;branch=z9hG4bKac2067450505 #012CONTENT-LENGTH: 0 #012ALLOW: INVITE,ACK,OPTIONS,CANCEL,BYE,NOTIFY #012SERVER: Microsoft.PSTNHub.SIPProxy v.2020.9.5.3 i.USWE2.4 #012 #012  (N 24958336) SIPLadder::FillVQMData not generated  (N 24958337) AcSIPDialog(#10663): Handling 200 OK in state DialogInitiated  (N 24958338) States: (#10663)AcSIPDialog[DialogInitiated->DialogConnected]  (N 24958339) SIPServersMngr::UpdateSetWithOnlineServer - Server 52.114.148.0 already on working servers list  (N 24958340) AcSIPDialog(#10663): Handling DIALOG_DISCONNECT_REQ in state DialogConnected  (N 24958341) States: (#10663)AcSIPDialog[DialogConnected->DialogDisconnected]  (N 24958342) SIPAppMngr::FreeDialogAPI - (#1557)  (N 24958343) States: (#10663)AcSIPDialog[Deallocated] #012 (#10663)AcSIPDialog[DialogDisconnected->DialogIdle]  (N 24958344) (#498)gwSession[Deallocated]  (N 24958345) (#518)gwSession[Allocated]. Handle:00007FD1742270E8; Global session ID: 012e10c242bc7c0b  (N 24958346) Condition Table matched on condition Index 0  (N 24958347) Classification Succeeded - Source IP Group #1 (Teams_IPGroup)  (N 24958348) States: (#1170)SBCRoutesIterator[InitialRouting->AlternativeRouting]  (N 24958349) SBC_ADMIT_DIALOGS_EV: (#1170)SBCRoutesIterator -> (#0)SBCAdmissionControlMngr  (N 24958350) CAC: Add SBC Incoming Other, IPG 1 (Teams_IPGroup): 1, SRD 0 (DefaultSRD): 1, SipIF 1 (Teams_SIPInterface): 1  (N 24958351) CAC: Add SBC Outgoing Other, IPG 1 (Teams_IPGroup): 1, SRD 0 (DefaultSRD): 1, SipIF 1 (Teams_SIPInterface): 1  (N 24958352) (#1170)Route found (0), Route by Address, IP Group 1 -> 1 (Teams_IPGroup -> Teams_IPGroup), Url:internal:0;" 
}
{
“日志”:“[S=26852255][SID=fb0e19:3:768876](N 24958326)(#498)gwSession[Allocated]。句柄:00007FD174227408;全局会话ID:899236DEDED66591[时间:18-09@08:26:32.000]\n“,
“流”:“标准输出”,
“skey”:“26852255”,
“sid”:“fb0e19:3:768876”,
“消息”:(N 24958326)(#498)gwSession[Allocated]。句柄:00007FD174227408;全局会话ID:899236dede666591(N 24958335)--传入SIP消息从52.114.148.0:5061到SIPInterface#1(团队SIPInterface)TLS到(#1520)SocketID(362205)----SIP/2.0 200 OK#012发件人:;tag=1c1113388569#012收件人:#012CSEQ:1选项#012CALL-ID:494156082189202082632@sbc.connecttoteams.com#012VIA:SIP/2.0/TLS sbc.connecttotems.com:5061;branch=z9hG4bKac2067450505#012CONTENT-LENGTH:0#012ALLOW:INVITE,ACK,OPTIONS,CANCEL,BYE,NOTIFY#012服务器:Microsoft.PSTNHub.SIPProxy v.2020.9.5.3 i.USWE2.4#012#012(N 24958336)SIPLadder::FillVQMData not generated(N 24958337)AcSIPDialog(#10663):处理200个OK in-state DialogInitiated(N 24958338)状态:(#10663)AcSIPDialog[DialogInitiated->DialogConnected](N 24958339)SIPServersMngr::UpdatesTwithOnline服务器-服务器52.114.148.0已在工作服务器列表(N 24958340)AcSIPDialog(#10663):处理状态对话框中的对话框断开请求DialogConnected(N24958341)状态:(#10663)AcSIPDialog[DialogConnected->DialogDisconnected](N24958342)SIPAppMngr::FreeDialogAPI-(#1557)(N24958343)状态:(#10663)AcSIPDialog[Deallocated]#012(#10663)AcSIPDialog[DialogDisconnected->DialogIdle](N24958344)gwSession[Deallocated](N 24958345)(#518)gwSession[Allocated]。句柄:00007FD1742270E8;全局会话ID:012e10c242bc7c0b(N 24958346)条件表匹配条件索引0(N 24958347)分类成功-源IP组#1(团队IPGroup)(N 24958348)状态:(#1170)SBCROUTE迭代器[初始路由->交替路由](N 24958349)SBC#u承认#u对话#EV:(#1170)SBCRoutesIterator->(#0)SBCAdmissionControlMngr(N 24958350)CAC:添加SBC传入其他,IPG 1(团队#IPGroup):1,SRD 0(默认SRD):1,SipIF 1(团队358351)CAC:添加SBC传出其他,IPG 1(团队෿IPGroup):1,SRD 0(默认SRD):1,SipIF 1(团队358352)(SIP0)找到路由(0),按地址路由,IP组1->1(团队组->团队组),Url:internal:0
}
如何修改regex或fluentd配置以确保消息只包含单个日志条目的内容