ARMS OpenTelemetry Collector支持将OpenTelemetry Trace数据自动预聚合为APM Metrics指标。为了适应生产环境大规模应用场景,ARMS OpenTelemetry Collector在OpenTelemetry Metrics规范的基础上进行了调整与扩展。
基于时间窗口轮转的预聚合统计
ARMS OpenTelemetry Collector预聚合的APM Metrics指标支持时间窗口轮转,每个时间窗口(通常是1分钟)的指标值都是独立的,不受之前窗口统计的影响。这样可以保证在指标发散情况下,内存不会轻易溢出;并且在发生数据延迟、丢失等异常场景下,每个时间窗口内的指标数据都是准确的,更加适合生产环境的大规模应用。
例如:A接口每分钟的调用量是100次,累加计数统计和基于时间窗口轮转的统计结果对比如下所示。
方式\时间 | 1分钟 | 2分钟 | 3分钟 | 4分钟 | 5分钟 | 6分钟 | 7分钟 | 8分钟 |
---|---|---|---|---|---|---|---|---|
累加计数 | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 |
时间窗口轮转 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 |

指标说明
ARMS OpenTelemetry Collector目前支持HTTP、RPC、DB、Messaging等多种指标类型,每种类型都包含通用标签和专属类型标签。
指标查询示例如下图所示。

通用标签
通用标签是指所有指标类型都有且必须包含的字段。
通用标签 | 说明 | 示例 |
---|---|---|
source | 数据来源 |
|
regionId | 区域名称 | cn-hangzhou |
clusterId | 集群名称 | cf055ad09b7714beea8f9e7271e61xxxx |
ip | 主机IP(K8s环境下是Pod IP) | 127.0.0.1 |
serviceName | 应用名称 | arms-console-hz |
spanName | 接口名称 | /hello |
statusCode | 调用状态 |
|
componentType | 组件类型 | mysql、redis、grpc、kafka等。 |
指标类型及专属标签
HTTP
指标名称 | 单位 | 描述 |
---|---|---|
http_server_duration_ms_count | 次数 | HTTP服务端调用次数 |
http_server_duration_ms_sum | 毫秒 | HTTP服务端调用总耗时 |
http_client_duration_ms_count | 次数 | HTTP客户端调用次数 |
http_client_duration_ms_sum | 毫秒 | HTTP客户端调用总耗时 |
专属标签 | 类型 | 推荐 | 描述 | 示例 |
---|---|---|---|---|
httpMethod | String | 可选 | 方法名称 | GET、POST、HEAD |
httpStatusCode | String | 可选 | 响应码 | 1xx、2xx、3xx、4xx、5xx |
RPC
指标名称 | 单位 | 描述 |
---|---|---|
rpc_server_duration_ms_count | 次数 | RPC服务端调用次数 |
rpc_server_duration_ms_sum | 毫秒 | RPC服务端调用总耗时 |
rpc_client_duration_ms_count | 次数 | RPC客户端调用次数 |
rpc_client_duration_ms_sum | 毫秒 | RPC客户端调用总耗时 |
专属标签 | 类型 | 推荐 | 描述 | 示例 |
---|---|---|---|---|
rpcService | String | 可选 | 含包名的接口全称 | myservice.EchoService |
rpcMethod | String | 可选 | 仅含方法名 | exampleMethod |
Database
指标名称 | 单位 | 描述 |
---|---|---|
db_client_duration_ms_count | 次数 | DB客户端调用次数 |
db_client_duration_ms_sum | 毫秒 | DB客户端调用总耗时 |
专属标签 | 类型 | 推荐 | 描述 | 示例 |
---|---|---|---|---|
dbStatement | String | 必选 | SQL语句 |
|
dbName | String | 可选 | 数据库名称 |
|
dbTableName | String | 可选 | 表名称 | user_info |
dbOperation | String | 可选 | 动作类型 |
|
Messaging
指标名称 | 单位 | 描述 |
---|---|---|
msg_producer_duration_ms_count | 次数 | 消息生产者调用次数 |
msg_producer_duration_ms_sum | 毫秒 | 消息生产者调用总耗时 |
msg_consumer_duration_ms_count | 次数 | 消息消费者调用次数 |
msg_consumer_duration_ms_sum | 毫秒 | 消息消费者调用总耗时 |
专属标签 | 类型 | 推荐 | 描述 | 示例 |
---|---|---|---|---|
msgTopic | String | 必选 | Span名称 |
|
msgProtocol | String | 可选 | 协议 |
|
msgProtocolVersion | String | 可选 | 协议版本 | 0.9.1 |
Other
不属于上述类型的指标统一归类到Other类型。
指标名称 | 单位 | 描述 |
---|---|---|
other_type_duration_ms_count | 次数 | 其他类型调用次数 |
other_type_duration_ms_sum | 毫秒 | 其他类型调用总耗时 |
自定义标签
ARMS OpenTelemetry Collector支持在聚合指标中添加自定义标签。
- 在Trace数据的Attributes中添加KV键值对,例如
<userType: xxx>
。 - 在ARMS控制台的 页签,选择对应地域和集群,在自定义标签区域添加自定义标签Key,例如userType,相应的Value将会自动从Trace Attributes中提取。
指标查询
ARMS OpenTelemetry Collector会将聚合后的指标数据自动上报并存储在ARMS Prometheus托管集群,您可以通过Grafana或HTTP API等方式进行查询或展示。
通过Grafana查看APM Metrics
登录共享版Grafana控制台,在Explorer页面选择自动创建的ARMS OpenTelemetry Collector数据源,查看指标数据。
- ARMS OpenTelemetry Collector数据源名称:ot-collector-{regionId}_{userId},例如ot-collector-cn-beijing_1131971649496xxx。
- ARMS OpenTelemetry Collector数据源类型:Prometheus。

通过HTTP API获取APM Metrics
通过HTTP API在自建的Grafana接入ARMS OpenTelemetry Collector上报的APM Metrics,具体使用方式,请参见HTTP API地址使用说明。