File tree 2 files changed +43
-0
lines changed
2 files changed +43
-0
lines changed Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change 841
841
- Prometheus 集群标签配置 : insight/faq/alertinfo-trans-clusterid-to-name.md
842
842
- Insight 告警通知开启 v1alpha2 : insight/faq/alertnotify-enable-v2api.md
843
843
- Logstash 参数优化 : insight/faq/logstash-optimize.md
844
+ - Fluent Bit 根据 Namespace 路由至不同 Topic : insight/faq/fluentbit-dynamic-kafka-topic.md
844
845
- 微服务引擎 :
845
846
- 介绍 :
846
847
- 什么是微服务引擎 : skoala/intro/index.md
You can’t perform that action at this time.
0 commit comments