跳转至

Overview

sources字段为数组,一个Pipeline中可填写多个source组件配置。

因此,请注意所有的source中name必填,作为pipeline中source的唯一标识。

Source通用配置

所有Source均可以使用以下配置。

enabled

字段 类型 是否必填 默认值 含义
enabled bool 非必填 true 表示是否开启该source

name

字段 类型 是否必填 默认值 含义
name string 必填 表示source的名称,建议填写有标识意义的词

fields

字段 类型 是否必填 默认值 含义
fields map 非必填 自定义额外添加到event中的字段

比如如下配置:

Example

sources:
- type: file
  name: access
  paths:
  - /var/log/*.log
  fields:
    service: demo

会给采集的所有日志上,都加上service: demo字段。

fieldsFromEnv

字段 类型 是否必填 默认值 含义
fieldsFromEnv map 非必填 额外添加到event中的字段,value为env环境变量的key

比如如下配置:

Example

sources:
- type: file
  name: access
  paths:
  - /var/log/*.log
  fieldsFromEnv:
    service: SVC_NAME

会从Loggie所在的环境变量中,获取SVC_NAME的值${SVC_NAME},然后给所有的日志event上添加字段:service: ${SVC_NAME}

fieldsFromPath

字段 类型 是否必填 默认值 含义
fieldsFromPath map 非必填 额外添加到event中的字段,value为path指定文件里的内容

比如如下配置:

Example

sources:
- type: file
  name: access
  paths:
  - /var/log/*.log
  fieldsFromPath:
    test: /tmp/foo

假设文件/tmp/foo的内容为bar:

cat /tmp/foo
---
bar

Loggie会给所有的日志event上添加字段:test: bar

fieldsUnderRoot

字段 类型 是否必填 默认值 含义
fieldsUnderRoot bool 非必填 false 额外添加的fields是否放在event的根部

比如,默认情况下,输出的日志格式为:

{
    "body": "hello world",
    "fields": {
        "service": "demo"
    }
}

如果设置fieldsUnderRoot=true,输出的日志格式为:

{
    "body": "hello world",
    "service": "demo"
}

fieldsUnderKey

字段 类型 是否必填 默认值 含义
fieldsUnderKey string 非必填 fields fieldsUnderRoot=false时,字段的名称

比如可以修改默认的字段fieldstag,输出的日志为:

{
    "body": "hello world",
    "tag": {
        "service": "demo"
    }
}

codec

字段 类型 是否必填 默认值 含义
codec 非必填 source接收到数据的时候用于解析预处理
codec.type string 非必填

请注意:目前仅file source支持source codec。

type: json

字段 类型 是否必填 默认值 含义
codec.bodyFields 必填 使用解析读取到的json数据中的该字段作为body

配置示例:

type: json

  sources:
  - type: file
    name: nginx
    paths:
    - /var/log/*.log
    codec:
      type: json
      bodyFields: log

如果采集到的日志为:

{"log":"I0610 08:29:07.698664 Waiting for caches to sync\n", "stream":"stderr", "time:"2021-06-10T08:29:07.698731204Z"}
则codec后得到的event为:
body: "I0610 08:29:07.698664 Waiting for caches to sync"

请注意:目前非bodyFields的字段均会被丢弃。

type: regex

字段 类型 是否必填 默认值 含义
codec.pattern 必填 正则表达式
codec.bodyFields 必填 使用正则提取到的该字段作为body

配置示例:

type: regex

  sources:
  - type: file
    name: nginx
    paths:
    - /var/log/*.log
    codec:
      type: regex
      pattern: ^(?P<time>[^ ^Z]+Z) (?P<stream>stdout|stderr) (?P<logtag>[^ ]*) (?P<log>.*)$
      bodyFields: log

如果采集到的日志为:

2021-12-01T03:13:58.298476921Z stderr F INFO [main] Starting service [Catalina]
则codec后得到的event为:
body: "INFO [main] Starting service [Catalina]"

请注意:目前非bodyFields的字段均会被丢弃。