将非结构化文本转换为 JSON
在 IBM® Cloud Logs中,可以使用 解析 规则将非结构化文本转换为 1 或更多 JSON 字段。
准备工作
解析规则在 规则组中进行组织。 每个组都有一个名称和一组规则,它们之间具有逻辑关系。 根据规则组的顺序 (从开始到结束) 处理日志。 然后,根据规则组中的规则顺序并根据它们之间的逻辑运算符 (AND/OR) 对它们进行处理。规则可帮助您处理,解析和重构日志数据,以准备监视和分析。 有关更多信息,请参阅 使用规则组。
使用指定的已捕获组来定义新字段
解析规则使用 RegEx 指定的捕获组来定义新字段。
- 捕获的组将成为解析的日志字段。
- 与每个组关联的值将成为字段的值。
- RegEx 不必与整个日志匹配。
- 只有 RegEx 指定的捕获组 (
< >中的值) 及其捕获的值是重构日志的一部分。
配置解析规则
完成以下步骤以使用 1 解析规则创建规则组:
-
单击 数据管道 图标
> 解析规则,然后单击 新建规则组。
-
在 详细信息 部分中,输入 规则组名称 和 规则组描述。
-
在 规则匹配器 部分中,配置应用程序,子系统和严重性,这些应用程序,子系统和严重性用于定义要应用规则组中包含的规则的日志。
-
在 规则 部分中,选择 解析
。
-
输入名称。
-
(可选) 输入描述。
-
选择一个源字段。 这是应用 RegEx 的字段。
-
选择目的地字段。 这是将使用应用 RegEx 表达式的结果填充的字段。
-
输入 正则表达式 (RegEx)。
-
如果要启用规则,请将状态切换为 ACTIVE。
-
-
通过单击 添加规则 并选择所需的规则类型来添加其他规则组。 切换 AND/OR 以选择您希望如何处理其他规则。
-
单击创建规则组。
示例日志转换
以下示例采用从 Heroku 作为非结构化日志发送的 Heroku L/H 类型错误日志,并将其转换为 JSON 日志。
原始日志为:
sock=client at=warning code=H27 desc="Client Request Interrupted" method=POST path="/submit/" host=myapp.herokuapp.com fwd=17.17.17.17 dyno=web.1 connect=1ms service=0ms status=499 bytes=0
RegEx 是:
^(sock=)?(?P<sock>(\S*))\s*at=(?P<severity>\S*)\s*code=(?P<error_code>\S*)\s*desc="(?P<desc>[^"]*)"\s*method=(?P<method>\S*)\s*path="(?P<path>[^"]*)" host=(?P<host>\S*)\s* (request_id=)?(?P<request_id>\S*)\s*fwd="?(?P<fwd>[^"\s]*)"?\s*dyno=(?P<dyno>\S*)\s*connect=(?P<connect>\d*)(ms)?\s*service=(?P<service>\d*)(ms)?\s*status=(?P<status>\d*)\s* bytes=(?P<bytes>\S*)\s*(protocol=)?(?P<protocol>[^"\s]*)$
格式化的日志为:
{
"sock": "client",
"severity": "warning",
"error_code": "H27",
"desc": "Client Request Interrupted",
"method": "POST",
"path": "/submit/",
"host": "myapp.herokuapp.com",
"request_id": "",
"fwd": "17.17.17.17",
"dyno": "web.1",
"connect": "1",
"service": "0",
"status": "499",
"bytes": "0",
"protocol": ""
}