【容器日志采集】【二】fluent-bit配置文件
下面是第二步:创建配置文件(ConfigMap)的完整文档,包括详细说明、字段解释以及一键可用的命令👇
🧾 第二步:创建配置文件(ConfigMap)
🧠 1. 什么是 ConfigMap?
在 Kubernetes 中,ConfigMap 用于将配置信息从容器镜像中分离出来,方便灵活地管理配置。
本例中,我们通过 ConfigMap 来为 Fluent Bit 提供日志采集的完整配置,包括:
- 主配置(
fluent-bit.conf) - 输入配置(
input-kube.conf) - 过滤配置(
filter-kube.conf) - 输出配置(Kafka & stdout)
- 解析器配置(
parsers.conf)
🧰 2. 配置文件 YAML 详解
以下为一份可直接使用的配置文件 fluent-bit-config.yaml:
apiVersion: v1
kind: ConfigMap
metadata:
name: fluent-bit-config
namespace: logging
data:
fluent-bit.conf: |
[SERVICE]
Flush 1
Log_Level debug
Daemon Off
Parsers_File parsers.conf
# IPv6 网络环境可启用
# IPv6 On
@INCLUDE input-kube.conf
@INCLUDE filter-kube.conf
@INCLUDE output-kafka.conf
@INCLUDE output-stdout.conf
# ====================== INPUT ======================
input-kube.conf: |
[INPUT]
Name tail
Tag kube.*
Path /var/log/containers/assign*.log
DB /buffers/flb_kube.db
DB.Sync Normal
Parser docker
Docker_Mode On
Mem_Buf_Limit 50MB
Skip_Long_Lines On
Refresh_Interval 10
# ====================== FILTER ======================
filter-kube.conf: |
# 注入 Kubernetes 元数据
[FILTER]
Name kubernetes
Match *
Kube_URL https://kubernetes.default.svc.cluster.local: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
Buffer_Size 0
[FILTER]
Name nest
Match *
Operation lift
Nested_under kubernetes
[FILTER]
Name nest
Match *
Operation lift
Nested_under labels
[FILTER]
Name modify
Match *
Rename app job_name
[FILTER]
Name grep
Match *
Regex container_name *-job
# ====================== OUTPUT - Kafka ======================
output-kafka.conf: |
[OUTPUT]
Name kafka
Match kube.*
Brokers 172.22.162.152:31092
Topics k8s-pod-logs
rdkafka.log.connection.close false
Timestamp_Key @timestamp
Format json
Message_Key pod_name
Retry_Limit false
# ====================== OUTPUT - Stdout ======================
output-stdout.conf: |
[OUTPUT]
Name stdout
Match *
# ====================== PARSER ======================
parsers.conf: |
[PARSER]
Name docker
Format json
Time_Key time
Time_Format %Y-%m-%dT%H:%M:%S.%L
Time_Keep On
🧩 3. 各部分配置详解
| 区块 | 功能 | 说明 |
|---|---|---|
[SERVICE] |
全局服务配置 | 定义 flush 间隔、日志等级、解析器文件等。 |
[INPUT] |
日志采集输入 | 使用 tail 插件采集 Pod 的容器日志。 |
[FILTER] |
过滤与增强 | 注入 K8s 元数据、重命名字段、过滤符合条件的日志。 |
[OUTPUT] |
日志输出 | 输出到 Kafka 与 stdout,便于调试与后续处理。 |
[PARSER] |
解析规则 | 将 Docker 容器日志从 JSON 解析为结构化字段。 |
⚠️ 注意:
namespace必须与前面创建的命名空间(如logging)一致。Brokers地址应根据你的 Kafka 实际部署地址进行修改。Path路径应匹配实际的容器日志路径。- 在生产环境中可以适当调整
Mem_Buf_Limit和Flush频率以避免内存溢出。
🛠️ 4. 一键创建命令
将上面的内容保存为 fluent-bit-config.yaml 后,使用以下命令创建 ConfigMap:
kubectl apply -f fluent-bit-config.yaml
或者,使用命令行直接创建(适合快速调试):
kubectl create configmap fluent-bit-config \
--namespace=logging \
--from-file=fluent-bit.conf \
--from-file=input-kube.conf \
--from-file=filter-kube.conf \
--from-file=output-kafka.conf \
--from-file=output-stdout.conf \
--from-file=parsers.conf
✅ 验证创建结果:
kubectl get configmap -n logging
kubectl describe configmap fluent-bit-config -n logging
🧽 5. 更新与删除命令
更新配置(修改文件后重新应用):
kubectl apply -f fluent-bit-config.yaml
删除 ConfigMap:
kubectl delete configmap fluent-bit-config -n logging
⚠️ 更新 ConfigMap 不会自动热加载到 Pod 中,如需生效:
- 可以使用
kubectl rollout restart daemonset fluent-bit -n logging- 或手动重启 Pod。
📝 小结
- ✅ ConfigMap 使 Fluent Bit 的日志采集配置更加灵活和可维护。
- 🔐 配合 ServiceAccount 与 RBAC 权限,保证采集安全性。
- 🪄 通过
kubectl命令,可以快速创建、查看和更新配置。 - 🧭 最终效果:日志采集 → 过滤 → 输出 Kafka / Stdout。
是否希望我在下一步给出 部署 DaemonSet(真正让 Fluent Bit 运行起来)的完整 YAML 和命令?(即第 3 步) 🚀

浙公网安备 33010602011771号