
# 在AOM平台查看在线服务性能指标
#### 场景描述
ModelArts推理服务相关的所有监控数据底层全量上报到 AOM；ModelArts控制台上只展示常用子集，精细运维、告警、自定义大盘必须进AOM。
AOM是云上应用的一站式立体化运维管理平台，实时监控应用及云资源，可以对ModelArts在线服务和模型负载运行状态进行日常监控。您可以通过AOM管理控制台，直观地查看ModelArts在线服务和模型负载的各项监控指标。由于监控数据的获取与传输会花费一定时间，因此，AOM显示的是当前时间5～10分钟前的状态。如果您的在线服务刚创建完成，请等待5～10分钟后查看监控数据。
#### 推理服务响应格式对token相关指标影响
推理服务响应需遵从OpenAI标准格式，具体要求为：
响应必须为流式或非流式，且响应体须包含usage.prompt_tokens、usage.completion_tokens、usage.total_tokens字段（流式响应需在最后一个data chunk中携带）。
推理服务响应若不满足以上要求，Token相关指标将异常：
- 流式场景下，输入Token数和输出Token数均将显示为0，首Token时延仍可显示，每Token时延基于chunk数计算故存在偏差；
- 非流式场景下，所有Token相关指标均无法显示。
 
#### 服务访问统计的指标介绍
为使用户更好地掌握自己的ModelArts在线服务和对应模型负载的运行状态，云服务平台提供了应用运维管理 AOM。您可以使用该服务监控您的ModelArts在线服务和对应模型负载，执行自动实时监控、告警和通知操作，帮助您更好地了解服务和模型的各项性能指标。
 表1服务访问统计的指标（直方图类型） 
| 分类                                                            | 名称               | 原子指标                                       | 指标含义                                                                                                                                                                                                                                                                                                                                                                                             | 单位                                                       | **上限（K）** | 取值范围 | 采集周期 | 指标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\]))by(le))                                                                                                                | ms  | 3.7K      | ≥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\]))by(le)) | ms                                                       | 110K      | ≥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\]))by(le))    | ms                                                       | 110K      | ≥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\]))by(le))                                                  | 个    | 110K      | ≥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\]))by(le))                                               | 个  | 110K      | ≥0   | 30s  | 服务指标Label |
| 首token时延趋势                                                    | 统计服务的首token时延趋势  | infer_service_first_token_cost_bucket      | 该指标用于统计服务的首token时延趋势                                                                                                                                                                                                                                                                                                                                                                             | ms                                                       | 110K      | ≥0   | 30s  | 服务指标Label |
| 服务的输入token数                                                   | 统计服务的输入token数    | infer_service_input_token_quantity_bucket  | 该指标用于统计服务的输入token数                                                                                                                                                                                                                                                                                                                                                                               | 个                                                        | 110K      | ≥0   | 30s  | 服务指标Label |
| 服务的输出token数                                                   | 统计服务的输出token数    | infer_service_output_token_quantity_bucket | 该指标用于统计服务的输出token数                                                                                                                                                                                                                                                                                                                                                                               | 个                                                        | 110K      | ≥0   | 30s  | 服务指标Label |
| 服务的非首token时延趋势                                                | 统计服务的非首token时延趋势 | infer_service_per_token_cost_bucket        | 该指标用于统计服务的非首token时延趋势                                                                                                                                                                                                                                                                                                                                                                            | ms                                                       | 110K      | ≥0   | 30s  | 服务指标Label |
| 服务的请求时延趋势                                                     | 统计服务的请求时延趋势      | infer_service_request_cost_bucket          | 该指标用于统计服务的请求时延趋势                                                                                                                                                                                                                                                                                                                                                                                 | ms                                                       | 3.7K      | ≥0   | 30s  | 服务指标Label |
   
表2服务访问统计的指标（仪表盘类型） 
| 分类                                                           | 名称                    | 原子指标                                    | 指标含义                                                                                                                                                                                                                                      | 单位     | **上限（K）**                                                         | 取值范围   | 采集周期 | 指标Label     |
|:---|:---|:---|:---|:---|:---|:---|:---|:---|
| 请求数     | 服务请求数                 | infer_service_request_total             | 该指标用于统计在线服务的接口在一个采集周期内的请求次数。                                                                                                                                                                                                              | 次      | 无上限（Gauge）  | ≥0     | 30s  | 服务接口指标Label |
| 实时连接数                                                        | 连接数                   | infer_service_request_connect_count     | 该指标用于统计在线服务在指标采集时刻的实时连接数量。                                                                                                                                                                                                                | 次      | 100K（默认配置上限10K，理论上限100K                                           | ≥0     | 30s  | 服务指标Label   |
| 请求QPS                                                        | 服务请求QPS               | infer_service_request_total             | 该指标用于统计单位时间内服务被调用的请求速率，即每秒的请求数。 请求QPS=请求数/60。 说明： 请求数和请求QPS使用的是同一个原子指标infer_service_request_total | 次/s    | 管理面下发服务设置                                                         | ≥0     | 30s  | 服务指标Label   |
| CPU使用核数                                                      | 在线服务当前CPU使用核数         | ma_container_cpu_used_core              | 该指标用于统计在线服务在指标采集时刻的实时CPU使用核数，即容器实际占用的CPU核数量。                                                                                                                                                                                              | Core   | 具体看业务申请机器规格上限                                                     | ≥0     | 30s  | 服务指标Label   |
| CPU使用率                                                       | 在线服务当前CPU使用率          | ma_container_cpu_util                   | 该指标用于统计在线服务在指标采集时刻的实时CPU使用率。                                                                                                                                                                                                              | %      | 100                                                               | 0～100% | 30s  | 服务指标Label   |
| 内存使用量                                                        | 在线服务当前内存使用量           | ma_container_memory_used_megabytes      | 该指标用于统计在线服务在指标采集时刻的实时内存使用量。                                                                                                                                                                                                               | MB     | 具体看业务申请机器规格上限                                                     | ≥0     | 30s  | 服务指标Label   |
| 内存使用率                                                        | 在线服务当前内存使用率           | ma_container_memory_util                | 该指标用于统计在线服务在指标采集时刻的实时内存使用率。                                                                                                                                                                                                               | %      | 100                                                               | 0～100% | 30s  | 服务指标Label   |
| NPU使用率                                                       | 在线服务当前NPU使用率          | ma_container_npu_util                   | 该指标用于统计在线服务在指标采集时刻的实时NPU使用率。                                                                                                                                                                                                              | %      | 100                                                               | 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显存使用率。                                                                                                                                                                                                            | %      | 100                                                               | 0～100% | 30s  | 服务指标Label   |
| GPU使用率                                                       | 在线服务当前GPU使用率          | ma_container_gpu_util                   | 该指标用于统计在线服务在指标采集时刻的实时GPU使用率。                                                                                                                                                                                                              | %      | 100                                                               | 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显存使用率。                                                                                                                                                                                                            | %      | 100                                                               | 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_token_count               | 该指标用于统计在线服务一个统计周期内token的产生数量。                                                                                                                                                                                                             | 个      | 无上限（Gauge）                                                        | ≥0     | 30s  | 服务指标Label   |
| Token指标  | 首token的平均时延           | infer_service_first_token_avg_cost      | 该指标用于统计一个周期内首token的平均时延(TTFT)                                                                                                                                                                                                             | ms     | 无上限（Gauge）                                                        | ≥0     | 30s  | 服务指标Label   |
| Token指标  | 首token的最小时延           | infer_service_first_token_min_cost      | 该指标用于统计一个周期内首token的最小时延                                                                                                                                                                                                                   | ms     | 无上限（Gauge）                                                        | ≥0     | 30s  | 服务指标Label   |
| Token指标  | 首token的最大时延           | infer_service_first_token_max_cost      | 该指标用于统计一个周期内首token的最大时延                                                                                                                                                                                                                   | ms     | 无上限（Gauge）                                                        | ≥0     | 30s  | 服务指标Label   |
| Token指标  | 每个token的平均输出时延        | infer_service_per_token_avg_cost        | 该指标用于统计一个周期内每个token的平均输出时延（不含首token，TPOT）                                                                                                                                                                                                 | ms     | 无上限（Gauge）                                                        | ≥0     | 30s  | 服务指标Label   |
| Token指标  | 每个token的最大输出时延        | infer_service_per_token_max_cost        | 该指标用于统计一个周期内每个token的最大输出时延（不含首token,TPOT）                                                                                                                                                                                                 | ms     | 无上限（Gauge）                                                        | ≥0     | 30s  | 服务指标Label   |
| Token指标  | 每个token的最小输出时延        | infer_service_per_token_min_cost        | 该指标用于统计一个周期内每个token的最小输出时延（不含首token,TPOT）                                                                                                                                                                                                 | ms     | 无上限（Gauge）                                                        | ≥0     | 30s  | 服务指标Label   |
| Token指标  | token的总耗时的平均值         | infer_service_token_latency_avg_cost    | 该指标用于统计一个周期内输出token的总耗时的平均值                                                                                                                                                                                                               | ms     | 无上限（Gauge）                                                        | ≥0     | 30s  | 服务指标Label   |
| Token指标  | token的总耗时的最小值         | infer_service_token_latency_min_cost    | 该指标用于统计一个周期内输出token的总耗时的最小值                                                                                                                                                                                                               | ms     | 无上限（Gauge）                                                        | ≥0     | 30s  | 服务指标Label   |
| Token指标  | token的总耗时的最大值         | infer_service_token_latency_max_cost    | 该指标用于统计一个周期内输出token的总耗时的最大值                                                                                                                                                                                                               | ms     | 无上限（Gauge）                                                        | ≥0     | 30s  | 服务指标Label   |
| 首token的总输出时延                                                 | 统计一个周期内服务首token的总输出时延 | infer_service_first_token_cost_sum      | 该指标用于统计在线服务在一个周期内服务首token的总输出时延                                                                                                                                                                                                           | ms     | 无上限（Gauge）                                                        | ≥0     | 30s  | 服务指标Label   |
| 服务输入的总token数                                                 | 统计一个周期内服务输入的总token数   | infer_service_input_token_quantity_sum  | 该指标用于统计在线服务在一个周期内服务输入的总token数                                                                                                                                                                                                             | 个      | 无上限（Gauge）                                                        | ≥0     | 30s  | 服务指标Label   |
| 服务输出的总token数                                                 | 统计一个周期内服务输出的总token数   | infer_service_output_token_quantity_sum | 该指标用于统计在线服务在一个周期内服务输出的总token数                                                                                                                                                                                                             | 个      | 无上限（Gauge）                                                        | ≥0     | 30s  | 服务指标Label   |
| 非首token的总输出时延                                                | 统计一个周期内非首token的总输出时延  | infer_service_per_token_cost_sum        | 该指标用于统计在线服务在一个周期内非首token的总输出时延                                                                                                                                                                                                            | ms     | 无上限（Gauge）                                                        | ≥0     | 30s  | 服务指标Label   |
| 服务请求的总时延                                                     | 统计一个周期内的服务请求的总时延      | infer_service_request_cost_sum          | 该指标用于统计在线服务在一个周期内的服务请求的总时延                                                                                                                                                                                                                | ms     | 无上限（Gauge）                                                        | ≥0     | 30s  | 服务指标Label   |
   
#### Label相关指标介绍
表3服务接口指标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        | 请求流经推理组件的容器pod id。                                                    |
| namespace     | 指标名，与[表1]中的指标列对应。 |
| instance_name | 推理服务实例名字。                                                             |
| service_name  | 推理服务名字。                                                               |
   
表4服务指标Label 
| Label名字    | Label描述                                                               |
|:---|:---|
| service_id | 推理服务id，比如：9f322d5a-b1d2-4370-94df-5a87de27d36e。                       |
| group_id   | 推理服务部署id。                                                             |
| project_id | 用户所属的账号的project id。                                                   |
| source     | 请求流经推理组件的容器pod id。                                                    |
| namespace  | 指标名，与[表1]中的指标列对应。 |
   
 #### AOM上查看监控指标
**前提条件：**
- ModelArts在线服务正常运行。

- 在线服务已正常运行一段时间（约10分钟）。
- 对于新创建的在线服务，需要等待一段时间，才能查看上报的监控数据和监控视图。

- 故障、删除状态的在线服务，无法在云监控中查看其监控指标。当在线服务再次启动或恢复后，即可正常查看。
**操作步骤：**
1. 在"服务列表"中选择"管理与监管 \> 应用运维管理 AOM"，进入AOM管理控制台。
2. 左侧导航栏选择"指标浏览"页面。选择"指标源"为默认来源"Prometheus_AOM_Default"实例，并根据需要设置统计方式和统计周期。
   图1设置指标源   
   ![](https://support.huaweicloud.com/inference-modelarts/figure/zh-cn_image_0000002543191273.png) 
3. 在指标浏览页面下方，通过"全量指标"或"按普罗语句添加方式"选择一个或多个关注的指标。 此处以"全量指标"方式获取在线服务作业指标为例，如下图所示。
   - 指标：输入具体的指标，例如：ma_container_cpu_util。
   
   - 条件：输入条件（instance_name）和维度值（在线服务作业ID，在ModelArts控制台的在线服务详情页中获取），页面会自动显示当前在线服务作业指定的指标监控曲线。
     图2设置在线服务作业指标   
     ![](https://support.huaweicloud.com/inference-modelarts/figure/zh-cn_image_0000002511711314.png) 
   
   
   "按普罗语句添加"方式请参考文档[应用运维管理 AOM\> 用户指南（2.0）\> 指标浏览](https://support.huaweicloud.com/usermanual-aom2/mon_01_0026.html)。
   
 
 #### 自定义监控采集指标
**功能介绍：**
当ModelArts系统默认指标不满足业务需求时，在部署在线推理服务的部署配置阶段，可以配置自定义指标（Prometheus 格式），由 ModelArts 拉取并上报 AOM。
**约束与限制**
- ModelArts以30秒/次的频率调用自定义指标配置中提供的http接口获取指标数据。
- 自定义指标配置中提供http接口返回的指标数据文本不能大于240KB。
**配置入口：**
登录[ModelArts管理控制台](https://console.huaweicloud.com/modelarts/)，在左侧菜单栏中选择"模型推理\>在线推理"，进入在线推理管理页面。部署在线服务时，在部署配置阶段的"高级配置 "中勾选"自定义监控采集指标"。在线服务部署配置的具体操作请参见[推理在线服务单机部署](https://support.huaweicloud.com/inference-modelarts/inference2.0-modelarts-0004.html)。
勾选后，协议推荐HTTPS（可选HTTP），填写指标采集端口信息8000或9090，接口路径固定推荐metrics，如所示。
图3自定义监控采集指标   
![](https://support.huaweicloud.com/inference-modelarts/figure/zh-cn_image_0000002579597904.png)
自定义指标将上报至应用运维管理(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：
1. 登录[ModelArts管理控制台](https://console.huaweicloud.com/modelarts/)，在左侧菜单栏中选择"模型推理 \> 在线推理"，进入在线推理管理页面。
2. 在服务列表中单击目标在线服务名称，进入在线服务的详情页面，切换至"监控"页签，页面右上角单击"告警规则"，跳转到AOM控制台配置告警规则和告警通知，具体操作参考[AOM文档](https://support.huaweicloud.com/usermanual-aom2/mon_01_0007.html)。
   图4告警规则   
   ![](https://support.huaweicloud.com/inference-modelarts/figure/zh-cn_image_0000002609958295.png)
   
   
   
告警配置入口2：
登录[AOM管理控制台](https://console.huaweicloud.com/aom2/)，在AOM控制台中配置告警规则和告警通知，具体操作参考[AOM文档](https://support.huaweicloud.com/usermanual-aom2/mon_01_0007.html)。
