nifi用Grok提取数据

问题描述

在系统日志中有一行,如:

1 2020-10-09T09:03:00 Myv2 Myv2---{“ _id”:“身份验证”,“ a_device”:{“主机名”:空,“ ip”:“ 10.10.10.10” ,“位置”:{“城市”:“利沃夫”,“国家”:“乌克兰”,“州”:“利沃夫”}},“别名”:“ [email protected]”,“应用程序”:{”键”:“ XXXXXXXXXXXXX”,“名称”:“名称”},“ auth_device”:{“ ip”:“ 10.10.10.10”,“位置”:{“城市”:“利沃夫”,“国家”:“乌克兰“,” state“:” Lviv“},” name“:” +380 00 000 000“}

我需要将json部分从日志放到属性中,因此将是“ key”:“ value”格式,例如:

“ _ id”:“身份验证”, “ a_device_ip”:“ 10.10.10.10”, “ location_city”:“利沃夫”

我将以下流程与ExtractGrok模块配合使用:

flow

和ExtractGrok的选项:

enter image description here

,但使用“ flowfile-content”选项ExtractGrok在我的json中添加了额外的字符串模式名称“ GREEDYDATA”,并转义了以下字符:

enter image description here

,并且在EvaluateJsonPath模块获取不正确的json并返回空结果之后:

enter image description here

enter image description here

如果在ExtractGrok中选择'flowfile-attribute'则可以正常工作而没有多余的东西,但是我看不到如何将该属性值发送到EvaluateJsonPath模块,该模块仅适用于流内容而不适用于属性

请帮助解决问题或提出替代流程:

解决方法

ExtractGrok 处理器之后,您可以添加 AttributesToJSON 处理器,该处理器已经创建了一个内部包含GROK解析字段的结果JSON。