通过Log Operator采集日志
更新时间:2025-07-15
本文介绍如何通过 CCE Log Operator 组件,实现百度云日志服务BLS自动采集 BCI pod 容器日志采集
背景信息
百度云日志服务BLS(Baidu Log Service)是一款集日志数据采集传输、查询分析、日志报警、数据投递、可视化于一体的完全托管式服务。低成本、高效率地实现日志的采集,轻松应对设备运维管理、商业趋势洞察、安全监控审计等业务场景。
前提条件
- 已创建CCE集群,并在集群中安装了 virtual-kubelet 组件
- 已开通日志服务产品,您可以登录日志服务控制台确认是否开通。
注意事项
- 通过 CCE Log Operator 开启日志采集仅对后续创建的BCI Pod生效。如果想要采集存量Pod的日志,需要对存量Pod进行滚动发布。
配置日志采集
部署CCE Log Operator组件
- 登录CCE管理控制台
- 在顶部菜单栏左上角处选择地域
- 在集群列表页面,选择待部署组件的CCE集群,进入集群管理页面
-
在集群中部署 CCE Log Operator 组件
- 在集群管理页左侧导航栏,选择【运维与管理】>【组件管理】
- 单击【监控和日志】页签,找到【CCE Log Operator】卡片,然后单击【安装】
- 在弹出的对话框中,单击【确定】
- 安装完成后,CCE Log Operator 卡片右上角会显示已安装
创建LogConfig采集配置
- 在CCE控制台选择【运维与管理】>【日志中心】>【采集规则】
-
编写日志采集配置CRD的YAML配置文件。
-
创建采集容器标准输出日志 LogConfig 示例
YAML1 apiVersion: cce.baidubce.com/v1 2 kind: LogConfig 3 metadata: 4 name: stdoutlog-test1 # 日志配置名字 5 namespace: default # 日志配置所在 namespace 6 spec: 7 srcConfig: # 定义日志来源 8 srcType: container # 日志类型为容器 9 logType: stdout # 容器 stdout 输出日志 10 ttl: 3 # agent 采集日志时间范围 11 dstConfig: 12 dstType: BLS # 日志输出目的端类型,当前只支持 BLS 13 logStore: stdoutlog-test1 # BLS logstore 名字,不存在会自动创建 14 retention: 10 # BLS logstore 中日志保存时间 15 rateLimit: 10 # 日志上传带宽限制 1-99 MB/s
-
创建采集容器内文件日志 LogConfig 示例
YAML1apiVersion: cce.baidubce.com/v1 2kind: LogConfig 3metadata: 4 name: filelog-test1 # 日志配置名字 5 namespace: default # 日志配置所在 namespace 6spec: 7 srcConfig: # 定义日志来源 8 srcType: container # 日志类型为容器 9 logType: internal # 容器 stdout 输出日志 10 srcDir: /var/testlog 11 matchPattern: .* 12 ttl: 3 # agent 采集日志时间范围 13 # matchLabels: # 注意:pod存在多个container需要指定container_name 14 # - key: io.kubernetes.container.name 15 # value: pod-perf-test # 改为具体 container name 16 dstConfig: 17 dstType: BLS # 日志输出目的端类型,当前只支持 BLS 18 logStore: filelog-test1 # BLS logstore 名字,不存在会自动创建 19 retention: 10 # BLS logstore 中日志保存时间 20 rateLimit: 10 # 日志上传带宽限制 1-99 MB/s
-
注意:
- 如果 pod 中存在多个container,采集任务中要明确指定采集任务matchLabel中的io.kubernetes.container.name,否则会创建 pod 失败
- pod只有一个container不强制要求logConfig指定matchLabel
测试日志采集
创建日志采集配置CRD后,日志服务会自动采集后续创建的Pod的日志。您可以创建以下应用来测试日志采集效果。
-
创建应用。以Deployment为例,YAML内容示例如下,示例中容器启动后会执行相关命令,不断打印标准输出和日志文件。
YAML1apiVersion: apps/v1 2kind: Deployment 3metadata: 4 name: pod-perf-test 5 namespace: default 6 labels: 7 name: pod-perf-test 8 type: pod-perf-test 9 annotations: 10 deployment.kubernetes.io/revision: "1" 11spec: 12 replicas: 1 13 revisionHistoryLimit: 10 14 selector: 15 matchLabels: 16 name: pod-perf-test 17 type: pod-perf-test 18 strategy: 19 type: RollingUpdate 20 rollingUpdate: 21 maxSurge: 25% 22 maxUnavailable: 25% 23 template: 24 metadata: 25 labels: 26 name: pod-perf-test 27 type: pod-perf-test 28 spec: 29 containers: 30 - name: pod-perf-test 31 image: registry.baidubce.com/qatest/nginx:1.23.0 32 imagePullPolicy: IfNotPresent 33 args: 34 - /bin/sh 35 - -c 36 - | 37 while true; do 38 echo "hello world, test file log $(date)" >> /var/testlog/test.log 39 echo "hello world, test stdout log $(date)" 40 sleep 3 41 done 42 resources: 43 limits: 44 cpu: 1 45 memory: 2Gi 46 requests: 47 cpu: 1 48 memory: 2Gi 49 terminationMessagePath: /dev/termination-log 50 terminationMessagePolicy: File 51 dnsPolicy: Default 52 nodeSelector: 53 type: virtual-kubelet 54 restartPolicy: Always 55 tolerations: 56 - key: virtual-kubelet.io/provider 57 operator: Equal 58 value: baidu 59 effect: NoSchedule
-
将以上YAML保存为test-bls-crd.yaml,执行以下命令创建应用。
Shell1kubectl create -f test-bls-crd.yaml
-
查看日志,登录日志服务控制台,在【日志查询】导航栏中选择对应的 logStore 名称查看日志
- 容器标准输出日志
- 容器内文件日志
- 容器标准输出日志