如何在Fluent Bit CloudWatch输出中用container_name作log_stream_name
从Kubernetes字典提取container_name作为CloudWatch日志流名称
需求
从Kubernetes字段字典中提取container_name字段,将其作为CloudWatch日志输出的日志流名称。
Fluentd完整配置
过滤器模块
[FILTER] Name nest Match application.* Operation lift Nested_under kubernetes Add_prefix Nested. [FILTER] Name modify Match application.* Rename Nested.docker_id Docker.container_id [FILTER] Name nest Match application.* Operation nest Wildcard Nested.* Nested_under kubernetes Remove_prefix Nested. [FILTER] Name nest Match application.* Operation nest Wildcard Docker.* Nested_under docker Remove_prefix Docker.
输出模块
[OUTPUT] Name cloudwatch_logs Match application.* region ${REGION} log_group_name /aws/containerinsights/${CLUSTER_NAME}/application log_stream_name $(kubernetes['container_name']) auto_create_group true extra_user_agent 容器洞察
配置说明
- 第一个
nest过滤器:将kubernetes嵌套字段下的所有子字段提取至顶层,同时添加Nested.前缀,便于后续字段调整。 modify过滤器:将Nested.docker_id重命名为Docker.container_id,规整字段命名结构。- 第二个
nest过滤器:将所有带Nested.前缀的字段重新嵌套回kubernetes字段下,并移除前缀。 - 第三个
nest过滤器:将所有带Docker.前缀的字段嵌套到docker字段下,同时移除前缀。 - 输出模块中,通过
$(kubernetes['container_name'])直接引用Kubernetes字典内的container_name字段值,作为CloudWatch的日志流名称,日志最终会被发送到指定的日志组中。
内容的提问来源于stack exchange,提问作者raviteja reddy kamidi
相关产品推荐
相关产品推荐

