1 开通APM服务和创建APM应用
创建一个类型为OpenTelemetry、编程语言为python的APM应用,例如名称为dify-apm。
界面会告诉你针对具体一个APM应用,你的python应用如何接入APM服务:
2 重新制作dify容器镜像
在原镜像中执行APM服务界面上提示的命令即可,Dockerfile如下:
FROM swr.cn-south-1.myhuaweicloud.com/migrator/dify-api:0.15.3
RUN pip install opentelemetry-distro
RUN pip install opentelemetry-exporter-otlp
RUN opentelemetry-bootstrap -a install
最终得到一个镜像:
swr.cn-south-1.myhuaweicloud.com/migrator/dify-api:0.15.3-apm
3 修改dify服务的启动命令
dify-api服务的APM微服务名称为:dify-apm.api.prod,最新启动命令:
- command:- opentelemetry-instrument- --traces_exporter- otlp- --service_name- dify-apm.api.prod- --resource_attributes- host.name=host.name- --exporter_otlp_endpoint- http://100.125.11.11:4317- --exporter_otlp_headers- Authentication=**************你的APM服务的TOKEN**************- /app/api/.venv/bin/gunicorn- --bind- 0.0.0.0:5001- --workers- "1"- --worker-class- gevent- --worker-connections- "10"- --timeout- "200"- app:app
dify-worker服务的APM微服务名称为:dify-apm.worker.prod,最新启动命令:
- command:- opentelemetry-instrument- --traces_exporter- otlp- --service_name- dify-apm.worker.prod- --resource_attributes- host.name=host.name- --exporter_otlp_endpoint- http://100.125.11.11:4317- --exporter_otlp_headers- Authentication=**************你的APM服务的TOKEN**************- /app/api/.venv/bin/celery- -A- app.celery- worker- -P- gevent- -c- "1"- --loglevel- INFO- -Q- dataset,mail,ops_trace,app_deletion
4 APM接入效果
dify聊天接口的一个链路trace如下图所示: