一、背景与挑战
华为云 CCE 提供了云原生日志采集插件,采集了包含 CCE 集群以及弹性到 CCI 的实例的容器内日志,但对观测云来讲,观测云可以基于 DataKit Operator 以及提供一个 DataKit 的 DaemonSet 部署来实现 CCE 各节点的容器内的日志文件采集,但针对于对于 CCI 的这种 serverless 的容器内日志采集,观测云采集思路包含:
- 通过观测云的 logforward 的 sidecar 部署来实现日志转发给观测云,这种方式消耗大量的资源,并且要对原有的 CCE 的 Deployment 进行改造注入。
- 使用 lambda 函数将 LTS 采集的 OBS 的日志上报到观测云,因 CCE 的同一 Deployment 弹性到 CCI,这种方式基于 OBS 区分不出哪些是 CCI 的日志,哪些是 CCE 的日志。
- 华为云 CCE 云原生日志采集插件中包含了 Otel Collector 组件,通过改造 Otel Collector 的 exporter 配置实现 CCI 日志的导出,这种方式减少了日志接入的成本,避免了资源额外消耗的成本,即本篇重点阐述的最佳实践。
二、前置条件
- DataKit:观测云的采集组件,负责 CCE 日志采集与接收 Otel Collector 的 CCI 日志收集导出。
- 观测云:统一日志检索、查询分析、仪表盘展示、智能告警等。
- 云原生日志采集插件:负责 CCE 日志和 CCI 日志的采集,插件版本要求 1.5.1 版本以上,插件说明如下。

- 业务场景环境:华为 CCE 调度到 CCI 场景。
三、采集流程
华为云 CCE 集群容器内日志通过观测云标准方案 DataKit Operator 的方式采集,而弹性到 CCI 的日志通过云原生插件采集 Otel Collector 并导出到观测云 DataKit 服务,最终展示在观测云控制台,如下流程图:

四、配置步骤
步骤 1:CCE 集群弹性到 CCI Demo 搭建
- 请自行创建 CCE 集群,并创建应用,测试可强制调度到 CCI,如下图:

sp-demo2.yaml
css
kind: Deployment
apiVersion: apps/v1
metadata:
name: sp-demo2
namespace: default
uid: 403dd3e0-8591-44d8-bd7f-0c8585acb26d
resourceVersion: '295573'
generation: 1
creationTimestamp: '2025-09-12T12:15:48Z'
labels:
appgroup: ''
version: v1
virtual-kubelet.io/burst-to-cci: enforce
annotations:
deployment.kubernetes.io/revision: '1'
description: ''
kubectl.kubernetes.io/last-applied-configuration: >
{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{"deployment.kubernetes.io/revision":"5","description":"","workload.cce.io/swr-version":"[{"version":"Private
Edition"}]"},"labels":{"appgroup":"","version":"v1","virtual-kubelet.io/burst-to-cci":"enforce"},"name":"sp-demo2","namespace":"default"},"spec":{"progressDeadlineSeconds":600,"replicas":1,"revisionHistoryLimit":10,"selector":{"matchLabels":{"app":"sp-demo2","version":"v1"}},"strategy":{"rollingUpdate":{"maxSurge":"25%","maxUnavailable":"25%"},"type":"RollingUpdate"},"template":{"metadata":{"labels":{"app":"sp-demo2","version":"v1"}},"spec":{"containers":[{"env":[{"name":"PAAS_APP_NAME","value":"sp-demo2"},{"name":"PAAS_NAMESPACE","value":"default"},{"name":"PAAS_PROJECT_ID","value":"bacc65fb662f435dab3acda49acae0c9"}],"image":"swr.cn-north-4.myhuaweicloud.com/liurui_bj/springboot-server:openj8","imagePullPolicy":"IfNotPresent","name":"container-1","resources":{"limits":{"cpu":"250m","memory":"512Mi"},"requests":{"cpu":"250m","memory":"512Mi"}},"terminationMessagePath":"/dev/termination-log","terminationMessagePolicy":"File"}],"dnsPolicy":"ClusterFirst","imagePullSecrets":[{"name":"default-secret"}],"restartPolicy":"Always","schedulerName":"default-scheduler","securityContext":{},"terminationGracePeriodSeconds":30,"tolerations":[{"effect":"NoExecute","key":"node.kubernetes.io/not-ready","operator":"Exists","tolerationSeconds":300},{"effect":"NoExecute","key":"node.kubernetes.io/unreachable","operator":"Exists","tolerationSeconds":300}]}}}}
workload.cce.io/swr-version: '[{"version":"Private Edition"}]'
managedFields:
- manager: kubectl-client-side-apply
operation: Update
apiVersion: apps/v1
time: '2025-09-12T12:15:48Z'
fieldsType: FieldsV1
fieldsV1:
f:metadata:
f:annotations:
.: {}
f:description: {}
f:kubectl.kubernetes.io/last-applied-configuration: {}
f:workload.cce.io/swr-version: {}
f:labels:
.: {}
f:appgroup: {}
f:version: {}
f:virtual-kubelet.io/burst-to-cci: {}
f:spec:
f:progressDeadlineSeconds: {}
f:replicas: {}
f:revisionHistoryLimit: {}
f:selector: {}
f:strategy:
f:rollingUpdate:
.: {}
f:maxSurge: {}
f:maxUnavailable: {}
f:type: {}
f:template:
f:metadata:
f:labels:
.: {}
f:app: {}
f:version: {}
f:spec:
f:containers:
k:{"name":"container-1"}:
.: {}
f:env:
.: {}
k:{"name":"PAAS_APP_NAME"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"PAAS_NAMESPACE"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"PAAS_PROJECT_ID"}:
.: {}
f:name: {}
f:value: {}
f:image: {}
f:imagePullPolicy: {}
f:name: {}
f:resources:
.: {}
f:limits:
.: {}
f:cpu: {}
f:memory: {}
f:requests:
.: {}
f:cpu: {}
f:memory: {}
f:terminationMessagePath: {}
f:terminationMessagePolicy: {}
f:dnsPolicy: {}
f:imagePullSecrets:
.: {}
k:{"name":"default-secret"}: {}
f:restartPolicy: {}
f:schedulerName: {}
f:securityContext: {}
f:terminationGracePeriodSeconds: {}
f:tolerations: {}
- manager: kube-controller-manager
operation: Update
apiVersion: apps/v1
time: '2025-09-12T12:16:19Z'
fieldsType: FieldsV1
fieldsV1:
f:metadata:
f:annotations:
f:deployment.kubernetes.io/revision: {}
f:status:
f:availableReplicas: {}
f:conditions:
.: {}
k:{"type":"Available"}:
.: {}
f:lastTransitionTime: {}
f:lastUpdateTime: {}
f:message: {}
f:reason: {}
f:status: {}
f:type: {}
k:{"type":"Progressing"}:
.: {}
f:lastTransitionTime: {}
f:lastUpdateTime: {}
f:message: {}
f:reason: {}
f:status: {}
f:type: {}
f:observedGeneration: {}
f:readyReplicas: {}
f:replicas: {}
f:updatedReplicas: {}
subresource: status
spec:
replicas: 1
selector:
matchLabels:
app: sp-demo2
version: v1
template:
metadata:
creationTimestamp: null
labels:
app: sp-demo2
version: v1
spec:
containers:
- name: container-1
image: swr.cn-north-4.myhuaweicloud.com/liurui_bj/springboot-server:openj8
env:
- name: PAAS_APP_NAME
value: sp-demo2
- name: PAAS_NAMESPACE
value: default
- name: PAAS_PROJECT_ID
value: bacc65fb662f435dab3acda49acae0c9
resources:
limits:
cpu: 250m
memory: 512Mi
requests:
cpu: 250m
memory: 512Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
imagePullPolicy: IfNotPresent
restartPolicy: Always
terminationGracePeriodSeconds: 30
dnsPolicy: ClusterFirst
securityContext: {}
imagePullSecrets:
- name: default-secret
schedulerName: default-scheduler
tolerations:
- key: node.kubernetes.io/not-ready
operator: Exists
effect: NoExecute
tolerationSeconds: 300
- key: node.kubernetes.io/unreachable
operator: Exists
effect: NoExecute
tolerationSeconds: 300
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 25%
maxSurge: 25%
revisionHistoryLimit: 10
progressDeadlineSeconds: 600
status:
observedGeneration: 1
replicas: 1
updatedReplicas: 1
readyReplicas: 1
availableReplicas: 1
conditions:
- type: Available
status: 'True'
lastUpdateTime: '2025-09-12T12:16:19Z'
lastTransitionTime: '2025-09-12T12:16:19Z'
reason: MinimumReplicasAvailable
message: Deployment has minimum availability.
- type: Progressing
status: 'True'
lastUpdateTime: '2025-09-12T12:16:19Z'
lastTransitionTime: '2025-09-12T12:15:48Z'
reason: NewReplicaSetAvailable
message: ReplicaSet "sp-demo2-7d9cd96c44" has successfully progressed.
- 查看 CCI 节点运行的 pod :

- 本次要采集的 CCI 容器内日志为 server.log,目录如下:

步骤 2:在 CCE 安装云原生日志采集插件
- 在 CCE 插件中心安装云原生日志采集插件,实例规格自定义配置

- 在日志中心创建 CCI 日志采集策略

- 华为云 LTS 日志采集展示

步骤 3:在 CCE 集群部署 DataKit
- 通过 kubectl apply -f datakit.yaml 命令实现在华为云 CCE 的的一个 Daemonset 部署,采集器要开启 opentelemetry 采集器,并通过亲和性设置不让 DataKit 调度到虚拟节点
datakit.yaml
css
kind: DaemonSet
apiVersion: apps/v1
metadata:
name: datakit
namespace: datakit
uid: 122c1472-03cd-4ec6-a684-0384e40b011c
resourceVersion: '5351437'
generation: 2
creationTimestamp: '2025-09-16T10:45:45Z'
labels:
app: daemonset-datakit
annotations:
deprecated.daemonset.template.generation: '2'
kubectl.kubernetes.io/last-applied-configuration: >
{"apiVersion":"apps/v1","kind":"DaemonSet","metadata":{"annotations":{},"labels":{"app":"daemonset-datakit"},"name":"datakit","namespace":"datakit"},"spec":{"revisionHistoryLimit":10,"selector":{"matchLabels":{"app":"daemonset-datakit"}},"template":{"metadata":{"labels":{"app":"daemonset-datakit"}},"spec":{"containers":[{"env":[{"name":"POD_NAME","valueFrom":{"fieldRef":{"fieldPath":"metadata.name"}}},{"name":"ENV_K8S_NODE_IP","valueFrom":{"fieldRef":{"apiVersion":"v1","fieldPath":"status.hostIP"}}},{"name":"ENV_K8S_NODE_NAME","valueFrom":{"fieldRef":{"apiVersion":"v1","fieldPath":"spec.nodeName"}}},{"name":"ENV_DATAWAY","value":"https://openway.guance.com?token=tkn_3a0052c9f6d3498c8ce9ca0988fd9c82"},{"name":"ENV_CLUSTER_NAME_K8S","value":"cce"},{"name":"ENV_GLOBAL_HOST_TAGS","value":"host=__datakit_hostname,host_ip=__datakit_ip"},{"name":"ENV_GLOBAL_ELECTION_TAGS","value":""},{"name":"ENV_DEFAULT_ENABLED_INPUTS","value":"statsd,dk,cpu,disk,diskio,mem,swap,system,hostobject,net,host_processes,container,kubernetesprometheus,logfwdserver,opentelemetry"},{"name":"ENV_ENABLE_ELECTION","value":"enable"},{"name":"ENV_INPUT_CONTAINER_ENABLE_POD_METRIC","value":"true"},{"name":"ENV_HTTP_LISTEN","value":"0.0.0.0:9529"},{"name":"ENV_INPUT_OTEL_GRPC","value":"{"addr":
"0.0.0.0:4317"}"},{"name":"HOST_PROC","value":"/rootfs/proc"},{"name":"HOST_SYS","value":"/rootfs/sys"},{"name":"HOST_ETC","value":"/rootfs/etc"},{"name":"HOST_VAR","value":"/rootfs/var"},{"name":"HOST_RUN","value":"/rootfs/run"},{"name":"HOST_DEV","value":"/rootfs/dev"},{"name":"HOST_ROOT","value":"/rootfs"}],"image":"swr.cn-north-4.myhuaweicloud.com/liurui_bj/datakit:1.79.0","imagePullPolicy":"IfNotPresent","name":"datakit","ports":[{"containerPort":9529,"hostPort":9529,"name":"http-port","protocol":"TCP"},{"containerPort":8125,"hostPort":8125,"name":"statsd-port","protocol":"UDP"},{"containerPort":4317,"hostPort":4317,"name":"otel-grpc-port","protocol":"TCP"},{"containerPort":9533,"hostPort":9533,"name":"logfwd-port","protocol":"TCP"}],"resources":{"limits":{"cpu":"500m","memory":"1Gi"},"requests":{"cpu":"200m","memory":"128Mi"}},"securityContext":{"privileged":true},"volumeMounts":[{"mountPath":"/usr/local/datakit/cache","name":"cache","readOnly":false},{"mountPath":"/rootfs","mountPropagation":"HostToContainer","name":"rootfs"},{"mountPath":"/var/run","mountPropagation":"HostToContainer","name":"run"},{"mountPath":"/sys/kernel/debug","name":"debugfs"},{"mountPath":"/var/lib/containerd/container_logs","name":"container-logs"},{"mountPath":"/usr/local/datakit/conf.d/kubernetesprometheus/kubelet.conf","name":"datakit-conf","subPath":"kubelet.conf"}],"workingDir":"/usr/local/datakit"}],"dnsPolicy":"ClusterFirstWithHostNet","hostIPC":true,"hostNetwork":true,"hostPID":true,"restartPolicy":"Always","serviceAccount":"datakit","serviceAccountName":"datakit","tolerations":[{"operator":"Exists"}],"volumes":[{"configMap":{"name":"datakit-conf"},"name":"datakit-conf"},{"hostPath":{"path":"/"},"name":"rootfs"},{"hostPath":{"path":"/var/run"},"name":"run"},{"hostPath":{"path":"/sys/kernel/debug"},"name":"debugfs"},{"hostPath":{"path":"/root/datakit_cache"},"name":"cache"},{"hostPath":{"path":"/var/lib/containerd/container_logs"},"name":"container-logs"}]}},"updateStrategy":{"rollingUpdate":{"maxUnavailable":1},"type":"RollingUpdate"}}}
managedFields:
- manager: kubectl-client-side-apply
operation: Update
apiVersion: apps/v1
time: '2025-09-16T10:45:45Z'
fieldsType: FieldsV1
fieldsV1:
f:metadata:
f:annotations:
.: {}
f:deprecated.daemonset.template.generation: {}
f:kubectl.kubernetes.io/last-applied-configuration: {}
f:labels:
.: {}
f:app: {}
f:spec:
f:revisionHistoryLimit: {}
f:selector: {}
f:template:
f:metadata:
f:labels:
.: {}
f:app: {}
f:spec:
f:containers:
k:{"name":"datakit"}:
.: {}
f:env:
.: {}
k:{"name":"ENV_CLUSTER_NAME_K8S"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"ENV_DATAWAY"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"ENV_DEFAULT_ENABLED_INPUTS"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"ENV_ENABLE_ELECTION"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"ENV_GLOBAL_ELECTION_TAGS"}:
.: {}
f:name: {}
k:{"name":"ENV_GLOBAL_HOST_TAGS"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"ENV_HTTP_LISTEN"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"ENV_INPUT_CONTAINER_ENABLE_POD_METRIC"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"ENV_INPUT_OTEL_GRPC"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"ENV_K8S_NODE_IP"}:
.: {}
f:name: {}
f:valueFrom:
.: {}
f:fieldRef: {}
k:{"name":"ENV_K8S_NODE_NAME"}:
.: {}
f:name: {}
f:valueFrom:
.: {}
f:fieldRef: {}
k:{"name":"HOST_DEV"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"HOST_ETC"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"HOST_PROC"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"HOST_ROOT"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"HOST_RUN"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"HOST_SYS"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"HOST_VAR"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"POD_NAME"}:
.: {}
f:name: {}
f:valueFrom:
.: {}
f:fieldRef: {}
f:image: {}
f:imagePullPolicy: {}
f:name: {}
f:ports:
.: {}
k:{"containerPort":4317,"protocol":"TCP"}:
.: {}
f:containerPort: {}
f:hostPort: {}
f:name: {}
f:protocol: {}
k:{"containerPort":8125,"protocol":"UDP"}:
.: {}
f:containerPort: {}
f:hostPort: {}
f:name: {}
f:protocol: {}
k:{"containerPort":9529,"protocol":"TCP"}:
.: {}
f:containerPort: {}
f:hostPort: {}
f:name: {}
f:protocol: {}
k:{"containerPort":9533,"protocol":"TCP"}:
.: {}
f:containerPort: {}
f:hostPort: {}
f:name: {}
f:protocol: {}
f:resources:
.: {}
f:limits:
.: {}
f:cpu: {}
f:memory: {}
f:requests:
.: {}
f:cpu: {}
f:memory: {}
f:securityContext:
.: {}
f:privileged: {}
f:terminationMessagePath: {}
f:terminationMessagePolicy: {}
f:volumeMounts:
.: {}
k:{"mountPath":"/rootfs"}:
.: {}
f:mountPath: {}
f:mountPropagation: {}
f:name: {}
k:{"mountPath":"/sys/kernel/debug"}:
.: {}
f:mountPath: {}
f:name: {}
k:{"mountPath":"/usr/local/datakit/cache"}:
.: {}
f:mountPath: {}
f:name: {}
k:{"mountPath":"/usr/local/datakit/conf.d/kubernetesprometheus/kubelet.conf"}:
.: {}
f:mountPath: {}
f:name: {}
f:subPath: {}
k:{"mountPath":"/var/lib/containerd/container_logs"}:
.: {}
f:mountPath: {}
f:name: {}
k:{"mountPath":"/var/run"}:
.: {}
f:mountPath: {}
f:mountPropagation: {}
f:name: {}
f:workingDir: {}
f:dnsPolicy: {}
f:hostIPC: {}
f:hostNetwork: {}
f:hostPID: {}
f:restartPolicy: {}
f:schedulerName: {}
f:securityContext: {}
f:serviceAccount: {}
f:serviceAccountName: {}
f:terminationGracePeriodSeconds: {}
f:tolerations: {}
f:volumes:
.: {}
k:{"name":"cache"}:
.: {}
f:hostPath:
.: {}
f:path: {}
f:type: {}
f:name: {}
k:{"name":"container-logs"}:
.: {}
f:hostPath:
.: {}
f:path: {}
f:type: {}
f:name: {}
k:{"name":"datakit-conf"}:
.: {}
f:configMap:
.: {}
f:defaultMode: {}
f:name: {}
f:name: {}
k:{"name":"debugfs"}:
.: {}
f:hostPath:
.: {}
f:path: {}
f:type: {}
f:name: {}
k:{"name":"rootfs"}:
.: {}
f:hostPath:
.: {}
f:path: {}
f:type: {}
f:name: {}
k:{"name":"run"}:
.: {}
f:hostPath:
.: {}
f:path: {}
f:type: {}
f:name: {}
f:updateStrategy:
f:rollingUpdate:
.: {}
f:maxSurge: {}
f:maxUnavailable: {}
f:type: {}
- manager: cfe-apiserver
operation: Update
apiVersion: apps/v1
time: '2025-09-19T06:28:11Z'
fieldsType: FieldsV1
fieldsV1:
f:spec:
f:template:
f:spec:
f:affinity:
.: {}
f:nodeAffinity:
.: {}
f:requiredDuringSchedulingIgnoredDuringExecution: {}
- manager: kube-controller-manager
operation: Update
apiVersion: apps/v1
time: '2025-09-19T06:28:19Z'
fieldsType: FieldsV1
fieldsV1:
f:status:
f:currentNumberScheduled: {}
f:desiredNumberScheduled: {}
f:numberAvailable: {}
f:numberMisscheduled: {}
f:numberReady: {}
f:observedGeneration: {}
f:updatedNumberScheduled: {}
subresource: status
spec:
selector:
matchLabels:
app: daemonset-datakit
template:
metadata:
creationTimestamp: null
labels:
app: daemonset-datakit
spec:
volumes:
- name: datakit-conf
configMap:
name: datakit-conf
defaultMode: 420
- name: rootfs
hostPath:
path: /
type: ''
- name: run
hostPath:
path: /var/run
type: ''
- name: debugfs
hostPath:
path: /sys/kernel/debug
type: ''
- name: cache
hostPath:
path: /root/datakit_cache
type: ''
- name: container-logs
hostPath:
path: /var/lib/containerd/container_logs
type: ''
containers:
- name: datakit
image: swr.cn-north-4.myhuaweicloud.com/liurui_bj/datakit:1.79.0
workingDir: /usr/local/datakit
ports:
- name: http-port
hostPort: 9529
containerPort: 9529
protocol: TCP
- name: statsd-port
hostPort: 8125
containerPort: 8125
protocol: UDP
- name: otel-grpc-port
hostPort: 4317
containerPort: 4317
protocol: TCP
- name: logfwd-port
hostPort: 9533
containerPort: 9533
protocol: TCP
env:
- name: POD_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
- name: ENV_K8S_NODE_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.hostIP
- name: ENV_K8S_NODE_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: spec.nodeName
- name: ENV_DATAWAY
value: https://openway.guance.com?token=tkn_3a0052c9f6d3498c8ce9ca0988fd9c82
- name: ENV_CLUSTER_NAME_K8S
value: cce
- name: ENV_GLOBAL_HOST_TAGS
value: host=__datakit_hostname,host_ip=__datakit_ip
- name: ENV_GLOBAL_ELECTION_TAGS
- name: ENV_DEFAULT_ENABLED_INPUTS
value: statsd,dk,cpu,disk,diskio,mem,swap,system,hostobject,net,host_processes,container,kubernetesprometheus,logfwdserver,opentelemetry
- name: ENV_ENABLE_ELECTION
value: enable
- name: ENV_INPUT_CONTAINER_ENABLE_POD_METRIC
value: 'true'
- name: ENV_HTTP_LISTEN
value: 0.0.0.0:9529
- name: ENV_INPUT_OTEL_GRPC
value: '{"addr": "0.0.0.0:4317"}'
- name: HOST_PROC
value: /rootfs/proc
- name: HOST_SYS
value: /rootfs/sys
- name: HOST_ETC
value: /rootfs/etc
- name: HOST_VAR
value: /rootfs/var
- name: HOST_RUN
value: /rootfs/run
- name: HOST_DEV
value: /rootfs/dev
- name: HOST_ROOT
value: /rootfs
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 200m
memory: 128Mi
volumeMounts:
- name: cache
mountPath: /usr/local/datakit/cache
- name: rootfs
mountPath: /rootfs
mountPropagation: HostToContainer
- name: run
mountPath: /var/run
mountPropagation: HostToContainer
- name: debugfs
mountPath: /sys/kernel/debug
- name: container-logs
mountPath: /var/lib/containerd/container_logs
- name: datakit-conf
mountPath: /usr/local/datakit/conf.d/kubernetesprometheus/kubelet.conf
subPath: kubelet.conf
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
imagePullPolicy: IfNotPresent
securityContext:
privileged: true
restartPolicy: Always
terminationGracePeriodSeconds: 30
dnsPolicy: ClusterFirstWithHostNet
serviceAccountName: datakit
serviceAccount: datakit
hostNetwork: true
hostPID: true
hostIPC: true
securityContext: {}
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: bursting.cci.io/node-type
operator: NotIn
values:
- virtual-kubelet
schedulerName: default-scheduler
tolerations:
- operator: Exists
updateStrategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 0
revisionHistoryLimit: 10
status:
currentNumberScheduled: 2
numberMisscheduled: 0
desiredNumberScheduled: 2
numberReady: 2
observedGeneration: 2
updatedNumberScheduled: 2
numberAvailable: 2
- 进入 datakit 容器,并执行 datakit monitor 查看 opentelemetry 采集器是否开启

步骤 4:重写 Otel Collector 的采集配置
log-agent-otel-collector.yaml
css
kind: Deployment
apiVersion: apps/v1
metadata:
name: log-agent-otel-collector
namespace: monitoring
uid: c055d466-4287-4860-9ff7-d28cc036ae89
resourceVersion: '7557223'
generation: 3
creationTimestamp: '2025-09-22T07:28:09Z'
labels:
app: log-agent-otel-collector
app.kubernetes.io/managed-by: Helm
release: cceaddon-log-agent
annotations:
deployment.kubernetes.io/revision: '3'
kubectl.kubernetes.io/last-applied-configuration: >
{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{"deployment.kubernetes.io/revision":"3","meta.helm.sh/release-name":"cceaddon-log-agent","meta.helm.sh/release-namespace":"monitoring"},"creationTimestamp":"2025-09-20T19:02:18Z","generation":3,"labels":{"app":"log-agent-otel-collector","app.kubernetes.io/managed-by":"Helm","release":"cceaddon-log-agent"},"name":"log-agent-otel-collector","namespace":"monitoring","resourceVersion":"7514159","uid":"180806a1-7260-4139-989c-73945d7b1a4c"},"spec":{"minReadySeconds":5,"progressDeadlineSeconds":120,"replicas":2,"revisionHistoryLimit":10,"selector":{"matchLabels":{"app":"log-agent-otel-collector"}},"strategy":{"rollingUpdate":{"maxSurge":1,"maxUnavailable":1},"type":"RollingUpdate"},"template":{"metadata":{"annotations":{"prometheus.io/path":"/metrics","prometheus.io/port":"8888","prometheus.io/scheme":"http","prometheus.io/scrape":"true","redeploy-timestamp":"1758396245987","scheduler.alpha.kubernetes.io/tolerations":"[{"key":
"taint.alpha.kubernetes.io/nodedown","value": "","effect": "NoExecute","operator":
"Exists"}]"},"creationTimestamp":null,"labels":{"app":"log-agent-otel-collector","release":"cceaddon-log-agent"}},"spec":{"affinity":{"podAntiAffinity":{"preferredDuringSchedulingIgnoredDuringExecution":[{"podAffinityTerm":{"labelSelector":{"matchExpressions":[{"key":"app","operator":"In","values":["log-agent-otel-collector"]}]},"topologyKey":"topology.kubernetes.io/zone"},"weight":100}]}},"containers":[{"args":["--config=/var/paas/ot-collector/ot-collector-service.yaml"],"command":["/var/paas/otel-collector/otelcol"],"env":[{"name":"POD_IP","valueFrom":{"fieldRef":{"apiVersion":"v1","fieldPath":"status.podIP"}}},{"name":"Region","value":"cn-north-4"},{"name":"ProjectID","value":"9e92837f567145009ad4d230c4ac2c01"},{"name":"ClusterID","value":"74e8b92f-8f80-11f0-afe1-0255ac10026c"},{"name":"ClusterName","value":"cce-cci"},{"name":"WATCH_SECRET","value":"true"},{"name":"INSECURE_SKIP_VERIFY","value":"true"},{"name":"SCENE","value":"HWS"},{"name":"AKSK_SECRET_NAME","value":"paas.elb"},{"name":"WATCH_CLUSTER_CONFIG","value":"true"},{"name":"AOM_ENDPOINT","value":"https://aom.cn-north-4.myhuaweicloud.com"},{"name":"LTS_ACCESS_ENDPOINT","value":"https://lts-access.cn-north-4.myhuaweicloud.com:8102"},{"name":"CRYPTO_ENABLE","value":"true"},{"name":"PAAS_CRYPTO_PATH","value":"/etc/cipher"}],"image":"swr.cn-north-4.myhuaweicloud.com/hwofficial/otelcol:1.7.4","imagePullPolicy":"IfNotPresent","livenessProbe":{"exec":{"command":["/bin/bash","-c","exit
0"]},"failureThreshold":3,"initialDelaySeconds":20,"periodSeconds":20,"successThreshold":1,"timeoutSeconds":10},"name":"otel-collector","ports":[{"containerPort":8006,"protocol":"TCP"},{"containerPort":4317,"protocol":"TCP"},{"containerPort":8888,"name":"metric-port","protocol":"TCP"}],"resources":{"limits":{"cpu":"1","memory":"2Gi"},"requests":{"cpu":"200m","memory":"1Gi"}},"securityContext":{"allowPrivilegeEscalation":false,"readOnlyRootFilesystem":true,"runAsGroup":10000,"runAsUser":10000},"terminationMessagePath":"/dev/termination-log","terminationMessagePolicy":"File","volumeMounts":[{"mountPath":"/var/paas/otel-collector/conf","name":"otel-collector-config-vol","readOnly":true},{"mountPath":"/var/paas/ot-collector/ot-collector-service.yaml","name":"ot-collector-service","readOnly":true,"subPath":"ot-collector-service.yaml"},{"mountPath":"/var/paas/sys/log","name":"logpath"},{"mountPath":"/etc/cipher/root.key","name":"rootkey","readOnly":true},{"mountPath":"/etc/cipher/common_shared.key","name":"commonsharedkey","readOnly":true},{"mountPath":"/var/paas/cert","name":"cert","readOnly":true}]}],"dnsConfig":{"options":[{"name":"ndots","value":"3"}]},"dnsPolicy":"ClusterFirst","initContainers":[{"command":["/bin/sh","-c","mkdir
-p /var/paas/sys/log/otel \u0026\u0026 chmod 750 /var/paas/sys/log/otel \u0026\u0026 chown -R 10000:10000
/var/paas/sys/log/otel"],"image":"swr.cn-north-4.myhuaweicloud.com/hwofficial/otelcol:1.7.4","imagePullPolicy":"IfNotPresent","name":"init","resources":{"limits":{"cpu":"200m","memory":"200Mi"},"requests":{"cpu":"100m","memory":"100Mi"}},"terminationMessagePath":"/dev/termination-log","terminationMessagePolicy":"File","volumeMounts":[{"mountPath":"/var/paas/sys/log","name":"logpath"}]}],"priorityClassName":"system-cluster-critical","restartPolicy":"Always","schedulerName":"default-scheduler","securityContext":{"fsGroup":10000},"serviceAccount":"log-agent-serviceaccount","serviceAccountName":"log-agent-serviceaccount","terminationGracePeriodSeconds":30,"tolerations":[{"effect":"NoExecute","key":"node.kubernetes.io/not-ready","operator":"Exists","tolerationSeconds":30},{"effect":"NoExecute","key":"node.kubernetes.io/unreachable","operator":"Exists","tolerationSeconds":30},{"key":"role","operator":"Exists"},{"effect":"NoSchedule","key":"distribution.io/category","operator":"Equal","value":"IES"}],"volumes":[{"name":"otel-collector-config-vol","secret":{"defaultMode":384,"secretName":"log-agent-otel-collector-config"}},{"configMap":{"defaultMode":420,"items":[{"key":"ot-collector-service.yaml","path":"ot-collector-service.yaml"}],"name":"ot-collector-service"},"name":"ot-collector-service"},{"name":"cert","secret":{"defaultMode":416,"items":[{"key":"caCert","path":"caCert"},{"key":"serverCert","path":"serverCert"},{"key":"serverKey","path":"serverKey"}],"secretName":"log-agent-cert-secret"}},{"hostPath":{"path":"/var/paas/sys/log","type":""},"name":"logpath"},{"hostPath":{"path":"/var/paas/srv/kubernetes/root.key","type":""},"name":"rootkey"},{"hostPath":{"path":"/var/paas/srv/kubernetes/common_shared.key","type":""},"name":"commonsharedkey"}]}}},"status":{"conditions":[{"lastTransitionTime":"2025-09-20T19:02:18Z","lastUpdateTime":"2025-09-20T19:37:31Z","message":"ReplicaSet
"log-agent-otel-collector-8fbf8c694" has successfully progressed.","reason":"NewReplicaSetAvailable","status":"True","type":"Progressing"},{"lastTransitionTime":"2025-09-22T06:15:38Z","lastUpdateTime":"2025-09-22T06:15:38Z","message":"Deployment does not have minimum availability.","reason":"MinimumReplicasUnavailable","status":"False","type":"Available"}],"observedGeneration":3,"replicas":2,"unavailableReplicas":2,"updatedReplicas":2}}
meta.helm.sh/release-name: cceaddon-log-agent
meta.helm.sh/release-namespace: monitoring
managedFields:
- manager: kubectl-client-side-apply
operation: Update
apiVersion: apps/v1
time: '2025-09-22T07:28:09Z'
fieldsType: FieldsV1
fieldsV1:
f:metadata:
f:annotations:
.: {}
f:kubectl.kubernetes.io/last-applied-configuration: {}
f:meta.helm.sh/release-name: {}
f:meta.helm.sh/release-namespace: {}
f:labels:
.: {}
f:app: {}
f:app.kubernetes.io/managed-by: {}
f:release: {}
f:spec:
f:minReadySeconds: {}
f:progressDeadlineSeconds: {}
f:replicas: {}
f:revisionHistoryLimit: {}
f:selector: {}
f:strategy:
f:rollingUpdate:
.: {}
f:maxSurge: {}
f:maxUnavailable: {}
f:type: {}
f:template:
f:metadata:
f:annotations:
.: {}
f:prometheus.io/path: {}
f:prometheus.io/port: {}
f:prometheus.io/scheme: {}
f:prometheus.io/scrape: {}
f:scheduler.alpha.kubernetes.io/tolerations: {}
f:labels:
.: {}
f:app: {}
f:release: {}
f:spec:
f:affinity:
.: {}
f:podAntiAffinity:
.: {}
f:preferredDuringSchedulingIgnoredDuringExecution: {}
f:containers:
k:{"name":"otel-collector"}:
.: {}
f:args: {}
f:command: {}
f:env:
.: {}
k:{"name":"AKSK_SECRET_NAME"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"AOM_ENDPOINT"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"CRYPTO_ENABLE"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"ClusterID"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"ClusterName"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"INSECURE_SKIP_VERIFY"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"LTS_ACCESS_ENDPOINT"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"PAAS_CRYPTO_PATH"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"POD_IP"}:
.: {}
f:name: {}
f:valueFrom:
.: {}
f:fieldRef: {}
k:{"name":"ProjectID"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"Region"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"SCENE"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"WATCH_CLUSTER_CONFIG"}:
.: {}
f:name: {}
f:value: {}
k:{"name":"WATCH_SECRET"}:
.: {}
f:name: {}
f:value: {}
f:image: {}
f:imagePullPolicy: {}
f:livenessProbe:
.: {}
f:exec:
.: {}
f:command: {}
f:failureThreshold: {}
f:initialDelaySeconds: {}
f:periodSeconds: {}
f:successThreshold: {}
f:timeoutSeconds: {}
f:name: {}
f:ports:
.: {}
k:{"containerPort":4317,"protocol":"TCP"}:
.: {}
f:containerPort: {}
f:protocol: {}
k:{"containerPort":8006,"protocol":"TCP"}:
.: {}
f:containerPort: {}
f:protocol: {}
k:{"containerPort":8888,"protocol":"TCP"}:
.: {}
f:containerPort: {}
f:name: {}
f:protocol: {}
f:resources:
.: {}
f:limits:
.: {}
f:cpu: {}
f:memory: {}
f:requests:
.: {}
f:cpu: {}
f:memory: {}
f:securityContext:
.: {}
f:allowPrivilegeEscalation: {}
f:readOnlyRootFilesystem: {}
f:runAsGroup: {}
f:runAsUser: {}
f:terminationMessagePath: {}
f:terminationMessagePolicy: {}
f:volumeMounts:
.: {}
k:{"mountPath":"/etc/cipher/common_shared.key"}:
.: {}
f:mountPath: {}
f:name: {}
f:readOnly: {}
k:{"mountPath":"/etc/cipher/root.key"}:
.: {}
f:mountPath: {}
f:name: {}
f:readOnly: {}
k:{"mountPath":"/var/paas/cert"}:
.: {}
f:mountPath: {}
f:name: {}
f:readOnly: {}
k:{"mountPath":"/var/paas/ot-collector/ot-collector-service.yaml"}:
.: {}
f:mountPath: {}
f:name: {}
f:readOnly: {}
f:subPath: {}
k:{"mountPath":"/var/paas/otel-collector/conf"}:
.: {}
f:mountPath: {}
f:name: {}
f:readOnly: {}
k:{"mountPath":"/var/paas/sys/log"}:
.: {}
f:mountPath: {}
f:name: {}
f:dnsConfig:
.: {}
f:options: {}
f:dnsPolicy: {}
f:initContainers:
.: {}
k:{"name":"init"}:
.: {}
f:command: {}
f:image: {}
f:imagePullPolicy: {}
f:name: {}
f:resources:
.: {}
f:limits:
.: {}
f:cpu: {}
f:memory: {}
f:requests:
.: {}
f:cpu: {}
f:memory: {}
f:terminationMessagePath: {}
f:terminationMessagePolicy: {}
f:volumeMounts:
.: {}
k:{"mountPath":"/var/paas/sys/log"}:
.: {}
f:mountPath: {}
f:name: {}
f:priorityClassName: {}
f:restartPolicy: {}
f:schedulerName: {}
f:securityContext:
.: {}
f:fsGroup: {}
f:serviceAccount: {}
f:serviceAccountName: {}
f:terminationGracePeriodSeconds: {}
f:tolerations: {}
f:volumes:
.: {}
k:{"name":"cert"}:
.: {}
f:name: {}
f:secret:
.: {}
f:defaultMode: {}
f:items: {}
f:secretName: {}
k:{"name":"commonsharedkey"}:
.: {}
f:hostPath:
.: {}
f:path: {}
f:type: {}
f:name: {}
k:{"name":"logpath"}:
.: {}
f:hostPath:
.: {}
f:path: {}
f:type: {}
f:name: {}
k:{"name":"ot-collector-service"}:
.: {}
f:configMap:
.: {}
f:defaultMode: {}
f:items: {}
f:name: {}
f:name: {}
k:{"name":"otel-collector-config-vol"}:
.: {}
f:name: {}
f:secret:
.: {}
f:defaultMode: {}
f:secretName: {}
k:{"name":"rootkey"}:
.: {}
f:hostPath:
.: {}
f:path: {}
f:type: {}
f:name: {}
- manager: cfe-apiserver
operation: Update
apiVersion: apps/v1
time: '2025-09-22T07:40:23Z'
fieldsType: FieldsV1
fieldsV1:
f:spec:
f:template:
f:metadata:
f:annotations:
f:redeploy-timestamp: {}
- manager: kube-controller-manager
operation: Update
apiVersion: apps/v1
time: '2025-09-22T07:40:31Z'
fieldsType: FieldsV1
fieldsV1:
f:metadata:
f:annotations:
f:deployment.kubernetes.io/revision: {}
f:status:
f:availableReplicas: {}
f:conditions:
.: {}
k:{"type":"Available"}:
.: {}
f:lastTransitionTime: {}
f:lastUpdateTime: {}
f:message: {}
f:reason: {}
f:status: {}
f:type: {}
k:{"type":"Progressing"}:
.: {}
f:lastTransitionTime: {}
f:lastUpdateTime: {}
f:message: {}
f:reason: {}
f:status: {}
f:type: {}
f:observedGeneration: {}
f:readyReplicas: {}
f:replicas: {}
f:updatedReplicas: {}
subresource: status
spec:
replicas: 2
selector:
matchLabels:
app: log-agent-otel-collector
template:
metadata:
creationTimestamp: null
labels:
app: log-agent-otel-collector
release: cceaddon-log-agent
annotations:
prometheus.io/path: /metrics
prometheus.io/port: '8888'
prometheus.io/scheme: http
prometheus.io/scrape: 'true'
redeploy-timestamp: '1758526823089'
scheduler.alpha.kubernetes.io/tolerations: '[{"key": "taint.alpha.kubernetes.io/nodedown","value": "","effect": "NoExecute","operator": "Exists"}]'
spec:
volumes:
- name: otel-collector-config-vol
secret:
secretName: log-agent-otel-collector-config
defaultMode: 384
- name: ot-collector-service
configMap:
name: ot-collector-service
items:
- key: ot-collector-service.yaml
path: ot-collector-service.yaml
defaultMode: 420
- name: cert
secret:
secretName: log-agent-cert-secret
items:
- key: caCert
path: caCert
- key: serverCert
path: serverCert
- key: serverKey
path: serverKey
defaultMode: 416
- name: logpath
hostPath:
path: /var/paas/sys/log
type: ''
- name: rootkey
hostPath:
path: /var/paas/srv/kubernetes/root.key
type: ''
- name: commonsharedkey
hostPath:
path: /var/paas/srv/kubernetes/common_shared.key
type: ''
initContainers:
- name: init
image: swr.cn-north-4.myhuaweicloud.com/hwofficial/otelcol:1.7.4
command:
- /bin/sh
- '-c'
- mkdir -p /var/paas/sys/log/otel && chmod 750 /var/paas/sys/log/otel && chown -R 10000:10000 /var/paas/sys/log/otel
resources:
limits:
cpu: 200m
memory: 200Mi
requests:
cpu: 100m
memory: 100Mi
volumeMounts:
- name: logpath
mountPath: /var/paas/sys/log
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
imagePullPolicy: IfNotPresent
containers:
- name: otel-collector
image: swr.cn-north-4.myhuaweicloud.com/hwofficial/otelcol:1.7.4
command:
- /var/paas/otel-collector/otelcol
args:
- '--config=/var/paas/ot-collector/ot-collector-service.yaml'
ports:
- containerPort: 8006
protocol: TCP
- containerPort: 4317
protocol: TCP
- name: metric-port
containerPort: 8888
protocol: TCP
env:
- name: POD_IP
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: status.podIP
- name: Region
value: cn-north-4
- name: ProjectID
value: 9e92837f567145009ad4d230c4ac2c01
- name: ClusterID
value: 74e8b92f-8f80-11f0-afe1-0255ac10026c
- name: ClusterName
value: cce-cci
- name: WATCH_SECRET
value: 'true'
- name: INSECURE_SKIP_VERIFY
value: 'true'
- name: SCENE
value: HWS
- name: AKSK_SECRET_NAME
value: paas.elb
- name: WATCH_CLUSTER_CONFIG
value: 'true'
- name: AOM_ENDPOINT
value: https://aom.cn-north-4.myhuaweicloud.com
- name: LTS_ACCESS_ENDPOINT
value: https://lts-access.cn-north-4.myhuaweicloud.com:8102
- name: CRYPTO_ENABLE
value: 'true'
- name: PAAS_CRYPTO_PATH
value: /etc/cipher
resources:
limits:
cpu: '1'
memory: 2Gi
requests:
cpu: 200m
memory: 1Gi
volumeMounts:
- name: otel-collector-config-vol
readOnly: true
mountPath: /var/paas/otel-collector/conf
- name: ot-collector-service
readOnly: true
mountPath: /var/paas/ot-collector/ot-collector-service.yaml
subPath: ot-collector-service.yaml
- name: logpath
mountPath: /var/paas/sys/log
- name: rootkey
readOnly: true
mountPath: /etc/cipher/root.key
- name: commonsharedkey
readOnly: true
mountPath: /etc/cipher/common_shared.key
- name: cert
readOnly: true
mountPath: /var/paas/cert
livenessProbe:
exec:
command:
- /bin/bash
- '-c'
- exit 0
initialDelaySeconds: 20
timeoutSeconds: 10
periodSeconds: 20
successThreshold: 1
failureThreshold: 3
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
imagePullPolicy: IfNotPresent
securityContext:
runAsUser: 10000
runAsGroup: 10000
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
restartPolicy: Always
terminationGracePeriodSeconds: 30
dnsPolicy: ClusterFirst
serviceAccountName: log-agent-serviceaccount
serviceAccount: log-agent-serviceaccount
securityContext:
fsGroup: 10000
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: app
operator: In
values:
- log-agent-otel-collector
topologyKey: topology.kubernetes.io/zone
schedulerName: default-scheduler
tolerations:
- key: node.kubernetes.io/not-ready
operator: Exists
effect: NoExecute
tolerationSeconds: 30
- key: node.kubernetes.io/unreachable
operator: Exists
effect: NoExecute
tolerationSeconds: 30
- key: role
operator: Exists
- key: distribution.io/category
operator: Equal
value: IES
effect: NoSchedule
priorityClassName: system-cluster-critical
dnsConfig:
options:
- name: ndots
value: '3'
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
minReadySeconds: 5
revisionHistoryLimit: 10
progressDeadlineSeconds: 120
status:
observedGeneration: 3
replicas: 2
updatedReplicas: 2
readyReplicas: 2
availableReplicas: 2
conditions:
- type: Available
status: 'True'
lastUpdateTime: '2025-09-22T07:28:16Z'
lastTransitionTime: '2025-09-22T07:28:16Z'
reason: MinimumReplicasAvailable
message: Deployment has minimum availability.
- type: Progressing
status: 'True'
lastUpdateTime: '2025-09-22T07:40:31Z'
lastTransitionTime: '2025-09-22T07:28:09Z'
reason: NewReplicaSetAvailable
message: ReplicaSet "log-agent-otel-collector-5cfd6f4c7c" has successfully progressed.
- 为避免配置覆盖以及确保配置生效,指定 Otel Collector 启动加载生效的配置

- Otel Collector 挂载新的配置

- 关闭健康检查

- 若要实现 LTS 和观测云的数据双写,挂载的配置如下:
yaml
exporters:
aom/default-event-aom:
endpoint: https://aom.cn-north-4.myhuaweicloud.com
events:
- name: DeleteNodeWithNoServer
name_cn: 废弃节点清理
...
lts/default-stdout:
compress_type: gzip
endpoint: https://lts-access.cn-north-4.myhuaweicloud.com:8102
log_type: log
lts_group_id: d6b393b8-484f-4835-ba9f-xxxxx
lts_stream_id: 8e02106f-8aeb-4da5-a5e1-xxxxx
otlphttp:
endpoint: http://datakit-service.datakit:9529/otel
tls:
insecure: true
processors:
batch/default-event:
send_batch_max_size: 1000
send_batch_size: 500
timeout: 1000000000
...
filter/cci-log:
logs:
exclude: {}
include:
match_type: strict
record_attributes:
- key: logconfig
value: cci-log
filter/datakit:
logs:
exclude: {}
include:
match_type: strict
record_attributes:
- key: logconfig
value: datakit
service:
pipelines:
logs/cci-log:
exporters:
- lts/cci-log
- otlphttp
...
- 挂载的配置若是只写到观测云,配置如下:
yaml
exporters:
otlphttp:
endpoint: http://datakit-service.datakit:9529/otel
tls:
insecure: true
processors:
batch/logs:
send_batch_max_size: 2000
send_batch_size: 2000
filter/cci-log:
logs:
exclude: {}
include:
match_type: strict
record_attributes:
- key: logconfig
value: cci-log
receivers:
fluentforward:
endpoint: ${POD_IP}:8006
tls:
cert_file: /var/paas/cert/serverCert
client_ca_file: /var/paas/cert/caCert
key_file: /var/paas/cert/serverKey
k8s_events: {}
service:
pipelines:
logs/cci-log:
exporters:
- otlphttp
processors:
- filter/cci-log
- batch/logs
receivers:
- fluentforward
telemetry:
logs: {}
metrics:
address: ${POD_IP}:8888
level: basic
步骤 5:容器 demo 发起请求,产生日志

步骤 6:在观测云验证日志接入
- 登录观测云控制台 → 日志查看器 ,可以看到相关日志已经被采集到了观测云。
