#1)fluent-bit-configmap.yaml修改部分(红字): #红色部分修改成自己想要的index名字 output-elasticsearch.conf: | [OUTPUT] Name es Match * Host ${FLUENT_ELASTICSEARCH_HOST} Port ${FLUENT_ELASTICSEARCH_PORT} Logstash_Format On Replace_Dots On Retry_Limit False Logstash_Prefix test_k8s #2)fluent-bit-ds.yaml修改部分: #将FLUENT_ELASTICSEARCH_HOST修改成自己的Elasticsearch地址 env: - name: FLUENT_ELASTICSEARCH_HOST value: "es.haha.com" - name: FLUENT_ELASTICSEARCH_PORT value: "80"
#1)fluent-bit-configmap.yaml修改部分(红字): #红色部分修改成自己想要的index名字 output-elasticsearch.conf: | [OUTPUT] Name kafka Match * Brokers ${FLUENT_KAFKA_ADDR} Topics ${FLUENT_KAFKA_TOPIC} Timestamp_Key @timestamp Retry_Limit false # hides errors "Receive failed: Disconnected" when kafka kills idle connections rdkafka.log.connection.close false # producer buffer is not included in http://fluentbit.io/documentation/0.12/configuration/memory_usage.html#estimating rdkafka.queue.buffering.max.kbytes 10240 # for logs you'll probably want this ot be 0 or 1, not more rdkafka.request.required.acks 1 #2)fluent-bit-ds.yaml修改部分: #将FLUENT_KAFKA_ADDR修改成自己的Kafka地址 env: - name: FLUENT_KAFKA_ADDR value: "es.haha.com" - name: FLUENT_KAFKA_TOPIC value: "test_k8s"
[SERVICE] Flush 1#buffer里的数据每隔1秒写到output插件里,这里写到ES里。 Log_Level info #fluent-bit的日志级别 Daemon off Parsers_File parsers.conf #指向了另外一个配置文件,里面配置所有的parser。 HTTP_Server On HTTP_Listen 0.0.0.0 HTTP_Port 2020
[INPUT] Name tail #指定了input插件的类型,这里是tail类型 Tag {{$Host}}_{{$ESIndex}}_{{.ContainerName}}_{{$i}} #给采集的日志打个标签,后面filter和output根据这个标签选择数据源 Path /var/log/pods/${POD_UID}/{{.ContainerName}}/*.log Path_Key filename Parser docker DB /var/log/pods/${POD_UID}/{{.ContainerName}}/flb_std.db#记录哪个文件采集到哪一行 DB.Sync Full #internal SQLite engine用哪种方法同步数据到磁盘,full为安全优先Key Mem_Buf_Limit 5MB #一旦buffer里的数据超过Mem_buf_limit,tail就会暂停采集,直到buffer数据被flush到output Skip_Long_Lines Off #跳过长度大于Buffer_Max_Size的行,默认On,不关闭会出现have long lines.Skipping long lines的错误 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 可以是域名和ip Port {{.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时,无限次重试
fluent-bit-filter.conf
日志过滤配置
1 2 3 4 5 6 7 8 9 10
[FILTER] Name kubernetes Match kube.* Kube_Tag_Prefix kube.var.log.containers. Kube_URL https://kubernetes.default.svc:443 Kube_CA_File /var/run/secrets/kubernetes.io/serviceaccount/ca.crt Kube_Token_File /var/run/secrets/kubernetes.io/serviceaccount/token Merge_Log On K8S-Logging.Parser On K8S-Logging.Exclude On