Fluentbit tial"/>
Fluentbit tial
[SERVICE]Flush 1 #buffer里的数据每隔1秒写到output插件里,这里写到ES里。Log_Level info #fluent-bit的日志级别Daemon offParsers_File parsers.conf #指向了另外一个配置文件,里面配置所有的parser。HTTP_Server OnHTTP_Listen 0.0.0.0HTTP_Port 2020[INPUT]Name tail #指定了input插件的类型,这里是tail类型Tag {{$Host}}_{{$ESIndex}}_{{.ContainerName}}_{{$i}}给采集的日志打个标签,后面filter和output根据这个标签选择数据源Path /var/log/pods/${POD_UID}/{{.ContainerName}}/*.logPath_Key filenameParser dockerDB /var/log/pods/${POD_UID}/{{.ContainerName}}/flb_std.db#记录哪个文件采集到哪一行DB.Sync Full #internal SQLite engine用哪种方法同步数据到磁盘,full为安全优先#Key logMem_Buf_Limit 5MB #一旦buffer里的数据超过Mem_buf_limit,tail就会暂停采集,直到buffer数据被flush到output。Skip_Long_Lines On #跳过长度大于Buffer_Max_Size的行Buffer_Chunk_Size 32k #tail命令的buffer初始大小,具体作用和对性能的影响还需进一步研究Buffer_Max_Size 32k #tail命令的buffer最大值,具体作用和对性能的影响还需进一步研究Refresh_Interval 10 #定时扫描磁盘上的新文件的间隔。Rotate_Wait 5 #文件rotate后的等待一段时间后再继续监控这个文件,以防flush一些pending data, 具体作用和对性能的影响还需进一步研究 Ignore_Older 10d #忽略近十天来未更改的文件[FILTER]Name modify #插件的类型Match * #匹配到任何数据源Add node_name ${NODE_NAME}Add node_ip ${NODE_IP}Add pod_name ${POD_NAME}[OUTPUT]Name es #插件的类型Match {{.Host}}_{{.ESIndex}}* #匹配到tag为{{.Host}}_{{.ESIndex}}*的数据源Host {{.HostName}} #es的hostname 可以是域名和ipPort {{.Port}} #es的端口Index {{.ESIndex}} HTTP_User {{.UserName}}HTTP_Passwd {{.Password}}Pipeline #不要用Logstash_Format On #是否采用类似logstash的index,可以根据时间设置index名字Logstash_Prefix logstash #索引名称的前缀Logstash_DateFormat %Y.%m.%d #名称后缀格式Time_Key tail-time #Logstash_Format enabled的时候,每条记录会新产生一个时间戳Time_Key_Format %Y-%m-%dT%H:%M:%S #新时间戳的格式Generate_ID On #对记录去重,可能有性能消耗。Trace_Output Off #打印elasticsearch API calls 调试的时候用。Logstash_Prefix_Key ttt #Retry_Limit 5 #传输失败后重试次数,默认为2,设置为False时,无限次重试
parsers.conf
[PARSER]Name dockerFormat jsonTime_Key timeTime_Format %Y-%m-%dT%H:%M:%S.%L %zDecode_Field escaped_utf8 log
[PARSER]Name json_parseFormat jsonTime_Key timeTime_Keep OnTime_Format %Y-%m-%dT%H:%M:%S
关于ES中的时间理解:
默认日志入ES时会加上@timestamp字段,时间取值为日志入ES的时间,如果在PARSER中对日志中的时间字段(如time)进行解析,并且解析正确。则将解析正确的时间值赋给@timestamp字段。显现象如下:
更多推荐
Fluentbit tial
发布评论