对于部署在ACK集群中的Python应用(例如使用Django、Flask、FastAPI框架构建的Web应用或基于LlamaIndex、Langchain等开发的AI、LLM应用),通过安装ack-onepilot组件并调整Dockerfile,即可利用应用实时监控服务 ARMS(Application Real-Time Monitoring Service)实现应用性能监控,包括应用拓扑、链路追踪、接口调用分析、异常检测等功能以及针对大型模型交互过程中的细致跟踪记录。
前提条件
已创建命名空间。具体操作,请参见管理命名空间与配额。本文示例中的命名空间为
arms-demo
。已确保使用的Python运行时为3.8及以上。
ARMS兼容的Python版本为3.8及以上,低于此版本时可能会出现接入问题。
已开通ARMS。
ARMS是一款阿里云应用性能管理(APM)类监控产品,如需了解ARMS应用监控的详细信息,请参见什么是应用实时监控服务ARMS?、什么是应用监控。
步骤一:安装ARMS应用监控接入组件ack-onepilot
旧版应用监控组件arms-pilot已不再维护,您可以安装升级后的ack-onepilot组件用于监控您的应用,ack-onepilot完全兼容arms-pilot,您无需修改应用配置即可无缝接入ack-onepilot。更多信息,请参见如何卸载arms-pilot和安装ack-onepilot。
登录容器服务管理控制台,在左侧导航栏选择集群列表。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,单击组件管理。
在日志与监控区域,定位ack-onepilot组件,单击组件卡片的安装,按照页面指引在对话框配置相关的参数(建议使用默认值),单击确认完成组件的安装。
说明请确保ack-onepilot的版本为3.2.4及以上。ack-onepilot组件默认支持1000个Pod规模,集群Pod每超过1000个,ack-onepilot资源对应的CPU请增加0.5核、内存请增加512MB。
安装完成后,您可以在组件管理页面升级、配置或卸载ack-onepilot组件。
步骤二:授予ARMS资源的访问权限
如需监控ACK集群应用,但ACK集群中不存在
addon.arms.token
,请执行以下操作手动为集群授予ARMS资源的访问权限。如果已经存在addon.arms.token
,则无需执行授权操作。说明当ACK集群中存在
addon.arms.token
时,ARMS能够自动完成免密授权过程。通常情况下,ACK托管集群默认配备了addon.arms.token
。然而,对于一些较早创建的ACK托管集群来说,可能存在缺少addon.arms.token
的情形。检查
addon.arms.token
是否存在。如果
addon.arms.token
存在,无需执行后续授权操作。否则,请执行以下操作手动为集群授予ARMS资源的访问权限。登录容器服务管理控制台,在左侧导航栏选择集群列表。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择集群信息。
在基本信息页签下,单击集群资源区域内的Worker RAM角色右侧的链接。
在角色页面的权限管理页签上,单击新增授权。
选择权限为AliyunARMSFullAccess,然后单击确定。
如需监控对接了ECI的ACK托管集群应用,请在访问控制快速授权页面完成授权,然后重启ack-onepilot组件下的所有Pod。
步骤三:集成ARMS Python探针至Dockerfile
修改Dockerfile,在Python应用程序中集成ARMS Python探针,以启动Python应用。
从PyPI仓库下载探针安装器。
pip3 install aliyun-bootstrap
使用aliyun-bootstrap安装探针。
# 对应的阿里云账号的RegionID ARMS_REGION_ID=xxx aliyun-bootstrap -a install
说明如需要指定安装的Python探针版本,可通过以下命令安装指定版本的探针:
# ${version}替换为实际的版本号 aliyun-bootstrap -a install -v ${version}
请参考探针(Python Agent)版本说明查看所有已发布的Python探针版本。
通过ARMS Python探针启动应用。
aliyun-instrument python app.py
构建镜像。
完整的Dockerfile示例如下:
步骤四:启用Python应用的ARMS应用监控
登录容器服务管理控制台,在左侧导航栏选择集群列表。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在无状态页面,单击目标应用右侧
。在YAML文件中将以下
labels
添加到spec.template.metadata层级下。labels: aliyun.com/app-language: python # Python应用必填,标明此应用是Python应用。 armsPilotAutoEnable: 'on' armsPilotCreateAppName: "deployment-name" # 应用在ARMS中的展示名称
重要如您安装的ack-onepilot组件版本高于5.0.0,在执行本步骤时ack-onepilot组件将会自动为您执行Python探针包的下载与注入动作,您无需手动修改Dockerfile的启动命令即可获得完全无侵入的Python应用监控接入体验。如果您不希望使用该能力,可以通过以下label来关闭Python的完全无侵入注入能力:
labels: aliyun.com/app-language: python # Python应用必填,标明此应用是Python应用。 armsPilotAutoEnable: 'on' armsPilotCreateAppName: "deployment-name" # 应用在ARMS中的展示名称 armsAutoInstrumentationEnable: "off" # 关闭Python应用的完全无侵入注入能力
创建无状态(Deployment)应用并开启ARMS应用监控的完整YAML示例模板如下:
步骤五:查看监控详情
(可选)步骤六:释放资源
您不再需要使用ARMS监控您的Python应用时,可以通过卸载ARMS Python探针停止监控。具体操作,请参见卸载Python探针。