本文面向 Kubernetes 与观测云 APM 的使用者,提供一套零代码侵入、可直接落地的 Python 容器应用全链路监控方案。你无需修改任何业务代码,只需跟着本文分步操作,即可快速实现 Python 应用的 HTTP 调用、数据库 / 缓存依赖等全链路数据采集,为微服务问题排查、性能优化提供数据支撑。
先搞懂每个组件的作用,后续操作不迷茫:
本文示例为典型前后端分离场景,全链路数据流转架构如下:
请先确认以下条件全部满足,再开始后续操作:
你有一个正常运行的 Kubernetes 集群,拥有集群管理员权限(可执行 kubectl apply、修改命名空间资源等操作)
你的 Python 容器应用已经正常部署在 K8s 集群中,且能正常对外提供服务
你已开通观测云工作空间,并获取到了对应工作空间的 Token(Dataway Token)
本地 kubectl 工具已配置好集群访问凭证,可正常连接并操作 K8s 集群
执行官方清单快速部署 DataKit,默认以 DaemonSet 形式运行在所有节点:
# 部署 DataKitkubectl apply -f https://static.guance.com/datakit/datakit.yaml
执行以下命令,更新 DataKit 的环境变量,请务必替换尖括号内的参数为你自己的实际值:
kubectl -n datakit set env daemonset/datakit \ # 替换为实际的 Dataway 地址和 Token ENV_DATAWAY="https://openway.guance.com?token=<YOUR-WORKSPACE-TOKEN>" \ # 自定义集群名称,便于多集群数据区分 ENV_CLUSTER_NAME_K8S="python-k8s-demo" \ # 必须包含 ddtrace,否则无法接收 Python 探针数据 ENV_DEFAULT_ENABLED_INPUTS="statsd,dk,cpu,disk,diskio,mem,swap,system,hostobject,net,host_processes,container,kubernetesprometheus,ddtrace"
可选方式:你也可以直接编辑 datakit.yaml 文件,修改对应环境变量后,重新执行 kubectl apply -f datakit.yaml 生效。
注意提示:
ENV_DEFAULT_ENABLED_INPUTS 里必须包含ddtrace,多个采集器之间只能用英文逗号分隔,不能有空格,否则采集器无法正常启用
Dataway 地址和 Token 必须填写正确,否则数据无法上报到观测云,Token 可在观测云工作空间的「管理」-「基本设置」中获取
确保集群节点能正常访问你的 Dataway 地址,无网络策略或防火墙拦截
kubectl -n datakit rollout status daemonset/datakitkubectl -n datakit get pods
预期结果:所有 DataKit Pod 状态为 Running,且分布在各节点。
第二步:部署并配置 DataKit Operator
执行官方清单部署 Operator 组件(负责 Pod 探针注入):
kubectl apply -f https://static.guance.com/datakit-operator/datakit-operator.yaml
为避免全量注入,通过 ConfigMap 配置命名空间 + 标签双维度的精准注入规则,本案例仅对 python-apm-demo 命名空间(namespace)、带有 guance-auto-inject=python 标签(label)的 Pod 生效。
创建 datakit-operator-configmap.yaml 文件:
kubectl apply -f datakit-operator.yaml# 重启 Operator 使配置生效kubectl -n datakit rollout restart deployment/datakit-operatorkubectl -n datakit rollout status deployment/datakit-operator
kubectl -n datakit get pods -l app=datakit-operator -o wide
预期结果:datakit-operator Pod 状态为 Running.
kubectl -n python-apm-demo describe pod -l app=server
预期注入特征(关键验证点):
Env 中包含 DD_AGENT_HOST、DD_TRACE_AGENT_PORT 等环境变量
本文基于观测云生态完成了 Python 容器应用的探针自动注入与全链路采集,核心价值在于:
只要确保 DataKit 的 ddtrace 插件启用、Operator 注入规则配置正确,即可快速实现 Python 应用的全链路可观测性,为问题排查、性能优化提供数据支撑。
点击 阅读原文了解观测云