跳到主要内容

Python 数据采集

前置条件
  1. 安装 light-agent(登录 Lighthouse 平台后点击「数据采集」菜单查看安装步骤,或点此查看

快速开始

  1. 运行以下命令以安装相应的软件包:
pip install opentelemetry-distro opentelemetry-exporter-otlp
pip install flask requests
pip install opentelemetry-exporter-otlp-proto-grpc
opentelemetry-bootstrap -a install
提示

opentelemetry-distro 软件包会安装 API、SDK 和 opentelemetry-bootstrap 和 opentelemetry-instrument 工具 。

  1. 然后启动你的应用:
opentelemetry-instrument \
--service_name your-service-name \
--traces_exporter otlp,console \
--logs_exporter otlp,console \
--metrics_exporter none \
--exporter_otlp_protocol grpc \
--exporter_otlp_endpoint http://0.0.0.0:54317 \
python mypython.py

提示
  • mypython.py 替换为实际的应用程序 python 文件
  • http://0.0.0.0:54317 替换为实际的数据上报地址
  • your-service-name 替换为实际的服务名称

配置

使用 Kubernetes Operator 部署 OTel 探针

前置条件

前置条件
  1. 需要安装好 light-agent,具体安装步骤查看 Lighthouse 平台【数据采集】
  2. 区分 light-agent 是否安装在 Kubernetes 集群中
  • 如果 light-agent 安装在 Kubernetes 集群中,在安装 light-agent 的时候,已经将镜像导入到 Kubernetes 可以访问的仓库
  • 如果 light-agent 安装在 Kubernetes 集群外,需要将 kube-state-metrics 的镜像导入到 Kubernetes 可以访问的仓库。具体步骤查看 Lighthouse 平台【数据采集】-> 【Kubernetes】-> 推送镜像到 Kubernetes 的镜像仓库
  1. 需要安装好 k8s-operator ,具体安装步骤查看 Kubenetes 安装 k8s-operator

1. 添加 Python 的 Automatic Instrumentation

kubectl apply -f automatic-instrumentation-python.yaml
automatic-instrumentation-python.yaml
apiVersion: opentelemetry.io/v1alpha1
kind: Instrumentation
metadata:
name: auto-instr
namespace: default
spec:
exporter:
endpoint: http://light-agent.light-agent.svc.cluster.local:54318
propagators:
- tracecontext
- baggage
- b3
sampler:
type: parentbased_traceidratio
argument: "1"
python:
env:
- name: OTEL_DOTNET_AUTO_TRACES_GRPCNETCLIENT_INSTRUMENTATION_ENABLED
value: false
- name: OTEL_DOTNET_AUTO_METRICS_PROCESS_INSTRUMENTATION_ENABLED
value: false

2. 启动 python Demo

kubectl apply  -f python-demo.yaml
python-demo.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: python-app
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: python-app
template:
metadata:
labels:
app: python-app
annotations:
instrumentation.opentelemetry.io/inject-python: "true" # 关键配置 是否开启自动检测
spec:
containers:
- name: python-app
image: your-python-app:latest # 根据实际情况修改
imagePullPolicy: IfNotPresent
env:
- name: OTEL_SERVICE_NAME
value: "python-app" # 根据实际情况修改
- name: PYTHONPATH
value: "/app" # Python 应用的路径,根据实际情况修改
# Python 特有的环境变量配置
- name: OTEL_PYTHON_DISABLED_INSTRUMENTATIONS
value: "urllib3" # 可选:禁用特定的自动插桩