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时,字段的名称 | 
比如可以修改默认的字段fields为tag,输出的日志为:
{
    "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"}
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]
body: "INFO [main] Starting service [Catalina]"
请注意:目前非bodyFields的字段均会被丢弃。