file
file source用于日志采集。
Example
sources :
- type : file
name : accesslog
Tips
如果你使用logconfig/clusterlogconfig采集容器日志,file source里还增加了额外的字段,请参考这里 。
paths
字段
类型
是否必填
默认值
含义
paths
string数组
必填
无
采集的path路径,使用glob表达式来匹配。支持glob扩展表达式Brace Expansion
和Glob Star
Example
需要采集的目标文件:
/tmp/loggie/service/order/access.log
/tmp/loggie/service/order/access.log.2022-04-11
/tmp/loggie/service/pay/access.log
/tmp/loggie/service/pay/access.log.2022-04-11
对应配置:
sources :
- type : file
paths :
- /tmp/loggie/**/access.log{,.[2-9][0-9][0-9][0-9]-[01][0-9]-[0123][0-9]}
excludeFiles
字段
类型
是否必填
默认值
含义
excludeFiles
string数组
非必填
无
排除采集的文件正则表达式
Example
sources :
- type : file
paths :
- /tmp/*.log
excludeFiles :
- \.gz$
ignoreOlder
字段
类型
是否必填
默认值
含义
ignoreOlder
time.Duration
非必填
无
例如48h,表示忽略更新时间在2天之前的文件,无需进行采集
字段
类型
是否必填
默认值
含义
addonMeta
bool
非必填
false
是否添加默认的日志采集state元信息
event示例
{
"body" : "this is test" ,
"state" : {
"pipeline" : "local" ,
"source" : "demo" ,
"filename" : "/var/log/a.log" ,
"timestamp" : "2006-01-02T15:04:05.000Z" ,
"offset" : 1024 ,
"bytes" : 4096 ,
"hostname" : "node-1"
}
}
state含义解释:
pipeline: 所在的pipeline名称
source: 所在的source名称
filename: 采集的文件名称
timestamp: 采集时刻的时间戳
offset: 采集的数据在文件的offset偏移量
bytes: 采集的数据字节数
hostname: 所在节点名称
multi
多行采集相关配置
Example
sources :
- type : file
name : accesslog
multi :
active : true
pattern : '^\d{4}-\d{2}-\d{2}'
active
字段
类型
是否必填
默认值
含义
active
bool
非必填
false
是否开启多行采集模式
pattern
字段
类型
是否必填
默认值
含义
pattern
string
当multi.active=true的时候必填
false
判断为一条全新日志的正则表达式。例如配置为'^\['
,则认为行首以[
开头才是一条新日志,否则将这行内容合入上一条日志作为上一条日志的一部分
Example
假设有多行日志如下所示:
2023-05-11 14:30:15 ERROR Exception in thread "main" java.lang.NullPointerException
at com.example.MyClass.myMethod(MyClass.java:25)
at com.example.MyClass.main(MyClass.java:10)
配置pattern正则:^\d{4}-\d{2}-\d{2}
会将日志变成一行。这样在日志查询的时候,不会产生上面的多行异常日志堆栈乱序等问题。
maxLines
字段
类型
是否必填
默认值
含义
maxLines
int
非必填
500
1条日志最多包含几行内容。默认500行,超过上限将强制发送当前日志,超出部分作为新的一条日志
maxBytes
字段
类型
是否必填
默认值
含义
maxBytes
int64
非必填
131072
1条日志最多包含几个字节。默认128K,超过上限将强制发送当前日志,超出部分作为新的一条日志
timeout
字段
类型
是否必填
默认值
含义
timeout
time.Duration
非必填
5s
1条日志最多等待多久采集为完整的1条日志。默认5s,超过上限将强制发送当前日志,超出部分作为新的一条日志
readFromTail
字段
类型
是否必填
默认值
含义
readFromTail
bool
非必填
false
是否从文件的最新一行开始采集,而不管历史写入到文件的内容。适用于采集系统的迁移等场景
cleanFiles
清理文件相关配置。过期且已经采集完成的文件将会直接从磁盘删除以释放磁盘空间
maxHistoryDays
字段
类型
是否必填
默认值
含义
maxHistoryDays
int
非必填
无
(采集完成后的)文件最多保留的天数。如果超出限制,将会把文件直接从磁盘中删除。不配置则永远不会删除文件
cleanUnfinished
字段
类型
是否必填
默认值
含义
cleanUnfinished
bool
非必填
false
即使文件没有被采集完,依然会被清理
fdHoldTimeoutWhenInactive
字段
类型
是否必填
默认值
含义
fdHoldTimeoutWhenInactive
time.Duration
非必填
5m
当文件的上次采集到现在的时间超过限制(文件长时间没有写入,认为大概率不会再写入内容),将会释放该文件的文件句柄以释放系统资源
fdHoldTimeoutWhenRemove
字段
类型
是否必填
默认值
含义
fdHoldTimeoutWhenRemove
time.Duration
非必填
5m
当文件被删除且未采集完成,会等待的最大时间来采集完成。超过限制不管文件最终是否采集完成,都会直接释放文件句柄不再采集
workerCount
字段
类型
是否必填
默认值
含义
workerCount
int
非必填
1
读取文件内容的工作线程(goroutine)数。单节点超过100个文件的时候考虑提高
readBufferSize
字段
类型
是否必填
默认值
含义
readBufferSize
int
非必填
65536
单次读取文件的数据量。默认64K=65536
maxContinueRead
字段
类型
是否必填
默认值
含义
maxContinueRead
int
非必填
16
连续读取同一个文件内容的次数,达到这个次数将强制切换到下个文件读取。主要作用是用来避免活跃文件一直占据读取资源,非活跃文件长时间得不到读取采集
maxContinueReadTimeout
字段
类型
是否必填
默认值
含义
maxContinueReadTimeout
time.Duration
非必填
3s
同一个文件最长读取时间,超过这个时间将强制切换下个文件读取。作用与maxContinueRead
类似
inactiveTimeout
字段
类型
是否必填
默认值
含义
inactiveTimeout
time.Duration
非必填
3s
如果当文件从上一次采集到现在超过inactiveTimeout的话,则认为文件进入不活跃状态(即最后一条日志已经写入完成),则可以安全的采集最后一行日志
ignoreSymlink
字段
类型
是否必填
默认值
含义
ignoreSymlink
bool
非必填
false
是否忽略符号链接(软链接)的文件
firstNBytesForIdentifier
字段
类型
是否必填
默认值
含义
firstNBytesForIdentifier
int
非必填
128
使用采集目标文件的前n个字符来生成文件唯一code。如果文件的大小小于n,则该文件暂时不会采集 。用途主要是,结合文件inode信息,用来精确标识一个文件。辅助判断文件是否删除或者是改名
charset
编码转换,用于将不同的编码转换为utf8,当下支持的编码转换格式.
Example
sources :
- type : file
name : demo
paths :
- /tmp/log/*.log
fields :
topic : "loggie"
charset : "gbk"
字段
类型
是否必填
默认值
含义
charset
string
否
utf-8
提取字段的匹配模型
当前支持的转换为utf-8的编码格式有
nop
plain
utf-8
gbk
big5
euc-jp
iso2022-jp
shift-jis
euc-kr
iso8859-6e
iso8859-6i
iso8859-8e
iso8859-8i
iso8859-1
iso8859-2
iso8859-3
iso8859-4
iso8859-5
iso8859-6
iso8859-7
iso8859-8
iso8859-9
iso8859-10
iso8859-13
iso8859-14
iso8859-15
iso8859-16
cp437
cp850
cp852
cp855
cp858
cp860
cp862
cp863
cp865
cp866
ebcdic-037
ebcdic-1040
ebcdic-1047
koi8r
koi8u
macintosh
macintosh-cyrillic
windows1250
windows1251
windows1252
windows1253
windows1254
windows1255
windows1256
windows1257
windows1258
windows874
utf-16be-bom
utf-16le-bom
lineDelimiter
换行符相关配置
Example
sources :
- type : file
name : demo
lineDelimiter :
type : carriage_return_line_feed
value : "\r\n"
charset : gbk
type
字段
类型
是否必填
默认值
含义
type
bool
非必填
auto
只有在type是custome时候value才会有效
当前支持的type有
auto
line_feed
vertical_tab
form_feed
carriage_return
carriage_return_line_feed
next_line
line_separator
paragraph_separator
null_terminator
对应的换行符为:
```
auto: {'\u000A'},
line_feed: {'\u000A'},
vertical_tab: {'\u000B'},
form_feed: {'\u000C'},
carriage_return: {'\u000D'},
carriage_return_line_feed: []byte("\u000D\u000A"),
next_line: {'\u0085'},
line_separator: []byte("\u2028"),
paragraph_separator: []byte("\u2029"),
null_terminator: {'\u0000'},
```
value
字段
类型
是否必填
默认值
含义
value
string
非必填
\n
换行符的内容
charset
字段
类型
是否必填
默认值
含义
charset
string
非必填
utf-8
换行符编码
ack
source的确认机制相关配置。如果需确保要at least once
,需要开启ack机制,但是会有一定性能顺耗
Caution
该配置只能配置在defaults中
Example
defaults :
sources :
- type : file
ack :
enable : true
enable
字段
类型
是否必填
默认值
含义
enable
bool
非必填
true
是否开启确认机制
maintenanceInterval
字段
类型
是否必填
默认值
含义
maintenanceInterval
time.Duration
非必填
20h
维护周期。用来定时清理过期的确认文件数据(例如不再采集的文件的ack信息)
watcher
监控文件变化的相关配置
Caution
该配置只能配置在defaults中
Example
defaults :
sources :
- type : file
watcher :
maxOpenFds : 8000
scanTimeInterval
字段
类型
是否必填
默认值
含义
scanTimeInterval
time.Duration
非必填
10s
周期性的检查文件的状态变更(例如文件的新建、删除等)。默认每隔10s检查一次
maintenanceInterval
字段
类型
是否必填
默认值
含义
maintenanceInterval
time.Duration
非必填
5m
周期性的维护工作(例如上报采集统计信息、清理文件等)
maxOpenFds
字段
类型
是否必填
默认值
含义
maxOpenFds
int
非必填
4096
最大打开的文件句柄数量,超出后的文件将暂时不会采集
maxEofCount
字段
类型
是否必填
默认值
含义
maxEofCount
int
非必填
3
最大连续读取文件遇到eof的次数。超过限制认为文件暂时不活跃,将进入“僵尸”队列等待更新事件被激活
cleanWhenRemoved
字段
类型
是否必填
默认值
含义
cleanWhenRemoved
bool
非必填
true
当文件被删除后,是否同步删除db中的采集相关信息
taskStopTimeout
字段
类型
是否必填
默认值
含义
taskStopTimeout
time.Duration
非必填
30s
采集任务退出的超时时间。是一个兜底方案,放在采集任务假死导致无法reload
db
v1.5版本及以后已删除,请使用全局配置的db 替换。