schema

专注于日志格式转换与适配的interceptor。
属于source interceptor。

使用场景

对于大部分日志对接的场景中,我们要求的日志格式可能有一些差异,这些差异主要体现在时间字段、body字段等。
默认情况下,Loggie只会把source采集或者接收到的原始数据放到body字段中,以最简单的方式发送:

  1. {
  2. "body": "this is raw data"
  3. }

但是,一些场景下我们需要:

  • 增加时间字段
  • 修改body等字段

Example

增加@timestamp,body修改为message

  1. interceptors:
  2. - type: schema
  3. addMeta:
  4. timestamp:
  5. key: "@timestamp"
  6. remap:
  7. body:
  8. key: message

转换后的event:

  1. {
  2. "message": "this is raw data"
  3. "@timestamp": "2022-08-30T06:58:49.545Z",
  4. }

增加_timestamp_,修改时区和格式,body修改为_log_

  1. interceptors:
  2. - type: schema
  3. addMeta:
  4. timestamp:
  5. key: "_timestamp_"
  6. location: Local
  7. layout: 2006-01-02T15:04:05Z07:00
  8. remap:
  9. body:
  10. key: _log_

配置

addMeta

字段类型是否必填默认值含义
addMeta非必填增加系统元信息字段

timestamp

字段类型是否必填默认值含义
addMeta.timestamp非必填增加系统时间字段(source采集到数据的时间)
addMeta.timestamp.keystring必填系统时间的key
addMeta.timestamp.locationstring非必填默认为空,即为UTC时间增加的时间时区,另外还支持Local
addMeta.timestamp.layoutstring非必填“2006-01-02T15:04:05.000Z”golang的时间类型layout,可参考https://go.dev/src/time/format.go

pipelineName

字段类型是否必填默认值含义
addMeta.pipelineName非必填将pipelineName加入到event中
addMeta.pipelineName.keystring必填增加后的字段的key

Example

  1. interceptors:
  2. - type: schema
  3. addMeta:
  4. pipelineName:
  5. key: pipeline

转换后的event:

  1. {
  2. "pipeline": "demo"
  3. ...
  4. }

sourceName

字段类型是否必填默认值含义
addMeta.sourceName非必填将sourceName加入到event中
addMeta.sourceName.keystring必填增加后的字段的key

Example

  1. interceptors:
  2. - type: schema
  3. addMeta:
  4. sourceName:
  5. key: source

转换后的event:

  1. {
  2. "source": "local"
  3. ...
  4. }

remap

字段类型是否必填默认值含义
remapmap非必填对字段进行转换,目前支持重命名
remap.[originKey]string非必填原始字段key
remap.[originKey].keystring非必填转换后的字段key

Example

  1. interceptors:
  2. - type: schema
  3. remap:
  4. body:
  5. key: msg
  6. state:
  7. key: meta

转换前的event:

  1. {
  2. "body": "this is log"
  3. "state": "ok",
  4. }

转换后的event:

  1. {
  2. "msg": "this is log"
  3. "meta": "ok",
  4. }