使用“时间戳记抽取”规则替换日志的时间戳记

在 IBM® Cloud Logs中,可以使用 时间戳记抽取 规则将日志的时间戳记替换为日志中定制时间戳记字段的值。

您最多只能用过去 24 小时或未来 4 小时的值替换时间戳值。

每个日志条目的时间戳记由接收端点在日志到达时指定。 通过使用时间戳记抽取规则,可以使用日志中定制时间戳记字段的值覆盖日志条目的时间戳记。

配置此规则时,请确保选择正确的源字段,然后选择所需的字段格式标准。 最后,您需要使用与日志的时间字段相匹配的格式来编辑时间格式选项。

准备工作

解析规则在 规则组中进行组织。 每个组都有一个名称和一组规则,它们之间具有逻辑关系。 根据规则组的顺序 (从开始到结束) 处理日志。 然后,根据规则组中的规则顺序并根据它们之间的逻辑运算符 (AND/OR) 对它们进行处理。规则可帮助您处理,解析和重构日志数据,以准备监视和分析。 有关更多信息,请参阅 使用规则组

配置时间戳记抽取规则

完成以下步骤:

  1. 单击 数据管道 图标 "数据管道" 图标 > 解析规则,然后单击 新建规则组

  2. 详细信息 部分中,输入 规则组名称规则组描述

  3. 规则匹配器 部分中,配置应用程序,子系统和严重性,这些应用程序,子系统和严重性用于定义要应用规则组中包含的规则的日志。

  4. 规则 部分中,选择 时间戳记抽取 "时间戳记解析规则" 图标

    1. 输入名称。

    2. (可选) 输入描述。

    3. 选择一个源字段。 这是应用 RegEx 的字段。

    4. 选择 字段格式标准。 有效格式为: Java SimpleDateFormat1989 C (strftime)Go time layoutsUnix timestampUnix milli-timestampUnix micro-timestampUnix nano-timestamp

    5. 输入时间格式。 例如,可以使用 %Y-%m-%dT%H:%M:%S.%f%z

    6. 如果要启用规则,请将状态切换为 ACTIVE

  5. 通过单击 添加规则 并选择所需的规则类型来添加其他规则组。 切换 AND/OR 以选择您希望如何处理其他规则。

  6. 单击创建规则组

示例: 转换日志时间戳记

您可以使用样本日志测试程序,并期望匹配项指示规则能够将时间字段格式解析为 IBM® Cloud Logs 时间格式。 IBM® Cloud Logs 时间格式是 Unix 时间戳记,以纳秒为单位除以 100 (17 位数字)。

例如,通过使用此日志条目:

{
  "transaction_ID":12543,
  "worker":"A23",
  "Message":"success",
  "time":"2021-01-11T15:04:05.000000+0100"
}

您可以使用 strftime 标准并设置时间格式以与时间字段字符串格式相匹配,在本例中,该格式还与建议的缺省格式相匹配。

显示  标准格式的时间戳记抽取示例。
显示 strftime 标准格式的示例时间戳记抽取。

保存此规则会导致以下日志条目:

{
  "transaction_ID":12543,
  "worker":"A23",
  "Message":"success",
  "time":"2021-01-11T00:12:34+01:00"
}

现在,请考虑使用 Go 时间布局标准,并设置时间格式以匹配时间字段字符串格式。

显示 Go 时间布局标准格式的时间戳记抽取示例。
显示 Go 时间布局标准格式的时间戳记抽取示例。

保存此规则会导致以下日志条目:

{
  "transaction_ID":12543,
  "worker":"A23",
  "Message":"success",
  "time":"03/Mar/2021:08:34:12 +0000"
}

同样,请使用 strftime 标准来设置与我的时间字段字符串格式匹配的时间格式。 但在这种情况下,时间字段格式与缺省值 (%Y-%m-%dT%H:%M:%S.%f%z) 的差异不大,例如 2021-01-11T15:04:05.000000+0100。 其中一个区别是月份格式,在本例中是缩写的月份名称。 参考 strftime reference%b 表示缩写的月份名称格式。 通过使用 %b 并添加您可以创建匹配格式的其他所需更改。

时间字段与缺省值不同的示例。
时间字段与缺省值不同的示例。

保存此规则会导致以下日志条目:

{
  "transaction_ID":12543,
  "worker":"A23",
  "Message":"success",
  "time":"2021-01-11T15:04:05.000000+0100"
}

您可以错误地定义时间戳记抽取以导致不匹配。 例如,使用 strftime 标准并忽略区域 %z 将导致与原始时间字符串格式不匹配。 需要先更正时间格式,然后才能保存规则,否则规则将无法按预期工作。

示例不正确的时间戳记抽取定义。
示例不正确的时间戳记抽取定义。