Overview

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

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

Source通用配置

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

enabled

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

name

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

fields

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

比如如下配置:

Example

  1. sources:
  2. - type: file
  3. name: access
  4. paths:
  5. - /var/log/*.log
  6. fields:
  7. service: demo

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

fieldsFromEnv

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

比如如下配置:

Example

  1. sources:
  2. - type: file
  3. name: access
  4. paths:
  5. - /var/log/*.log
  6. fieldsFromEnv:
  7. service: SVC_NAME

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

fieldsFromPath

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

比如如下配置:

Example

  1. sources:
  2. - type: file
  3. name: access
  4. paths:
  5. - /var/log/*.log
  6. fieldsFromPath:
  7. test: /tmp/foo

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

  1. cat /tmp/foo
  2. ---
  3. bar

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

fieldsUnderRoot

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

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

  1. {
  2. "body": "hello world",
  3. "fields": {
  4. "service": "demo"
  5. }
  6. }

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

  1. {
  2. "body": "hello world",
  3. "service": "demo"
  4. }

fieldsUnderKey

字段类型是否必填默认值含义
fieldsUnderKeystring非必填fieldsfieldsUnderRoot=false时,字段的名称

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

  1. {
  2. "body": "hello world",
  3. "tag": {
  4. "service": "demo"
  5. }
  6. }

codec

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

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

type: json

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

配置示例:

type: json

  1. sources:
  2. - type: file
  3. name: nginx
  4. paths:
  5. - /var/log/*.log
  6. codec:
  7. type: json
  8. bodyFields: log

如果采集到的日志为:

  1. {"log":"I0610 08:29:07.698664 Waiting for caches to sync\n", "stream":"stderr", "time:"2021-06-10T08:29:07.698731204Z"}

则codec后得到的event为:

  1. body: "I0610 08:29:07.698664 Waiting for caches to sync"

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

type: regex

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

配置示例:

type: regex

  1. sources:
  2. - type: file
  3. name: nginx
  4. paths:
  5. - /var/log/*.log
  6. codec:
  7. type: regex
  8. pattern: ^(?P<time>[^ ^Z]+Z) (?P<stream>stdout|stderr) (?P<logtag>[^ ]*) (?P<log>.*)$
  9. bodyFields: log

如果采集到的日志为:

  1. 2021-12-01T03:13:58.298476921Z stderr F INFO [main] Starting service [Catalina]

则codec后得到的event为:

  1. body: "INFO [main] Starting service [Catalina]"

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