Skip to content

Commit 1a658f0

Browse files
add fluentbit dynamic kafka topic docs (#6450)
Co-authored-by: Michael Yao <[email protected]>
1 parent eeacbda commit 1a658f0

File tree

2 files changed

+43
-0
lines changed

2 files changed

+43
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Fluent Bit 根据 Kubernetes Namespace Name 路由至不同的 Topic
2+
3+
Fluent Bit 根据 Kubernetes Namespace Name 发送到不同 Topic 的使用场景主要是在容器化应用环境中,基于 Kubernetes 平台,实现日志的分类管理与精准传输。
4+
5+
具体来说,在大型的 Kubernetes 集群中,不同的 Namespace 可能用于部署不同的应用、服务或项目,例如开发、测试、生产环境可能各自有独立的 Namespace。通过 Fluent Bit 根据 Namespace Name 将日志发送到不同的 Topic ,可以实现以下功能:
6+
7+
1. 日志隔离:不同 Namespace 的日志分别发送到不同 Topic ,避免日志混淆,便于对特定应用或服务的日志进行单独分析和排查问题。
8+
2. 权限管理:根据 Topic 来控制对不同 Namespace 日志的访问权限,满足安全合规要求。例如,生产环境的日志可能需要更严格的访问控制,通过不同 Topic 可以更方便地进行权限设置。
9+
3. 日志处理优化:可以针对不同 Topic 的日志采用不同的处理策略。例如,对于重要业务的日志进行更详细的分析和存储,而对于测试环境的日志可以采用更轻量级的处理方式。
10+
4. 多租户支持:在多租户的 Kubernetes 环境中,每个租户的应用部署在不同的 Namespace ,通过将日志发送到不同 Topic ,可以实现租户间日志的隔离和独立管理。
11+
5. 监控与告警:可以针对不同 Topic 的日志设置不同的监控规则和告警策略。例如,当某个 Namespace 的日志出现异常时,能够及时触发告警,方便运维人员快速响应。
12+
13+
## 实现思路
14+
借助 Fluent Bit Kafka output 根据 [topic_key][1] 动态路由到不同 Topic 的能力实现。
15+
16+
## 实现步骤
17+
1. 在现有 `insight-agent-Fluent Bit-luascripts-config` Configmap 中对 Lua 脚本 `container_log_filter.lua` 中增加如下逻辑(可根据实际需求调整), 该逻辑将从 `kubernetes.namespace_name` 取值并赋值给 `router` 字段。
18+
19+
```diff
20+
annotations = record["kubernetes"]["annotations"]
21+
if(annotations == nil) then
22+
debugLog("miss annotations in kubernetes, skip filter")
23+
return 1, timestamp, record
24+
end
25+
26+
+ if(record["kubernetes"]["namespace_name"] ~= nil and record["kubernetes"]["namespace_name"] ~= '') then
27+
+ record['router'] = record["kubernetes"]["namespace_name"]
28+
+ end
29+
```
30+
31+
2. 在现有 `insight-agent-Fluent Bit-config` Configmap 中对 Kafka Output 增加 `topic_key` 配置并开启 `dynamic_topic`:
32+
```diff
33+
Topics insight-logs
34+
format json
35+
# topic_key 优先于 Topics
36+
+ dynamic_topic On
37+
+ topic_key router
38+
```
39+
40+
3. 重启 Fluentbit,观察 kafka 中 topic 是否被创建或有数据写入。
41+
42+
[1]: https://docs.fluentbit.io/manual/pipeline/outputs/kafka

docs/zh/navigation.yml

+1
Original file line numberDiff line numberDiff line change
@@ -841,6 +841,7 @@ nav:
841841
- Prometheus 集群标签配置: insight/faq/alertinfo-trans-clusterid-to-name.md
842842
- Insight 告警通知开启 v1alpha2: insight/faq/alertnotify-enable-v2api.md
843843
- Logstash 参数优化: insight/faq/logstash-optimize.md
844+
- Fluent Bit 根据 Namespace 路由至不同 Topic: insight/faq/fluentbit-dynamic-kafka-topic.md
844845
- 微服务引擎:
845846
- 介绍:
846847
- 什么是微服务引擎: skoala/intro/index.md

0 commit comments

Comments
 (0)