file

file source用于日志采集。

Example

  1. sources:
  2. - type: file
  3. name: accesslog

paths

字段类型是否必填默认值含义
pathsstring数组必填采集的path路径,使用glob表达式来匹配

excludeFiles

字段类型是否必填默认值含义
excludeFilesstring数组非必填排除采集的文件正则表达式

ignoreOlder

字段类型是否必填默认值含义
ignoreOldertime.Duration非必填例如2d,表示忽略更新时间在2天之前的文件,无需进行采集
字段类型是否必填默认值含义
ignoreSymlinkbool非必填false是否忽略符号链接(软链接)的文件

workerCount

字段类型是否必填默认值含义
workerCountint非必填1读取文件内容的工作线程(goroutine)数。单节点超过100个文件的时候考虑提高

readChanSize

字段类型是否必填默认值含义
readChanSizeint非必填64读取任务的channel size

readBufferSize

字段类型是否必填默认值含义
readBufferSizeint非必填65536单次读取文件的数据量。默认64K=65536

maxContinueRead

字段类型是否必填默认值含义
maxContinueReadint非必填16连续读取同一个文件内容的次数,达到这个次数将强制切换到下个文件读取。主要作用是用来避免活跃文件一直占据读取资源,非活跃文件长时间得不到读取采集

maxContinueReadTimeout

字段类型是否必填默认值含义
maxContinueReadTimeouttime.Duration非必填3s同一个文件最长读取时间,超过这个时间将强制切换下个文件读取。作用与maxContinueRead类似

inactiveTimeout

字段类型是否必填默认值含义
inactiveTimeouttime.Duration非必填3s如果当文件从上一次采集到现在超过inactiveTimeout的话,则认为文件进入不活跃状态(即最后一条日志已经写入完成),则可以安全的采集最后一行日志

multi

多行采集相关配置

Example

  1. sources:
  2. - type: file
  3. name: accesslog
  4. multi:
  5. active: true

active

字段类型是否必填默认值含义
activebool非必填false是否开启多行采集模式

pattern

字段类型是否必填默认值含义
patternstring当multi.active=true的时候必填false判断为一条全新日志的正则表达式。例如配置为‘^[‘,则认为行首以[开头才是一条新日志,否则将这行内容合入上一条日志作为上一条日志的一部分

maxLines

字段类型是否必填默认值含义
maxLinesint非必填5001条日志最多包含几行内容。默认500行,超过上限将强制发送当前日志,超出部分作为新的一条日志

maxBytes

字段类型是否必填默认值含义
maxBytesint64非必填1310721条日志最多包含几个字节。默认128K,超过上限将强制发送当前日志,超出部分作为新的一条日志

timeout

字段类型是否必填默认值含义
timeouttime.Duration非必填5s1条日志最多等待多久采集为完整的1条日志。默认5s,超过上限将强制发送当前日志,超出部分作为新的一条日志

ack

source的确认机制相关配置。如果需确保要at least once,需要开启ack机制,但是会有一定性能顺耗

Caution

该配置只能配置在defaults中

Example

  1. defaults:
  2. sources:
  3. - type: file
  4. ack:
  5. enable: true

enable

字段类型是否必填默认值含义
enablebool非必填true是否开启确认机制

maintenanceInterval

字段类型是否必填默认值含义
maintenanceIntervaltime.Duration非必填20h维护周期。用来定时清理过期的确认文件数据(例如不再采集的文件的ack信息)

db

使用sqlite3作为数据库。保存采集过程中的文件名称、文件inode、文件采集的offset等信息。用来在loggie reload或者重启后恢复上一次的采集进度

Caution

该配置只能配置在defaults中

Example

  1. defaults:
  2. sources:
  3. - type: file
  4. db:
  5. file: "./data/loggie.db"

file

字段类型是否必填默认值含义
filestring非必填./data/loggie.db数据库文件路径

tableName

字段类型是否必填默认值含义
tableNamestring非必填registry数据库表名称

flushTimeout

字段类型是否必填默认值含义
flushTimeouttime.Duration非必填2s定时将采集信息写入到数据库

bufferSize

字段类型是否必填默认值含义
bufferSizeint非必填2048输入数据库的采集信息的缓冲区大小

cleanInactiveTimeout

字段类型是否必填默认值含义
cleanInactiveTimeouttime.Duration非必填504h清理数据库中的过期数据。如果数据的更新时间超过配置值,将会删除该条数据。默认保留21天

cleanScanInterval

字段类型是否必填默认值含义
cleanScanIntervaltime.Duration非必填1h周期性的检查数据库中的过期数据。默认每隔1小时检查一次

watcher

监控文件变化的相关配置

Caution

该配置只能配置在defaults中

Example

  1. defaults:
  2. sources:
  3. - type: file
  4. watcher:
  5. enableOsWatch: true

enableOsWatch

字段类型是否必填默认值含义
enableOsWatchbool非必填true是否启用OS的监控通知机制。例如linux的inotify指令

scanTimeInterval

字段类型是否必填默认值含义
scanTimeIntervaltime.Duration非必填10s周期性的检查文件的状态变更(例如文件的新建、删除等)。默认每隔10s检查一次

maintenanceInterval

字段类型是否必填默认值含义
maintenanceIntervaltime.Duration非必填5m周期性的维护工作(例如上报采集统计信息、清理文件等)。默认每隔10s检查一次

fdHoldTimeoutWhenInactive

字段类型是否必填默认值含义
fdHoldTimeoutWhenInactivetime.Duration非必填5m当文件的上次采集到现在的时间超过限制(文件长时间没有写入,认为大概率不会再写入内容),将会释放该文件的文件句柄以释放系统资源

fdHoldTimeoutWhenRemove

字段类型是否必填默认值含义
fdHoldTimeoutWhenRemovetime.Duration非必填5m当文件被删除且未采集完成,会等待的最大时间来采集完成。超过限制不管文件最终是否采集完成,都会直接释放文件句柄不再采集

maxOpenFds

字段类型是否必填默认值含义
maxOpenFdsint非必填512最大打开的文件句柄数量,超出后的文件将暂时不会采集

maxEofCount

字段类型是否必填默认值含义
maxEofCountint非必填3最大连续读取文件遇到eof的次数。超过限制认为文件暂时不活跃,将进入“僵尸”队列等待更新事件被激活

cleanWhenRemoved

字段类型是否必填默认值含义
cleanWhenRemovedbool非必填true当文件被删除后,是否同步删除db中的采集相关信息

readFromTail

字段类型是否必填默认值含义
readFromTailbool非必填false是否从文件的最新一行开始采集,而不管历史写入到文件的内容。适用于采集系统的迁移等场景

taskStopTimeout

字段类型是否必填默认值含义
taskStopTimeouttime.Duration非必填30s采集任务退出的超时时间。是一个兜底方案,放在采集任务假死导致无法reload

cleanFiles

清理文件相关配置。过期且已经采集完成的文件将会直接从磁盘删除以释放磁盘空间

maxHistoryDays

字段类型是否必填默认值含义
maxHistoryDaysint非必填(采集完成后的)文件最多保留的天数。如果超出限制,将会把文件直接从磁盘中删除。不配置则永远不会删除文件