kv正则解析案例

kv正则解析案例 1. 日志解析难点说明 在某银行案例中遇到发卡机和 ATM 日志,日志为多行形式,通过 Agent 按照固定符号进行多行合并,合并规则为 \n(\[\d+.*?\].*?\*服务) 。在取关健字段时...

kv正则解析案例

1. 日志解析难点说明

  • 在某银行案例中遇到发卡机和 ATM 日志,日志为多行形式,通过 Agent 按照固定符号进行多行合并,合并规则为 \n(\[\d+.*?\].*?\*服务) 。在取关健字段时用到 KV 正则解析功能,在此做解析案例分享。
  • 发卡机和 ATM 日志格式类似,其日志特点如下:
    • 1. 日志信息类型分为应答报文和请求报文,取关健字段不同。
    • 2. 不同交易类型的请求报文和应答报文的所含的关键字段同。比如有的请求交易中具有卡号信息,有的则没有。有的同时具有卡号和身份证,有的只有一个字段存在。
    • 3. 日志长度不同,关键字位置也不同。如 SYSTEMS_TRACE 字段有的会在日志前后各出现一次。 
    • 4. 样例日志采用基本正则匹配需要配置很多条规则。

2. 发卡机交易应答日志样例

[4876|164228-4985] 164226855268:  ***********服务job20收到综合前置的应答报文***********
[4876|164228-4985] 164226855268:  服务job20从保留域获取到流水号: [164226855268]
[4876|164228-4985] 164226855268:  服务job20从保留域获取到交易码:[2013K4]
[4876|164228-4985] 164226855268:  发卡机发起联机交易, 调用服务job2013处理交易应答.
[4876|164228-4999] 164226855268:  获取交易流水结构成功
[4876|164228-5002] 164226855268:  取终端[02700802]信息成功
[4876|164228-5002] 164226855268:  开始解包特色业务平台应答报文...
[4876|164228-5003] 164226855268:  前置报文头:
[4876|164228-5003] 164226855268:  [渠道交易码]: [02316002            ]
[4876|164228-5003] 164226855268:  [渠道流水号]: [685526820060        ]
[4876|164228-5003] 164226855268:  [帐户类型  ]: [00]
[4876|164228-5003] 164226855268:  [平台流水号]: [                ]
[4876|164228-5003] 164226855268:  [平台响应码]: [BNS00000000]
[4876|164228-5003] 164226855268:  [备用字段  ]: [13133               ]
[4876|164228-5003] 164226855268:  前置报文头InHead:
[4876|164228-5003] 164226855268:  [abyFlowNo      ]: [685526820060]
[4876|164228-5003] 164226855268:  [abyBranchNo    ]: [5851]
[4876|164228-5003] 164226855268:  [abyTeller      ]: [13133]
[4876|164228-5003] 164226855268:  前置报文体:
[4876|164228-5003] 164226855268:  [客户号  ]: [        24464061-3]
[4876|164228-5003] 164226855268:  [机构号  ]: [003]
[4876|164228-5003] 164226855268:  [分行号  ]: [5851]
[4876|164228-5003] 164226855268:  [终端号  ]: [   ]
[4876|164228-5003] 164226855268:  [出纳号  ]: [13133]
[4876|164228-5003] 164226855268:  [证件类型 ]: [51]
[4876|164228-5003] 164226855268:  [ID Dash ]: [-]
[4876|164228-5003] 164226855268:  [证件号码 ]: [429001198609206113      ]
[4876|164228-5003] 164226855268:  [终端交易流水号 ]:[091773]
[4876|164228-5003] 164226855268:  [终端号 ]:[02700802]
[4876|164228-5003] 164226855268:  [审核请求时间 ]:[20180302164218]
[4876|164228-5003] 164226855268:  [交易日期 ]:[20180302]
[4876|164228-5003] 164226855268:  [交易时间 ]:[164231]
[4876|164228-5003] 164226855268:  [客户号 ]:[        244640613]
[4876|164228-5026] 164226855268:  成功解包特色业务平台应答报文[BNS00000000]
[4876|164228-5026] 164226855268:  响应码转换[交易成功]
[4876|164228-5026] 164226855268:  转换应答码[BNS00000000]到[00]
[4876|164228-5026] 164226855268:  开始调用服务[2013K4]处理交易...
[4876|164228-5026] 164226855268:  调用服务[2013K4]处理应答成功
[4876|164228-5336] 164226855268:  SJL_Open connect HSM suc sock[14]
[4876|164228-5616] 164226855268:  远程加密机连接关闭!
[4876|164228-5617] 164226855268:  MessageType : 0210
        164226855268:  [field: 003][PROCESSING CODE  ]: [800000]
        164226855268:  [field: 007][TRANSM DATE&TIME ]: [0302164231]
        164226855268:  [field: 011][SYSTEMS_TRACE #  ]: [091778]
        164226855268:  [field: 012][TIME,LOCAL TRAN  ]: [164228]
        164226855268:  [field: 013][DATE,LOCAL TRAN  ]: [20180302]
        164226855268:  [field: 037][RETR. REF. NUM.  ]: [164226855268]
        164226855268:  [field: 039][RESPONSE_CODE    ]: [00]
        164226855268:  [field: 041][TERMINAL_ID      ]: [02700802]
        164226855268:  [field: 048][ADDITION DATA_PRI]: 27[FK1jlkhxx        24464061-3]
        164226855268:  [field: 062][INVOICE REF NUM. ]: 13[5043424E533030303030303030]···
        164226855268:  [field: 128][MSG. AUTH. CODE  ]: [00D53648]
[4876|164228-5618] 164226855268:  发送应答报文到消息队列成功,通讯保留域[00004901422628]
[4876|164228-5618]  *************交易应答处理完毕**************

3. 日志关健信息

[4876|164228-4985] 164226855268:  ***********服务job20收到综合前置的应答报文
[4876|164228-4985] 164226855268:  服务job20从保留域获取到流水号: [164226855268]
[4876|164228-5003] 164226855268:  [证件号码 ]: [429001198609206113      ]
[4876|164228-5026] 164226855268:  响应码转换[交易成功]
164226855268:  [field: 011][SYSTEMS_TRACE #  ]: [091778]
164226855268:  [field: 041][TERMINAL_ID      ]: [02700802]

4. 提取字段信息

信息类型为:   应答报文
前置交易流水:  164226855268
证件号码:     429001198609206113
交易返回状态: 交易成功
发卡机内部流水:091778
发卡机编号:    02700802

5. 日志解析思路

首先根据日志提示关键字,将日志拆分成信息类型和信息主体。然后对信息类型为响应报文的详细信息或请求报文的详细信息进行 KV 正则解析,最后通过字段重命名进行字段规范

5.1 对 raw_message 进行提取,提取请求报文标记.

.*?\]\s+(?<client_ip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}).*?(?<msg_type>请求报文).*?\n(?<request_msg>[\s\S]+)

5.2 对 raw_message 进行提取,提取应答报文标记。

.*?(?<msg_type>应答报文).*?\n(?<respond_msg>[\s\S]+)

5.3 对 respond_msg  request_msg 字段采用kv正则匹配,根据字段特征,提取字段,根据value特征提取值**

attachments-2018-08-3FN03qYK5b7a76d713a41.pngattachments-2018-08-NDF3us8T5b7a76e8cd70c.png

5.4 解析验证

attachments-2018-08-3VxmSMtj5b7a76ff3e605.png

根据上述操作更理想的效果还需要进行进一步处理,比如:将带有中文的字段重命名。将带有返回码的字段进行字典解析等工作,方法就比较容易在此不再赘述





  • 发表于 2018-08-20 16:09
  • 阅读 ( 2840 )
  • 分类:日志解析

你可能感兴趣的文章

相关问题

1 条评论

请先 登录 后评论
不写代码的码农
admin

15 篇文章

作家榜 »

  1. 日志易 24 文章
  2. admin 15 文章
  3. 日志易小A 2 文章
  4. 疯狂的馒头 2 文章
  5. 腾龙国际娱乐 1 文章
  6. rizhiyi509 1 文章
  7. Xiaoyu 1 文章
  8. 陈晨 0 文章