在AOM平台查看在线服务性能指标
场景描述
ModelArts推理服务相关的所有监控数据底层全量上报到 AOM;ModelArts控制台上只展示常用子集,精细运维、告警、自定义大盘必须进AOM。
AOM是云上应用的一站式立体化运维管理平台,实时监控应用及云资源,可以对ModelArts在线服务和模型负载运行状态进行日常监控。您可以通过AOM管理控制台,直观地查看ModelArts在线服务和模型负载的各项监控指标。由于监控数据的获取与传输会花费一定时间,因此,AOM显示的是当前时间5~10分钟前的状态。如果您的在线服务刚创建完成,请等待5~10分钟后查看监控数据。
服务访问统计的指标介绍
为使用户更好地掌握自己的ModelArts在线服务和对应模型负载的运行状态,云服务平台提供了应用运维管理 AOM。您可以使用该服务监控您的ModelArts在线服务和对应模型负载,执行自动实时监控、告警和通知操作,帮助您更好地了解服务和模型的各项性能指标。
| 分类 | 名称 | 指标 | 指标含义 | 单位 | 取值范围 | 采集周期 | 指标Label |
|---|---|---|---|---|---|---|---|
| 请求数 | 服务请求数 | infer_service_request_total | 该指标用于统计在线服务的接口在一个采集周期内的请求次数。 | 次 | ≥0 | 30s | 服务接口指标Label |
| 实时连接数 | 连接数 | infer_service_request_connect_count | 该指标用于统计在线服务在指标采集时刻的实时连接数量。 | 次 | ≥0 | 30s | 服务指标Label |
| 请求QPS | 服务请求QPS | infer_service_request_total | 该指标用于统计在线服务在指标采集时刻的实时请求QPS。 | 次/s | ≥0 | 30s | 服务指标Label |
| token指标 | 在线服务token产生数量 | infer_service_token_count | 该指标用于统计在线服务一个统计周期内token的产生数量。 | 个 | ≥0 | 30s | 服务指标Label |
| 首token的平均时延 | infer_service_first_token_avg_cost | 该指标用于统计一个周期内首token的平均时延(TTFT) | ms | ≥0 | 30s | 服务指标Label | |
| 首token的最小时延 | infer_service_first_token_min_cost | 该指标用于统计一个周期内首token的最小时延 | ms | ≥0 | 30s | 服务指标Label | |
| 首token的最大时延 | infer_service_first_token_max_cost | 该指标用于统计一个周期内首token的最大时延 | ms | ≥0 | 30s | 服务指标Label | |
| 每个token的平均输出时延 | infer_service_per_token_avg_cost | 该指标用于统计一个周期内每个token的平均输出时延(不含首token,TPOT) | ms | ≥0 | 30s | 服务指标Label | |
| 每个token的最大输出时延 | infer_service_per_token_max_cost | 该指标用于统计一个周期内每个token的最大输出时延(不含首token,TPOT) | ms | ≥0 | 30s | 服务指标Label | |
| 每个token的最小输出时延 | infer_service_per_token_min_cost | 该指标用于统计一个周期内每个token的最小输出时延(不含首token,TPOT) | ms | ≥0 | 30s | 服务指标Label | |
| token的总耗时的平均值 | infer_service_token_latency_avg_cost | 该指标用于统计一个周期内输出token的总耗时的平均值 | ms | ≥0 | 30s | 服务指标Label | |
| token的总耗时的最小值 | infer_service_token_latency_min_cost | 该指标用于统计一个周期内输出token的总耗时的最小值 | ms | ≥0 | 30s | 服务指标Label | |
| token的总耗时的最大值 | infer_service_token_latency_max_cost | 该指标用于统计一个周期内输出token的总耗时的最大值 | ms | ≥0 | 30s | 服务指标Label | |
| 服务时延指标 | 在线服务请求的时延信息 | infer_service_request_cost | 该指标用于统计请求的时延信息,可用于计算TPxx和平均时延,其中平均时延计算方式为:infer_service_request_cost_sum/infer_service_request_cost_count,TPxx时延计算方式参考普罗语句,比如TP90为:histogram_quantile(0.90, avg(rate(infer_service_request_cost_bucket{service_id="6d26f238-52b0-4184-8b50-d621a0c80eb4"}[1m:30s]))by(le)) | ms | ≥0 | 30s | 服务指标Label |
| 首Token时延 | 首Token时延 | infer_service_first_token_cost | 该指标用于统计一个周期内首Token的时延信息,可用于计算平均时延和TPxx,其中平均时延计算方式为:sum(increase(infer_service_first_token_cost_sum{service_id="{service_id}"}[59999ms]))by(service_id)/sum(increase(infer_service_first_token_cost_count{service_id="{service_id}"}[59999ms]))by(service_id),TPxx计算方式参考普罗语句:histogram_quantile(XX%, avg(rate(infer_service_first_token_cost_bucket{service_id="{service_id}"}[1m:30s]))by(le)) | ms | ≥0 | 30s | 服务指标维度 |
| 非首Token时延 | 每个输出Token平均时延 | infer_service_per_token_cost | 该指标用于统计一个周期内每个输出Token的时延信息,可用于计算平均时延和TPxx,其中平均时延计算方式为:sum(increase(infer_service_per_token_cost_sum{service_id="{service_id}"}[59999ms]))by(service_id)/sum(increase(infer_service_per_token_cost_count{service_id="{service_id}"}[59999ms]))by(service_id),TPxx计算方式参考普罗语句:histogram_quantile(XX%, avg(rate(infer_service_per_token_cost_bucket{service_id="{service_id}"}[1m:30s]))by(le)) | ms | ≥0 | 30s | 服务指标维度 |
| 输入token数 | 在线服务请求的输入token数 | infer_service_input_token_quantity | 该指标用于统计请求的输入token数,可用于计算输入token数的平均值、TP50值、TP90值、TP99值,其中输入token数平均值计算方式为:infer_service_input_token_quantity_sum/infer_service_input_token_quantity_count,TPxx输入token数计算方式参考普罗语句,比如TP90为:histogram_quantile(0.90, avg(rate(infer_service_input_token_quantity_bucket{service_id="6d26f238-52b0-4184-8b50-d621a0c80eb4"}[1m:30s]))by(le)) | ms | ≥0 | 30s | 服务指标Label |
| 输出token数 | 在线服务请求的输出token数 | infer_service_output_token_quantity | 该指标用于统计请求的输出token数,可用于计算输出token数的平均值、TP50值、TP90值、TP99值,其中输出token数平均值计算方式为:infer_service_output_token_quantity_sum/infer_service_output_token_quantity_count,TPxx输出token数计算方式参考普罗语句,比如TP90为:histogram_quantile(0.90, avg(rate(infer_service_output_token_quantity_bucket{service_id="6d26f238-52b0-4184-8b50-d621a0c80eb4"}[1m:30s]))by(le)) | ms | ≥0 | 30s | 服务指标Label |
| CPU使用核数 | 在线服务当前CPU使用核数 | ma_container_cpu_used_core | 该指标用于统计在线服务在指标采集时刻的实时CPU使用核数。 | Core | ≥0 | 30s | 服务指标Label |
| CPU使用率 | 在线服务当前CPU使用率 | ma_container_cpu_util | 该指标用于统计在线服务在指标采集时刻的实时CPU使用率。 | % | 0~100% | 30s | 服务指标Label |
| 内存使用量 | 在线服务当前内存使用量 | ma_container_memory_used_megabytes | 该指标用于统计在线服务在指标采集时刻的实时内存使用量。 | MB | ≥0 | 30s | 服务指标Label |
| 内存使用率 | 在线服务当前内存使用率 | ma_container_memory_util | 该指标用于统计在线服务在指标采集时刻的实时内存使用率。 | % | 0~100% | 30s | 服务指标Label |
| NPU使用率 | 在线服务当前NPU使用率 | ma_container_npu_util | 该指标用于统计在线服务在指标采集时刻的实时NPU使用率。 | % | 0~100% | 30s | 服务指标Label |
| NPU显存使用量 | 在线服务当前NPU显存使用量 | ma_container_npu_memory_used_megabytes | 该指标用于统计在线服务在指标采集时刻的实时NPU显存使用量。 | MB | ≥0 | 30s | 服务指标Label |
| NPU显存使用率 | 在线服务当前NPU显存使用率 | ma_container_npu_memory_util | 该指标用于统计在线服务在指标采集时刻的实时NPU显存使用率。 | % | 0~100% | 30s | 服务指标Label |
| GPU使用率 | 在线服务当前GPU使用率 | ma_container_gpu_util | 该指标用于统计在线服务在指标采集时刻的实时GPU使用率。 | % | 0~100% | 30s | 服务指标Label |
| GPU显存使用量 | 在线服务当前GPU显存使用量 | ma_container_gpu_mem_used_megabytes | 该指标用于统计在线服务在指标采集时刻的实时GPU显存使用量。 | MB | ≥0 | 30s | 服务指标Label |
| GPU显存使用率 | 在线服务当前GPU显存使用率 | ma_container_gpu_mem_util | 该指标用于统计在线服务在指标采集时刻的实时GPU显存使用率。 | % | 0~100% | 30s | 服务指标Label |
| 网络下行流速 | 在线服务当前网络下行流速 | ma_container_network_receive_bytes | 该指标用于统计在线服务在指标采集时刻的实时网络下行流速。 | Byte/s | ≥0 | 30s | 服务指标Label |
| 网络上行流速 | 在线服务当前网络下行流速 | ma_container_network_transmit_bytes | 该指标用于统计在线服务在指标采集时刻的实时网络上行流速。 | Byte/s | ≥0 | 30s | 服务指标Label |
| 首token的总输出时延 | 统计一个周期内服务首token的总输出时延 | infer_service_first_token_cost_sum | 该指标用于统计在线服务在一个周期内服务首token的总输出时延 | ms | ≥0 | 30s | 服务指标Label |
| 服务输入的总token数 | 统计一个周期内服务输入的总token数 | infer_service_input_token_quantity_sum | 该指标用于统计在线服务在一个周期内服务输入的总token数 | ms | ≥0 | 30s | 服务指标Label |
| 服务输出的总token数 | 统计一个周期内服务输出的总token数 | infer_service_output_token_quantity_sum | 该指标用于统计在线服务在一个周期内服务输出的总token数 | ms | ≥0 | 30s | 服务指标Label |
| 非首token的总输出时延 | 统计一个周期内非首token的总输出时延 | infer_service_per_token_cost_sum | 该指标用于统计在线服务在一个周期内非首token的总输出时延 | ms | ≥0 | 30s | 服务指标Label |
| 服务请求的总时延 | 统计一个周期内的服务请求的总时延 | infer_service_request_cost_sum | 该指标用于统计在线服务在一个周期内的服务请求的总时延 | ms | ≥0 | 30s | 服务指标Label |
| 首token时延趋势 | 统计服务的首token时延趋势 | infer_service_first_token_cost_bucket | 该指标用于统计服务的首token时延趋势 | ms | ≥0 | 30s | 服务指标Label |
| 服务的输入token数 | 统计服务的输入token数 | infer_service_input_token_quantity_bucket | 该指标用于统计服务的输入token数 | ms | ≥0 | 30s | 服务指标Label |
| 服务的输出token数 | 统计服务的输出token数 | infer_service_output_token_quantity_bucket | 该指标用于统计服务的输出token数 | ms | ≥0 | 30s | 服务指标Label |
| 服务的非首token时延趋势 | 统计服务的非首token时延趋势 | infer_service_per_token_cost_bucket | 该指标用于统计服务的非首token时延趋势 | ms | ≥0 | 30s | 服务指标Label |
| 服务的请求时延趋势 | 统计服务的请求时延趋势 | infer_service_request_cost_bucket | 该指标用于统计服务的请求时延趋势 | ms | ≥0 | 30s | 服务指标Label |
Label相关指标介绍
| Label名字 | Label描述 |
|---|---|
| service_id | 推理服务id,比如:9f322d5a-b1d2-4370-94df-5a87de27d36e。 |
| group_id | 推理服务部署id。 |
| project_id | 用户所属的账号的project id。 |
| code | 请求返回码,包括:2xx,4xx,5xx。 |
| method | 推理请求方法。 |
| path | 推理请求路径。 |
| source | 请求流经dispatcher组件的容器pod id。 |
| namespace | 指标名,与表1中的指标列对应。 |
| instance_name | 推理服务实例名字。 |
| service_name | 推理服务名字。 |
| Label名字 | Label描述 |
|---|---|
| service_id | 推理服务id,比如:9f322d5a-b1d2-4370-94df-5a87de27d36e。 |
| group_id | 推理服务部署id。 |
| project_id | 用户所属的账号的project id。 |
| source | 请求流经dispatcher组件的容器pod id。 |
| namespace | 指标名,与表1中的指标列对应。 |
AOM上查看监控指标
前提条件:
- ModelArts在线服务正常运行。
- 在线服务已正常运行一段时间(约10分钟)。
- 对于新创建的在线服务,需要等待一段时间,才能查看上报的监控数据和监控视图。
- 故障、删除状态的在线服务,无法在云监控中查看其监控指标。当在线服务再次启动或恢复后,即可正常查看。
操作步骤:
- 在“服务列表”中选择,进入AOM管理控制台。
- 左侧导航栏选择“指标浏览”页面。选择“指标源”为默认来源“Prometheus_AOM_Default”实例,并根据需要设置统计方式和统计周期。 图1 设置指标源
- 在指标浏览页面下方,通过“全量指标”或“按普罗语句添加方式”选择一个或多个关注的指标。
此处以“全量指标”方式获取在线服务作业指标为例,如下图所示。
- 指标:输入具体的指标,例如:ma_container_cpu_util。
- 条件:输入条件(instance_name)和维度值(在线服务作业ID,在ModelArts控制台的在线服务详情页中获取),页面会自动显示当前在线服务作业指定的指标监控曲线。 图2 设置在线服务作业指标
“按普罗语句添加”方式请参考文档应用运维管理 AOM> 用户指南(2.0)> 指标浏览。
自定义监控采集指标
功能介绍:
当ModelArts系统默认指标不满足业务需求时,在部署在线推理服务的部署配置阶段,可以配置自定义指标(Prometheus 格式),由 ModelArts 拉取并上报 AOM。
约束与限制
- ModelArts以10秒/次的频率调用自定义指标配置中提供的http接口获取指标数据。
- 自定义指标配置中提供http接口返回的指标数据文本不能大于32KB。
配置入口:
登录ModelArts管理控制台,在左侧菜单栏中选择“模型推理>在线推理”,进入在线推理管理页面。部署在线服务时,在部署配置阶段的“高级配置 ”中勾选“自定义监控采集指标”。在线服务部署配置的具体操作请参见推理在线服务单机部署。
勾选后,协议推荐HTTPS(可选HTTP),填写指标采集端口信息8000或9090,接口路径固定推荐metrics,如所示。
自定义指标将上报至应用运维管理(AOM)服务的Prometheus实例中,后续可前往AOM服务进行指标查询,具体查询方式参见AOM上查看监控指标。
自定义指标数据格式
自定义指标数据的格式必须是符合open metrics规范的文本,即每个指标的格式应为:
<指标名称>{<标签名称>=<标签值>,...} <采样值> [毫秒时戳] 举例如下(#开头为注释,非必需):
# HELP http_requests_total The total number of HTTP requests.
# TYPE http_requests_total gauge
html_http_requests_total{method="post",code="200"} 1656 1686660980680
html_http_requests_total{method="post",code="400"} 2 1686660980681 AOM上配置告警
配置告警可自动感知服务资源、请求推理等异常并及时推送提醒,无需人工不间断巡检,既能快速处置故障保障业务稳定运行,也便于后续优化运维策略。
告警配置入口1:
- 登录ModelArts管理控制台,在左侧菜单栏中选择“模型推理 > 在线推理”,进入在线推理管理页面。
- 在服务列表中单击目标在线服务名称,进入在线服务的详情页面,切换至“监控”页签,页面右上角单击“告警规则”,跳转到AOM控制台配置告警规则和告警通知,具体操作参考AOM文档。 图4 告警规则
告警配置入口2: