上一篇日志系统EFK搭建,提到了一些未解决的问题,同时也发现了一些新的问题,比如docker重启时收集日志的时间有回归(日志采集的offset记录有问题)。问老大的意思是,当容器重启的时候,直接把里面的fluent-bit进程杀掉,导致记录logreadoffset的db没有及时持久化。所以现在想关掉大鹏原来自带的fluent-bit,开一个fluent-bit容器收集其他容器挂载的本地日志,这样只要fluent-bit容器运行正常就可以了。fluent-bit服务首先使用官网的fluent-bit镜像。这里,为了测试,使用调试版本fluent-bit:image:fluent/fluent-bit:1.2-debugcontainer_name:fluent-bitrestart:on-failure:3volumes:-/data/var/fluent-bit/etc/:/fluent-bit/etc/-/data/var/fluent-bit/log/:/fluent-bit/log/-/data/var/fluent-bit/db/:/fluent-bit/db/-/data/logs/:/var/logs/environment:-hostname=${host_ip}-fluentd_host=${host_ip}-fluentd_port=24224#fluent-bit容器内部收集日志路径配置-fbInputPath=/var/logs/*/*.log#(测试发现fbInputPath不支持逗号分隔的多路径)#-fbInputPath=/var/logs/admin/*.log,/var/logs/common/*.日志、/var/logs/crm/*.l??og、/var/logs/delivery/*.log、/var/logs/openApi/*。日志,/var/logs/order/*.log,/var/logs/payment/*.log,/var/logs/product/*.log,/var/logs/purchase/*.log,/var/logs/schedule/*.log,/var/logs/wanboMiniprogram/*.l??og,/var/logs/wanboService/*.log,/var/logs/wanboWechatService/*.log,/var/logs/wechat/*.log-fbInputExcludePath=/var/logs/*/fluent*.log,/var/logs/*/console.log,/var/logs/*/gc*.log-fbInputTag=dapeng-LANG=zh_CN.UTF-8-TZ=CST-8labels:-project.source=-project.extra=public-image-project.depends=-project.owner=对应的fluent-bit配置文件/data/var/fluent-bit/etc:1.fluent-bit.conf[SERVICE]Flush1DaemonOFFLog_Level信息Log_File/fluent-bit/log/fluent-bit.logParsers_Fileparse_file.conf[INPUT]NametailPath${fbInputPath}Exclude_Path${fbInputExcludePath}标签${fbInputTag}多行Buffer_Chunk_Size2mbuffer_max_size30mMem_Buf_Limit32mDB.SyncNormaldb_count400Path_KeyfbKeyParser_Firstlinetail_multilinedb/fluent-bit/db/logs.db[FILTER]Namerecord_modifierMatch*Recordhostname${hostname}[FILTER]NamemodifyMatch*ConditionKey_Does_Not_Existmessage添加消息Key_Does_Not_Exist:message[FILTER]NamegrepMatch*ExcludemessageKey_Does_Not_Exist:message[OUTPUT]NameForwardMatch*Upstreamupstream.conf#Host${fluentd_host}#Port24224Retry_Limit1其中,INPUT的Path_Key:监听文件的名称会作为记录的一部分赋值和成为映射中的关键。即parse解析出来的记录中会有(fbKey->日志文件的路径)键值对。FILTERrecord_modifier:给record记录增加一个键值对(hostname->${hostname})。FILTERmodify:满足Condition条件后,修改记录(当记录中不存在messagekey时,添加键值对message->Key_Does_Not_Exist:message)FILTERgrep:匹配记录key,类似grep中shell(匹配的messagekey的值为Key_Does_Not_Exist:message排除这条记录)其中modify和grep一起用来过滤掉没有messagekey的记录2.parse_file.conf[PARSER]Nametail_multilineFormatregexRegex(?
