【发布时间】:2021-10-15 08:12:47
【问题描述】:
我将 fluent bit 部署到 Kubernetes。我部署了一个带有注释 fluentbit.io/parser: cri 的 pod。但它仍然使用 INPUT 中配置的解析器 ivyxjc 解析日志。
流利的位配置
apiVersion: v1
kind: ConfigMap
metadata:
name: fluent-bit-config
labels:
k8s-app: fluent-bit
data:
# Configuration files: server, input, filters and output
# ======================================================
fluent-bit.conf: |
[SERVICE]
Flush 1
Log_Level info
Daemon off
Parsers_File parsers.conf
HTTP_Server On
HTTP_Listen 0.0.0.0
HTTP_Port 2020
@INCLUDE input-kubernetes.conf
@INCLUDE filter-kubernetes.conf
@INCLUDE output-elasticsearch.conf
input-kubernetes.conf: |
[INPUT]
Name tail
Tag kube.*
Path /var/log/containers/*.log
Parser ivyxjc
DB /var/log/flb_kube.db
Mem_Buf_Limit 200MB
Skip_Long_Lines On
Refresh_Interval 10
filter-kubernetes.conf: |
[FILTER]
Name kubernetes
Match kube.*
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
Kube_Tag_Prefix kube.var.log.containers.
Merge_Log On
k8s-logging.parser On
K8S-Logging.Exclude On
output-elasticsearch.conf: |
[OUTPUT]
Name es
Match *
Host ${FLUENT_ELASTICSEARCH_HOST}
Port ${FLUENT_ELASTICSEARCH_PORT}
HTTP_User ${FLUENT_ELASTICSEARCH_USER}
HTTP_Passwd ${FLUENT_ELASTICSEARCH_PASSWD}
Logstash_Format On
Replace_Dots On
Retry_Limit False
tls On
tls.verify Off
parsers.conf: |
[PARSER]
# http://rubular.com/r/tjUt3Awgg4
Name cri
Format regex
Regex ^(?<time>[^ ]+) (?<stream>stdout|stderr) (?<logtag>[^ ]*) (?<message>.*)$
Time_Key time
Time_Format %Y-%m-%dT%H:%M:%S.%L%z
[PARSER]
Name ivyxjc
Format regex
Regex ^(?<time>[^ ]+) (?<stream>stdout|stderr) (?<logtag2>[^ ]*) (?<message2>.*)$
Time_Key time
Time_Format %Y-%m-%dT%H:%M:%S.%L%z
吊舱描述:
...
Name: logger-5c6658b5dd-66zkw
Namespace: logger
Priority: 0
Start Time: Fri, 15 Oct 2021 15:28:47 +0800
Labels: app=logger
pod-template-hash=5c6658b5dd
Annotations: fluentbit.io/parser: cri
fluentbit.io/parser_stderr: cri
fluentbit.io/parser_stdout: cri
Status: Running
...
【问题讨论】:
-
通常的做法是在 /var/log/containers/ INPUT 中使用
cri解析器。fluentbit.io/parser注释用于特定的应用程序解析器(Java/Apache/etc)。来自输入的所有数据都需要首先由 CRI 解析器解析,然后才能从这些日志行中检索特定的应用程序字段。所以首先使用cri进行解析,然后使用特定于应用程序的解析器。
标签: kubernetes fluent-bit