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 数据来源
  • satellite
  • ebpf
regionId 区域名称 cn-hangzhou
clusterId 集群名称 cf055ad09b7714beea8f9e7271e61xxxx
ip 主机IP(K8s环境下是Pod IP) 127.0.0.1
serviceName 应用名称 arms-console-hz
spanName 接口名称 /hello
statusCode 调用状态
  • 0表示UNSET。
  • 1表示OK。
  • 2表示ERROR。
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语句
  • SELECT * FROM
  • wuser_table
dbName String 可选 数据库名称
  • customers
  • main
dbTableName String 可选 表名称 user_info
dbOperation String 可选 动作类型
  • SELECT
  • HMSET

Messaging

指标名称 单位 描述
msg_producer_duration_ms_count 次数 消息生产者调用次数
msg_producer_duration_ms_sum 毫秒 消息生产者调用总耗时
msg_consumer_duration_ms_count 次数 消息消费者调用次数
msg_consumer_duration_ms_sum 毫秒 消息消费者调用总耗时
专属标签 类型 推荐 描述 示例
msgTopic String 必选 Span名称
  • MyQueue
  • MyTopic
msgProtocol String 可选 协议
  • AMQP
  • MQTT
msgProtocolVersion String 可选 协议版本 0.9.1

Other

不属于上述类型的指标统一归类到Other类型。

指标名称 单位 描述
other_type_duration_ms_count 次数 其他类型调用次数
other_type_duration_ms_sum 毫秒 其他类型调用总耗时

自定义标签

ARMS OpenTelemetry Collector支持在聚合指标中添加自定义标签。

  1. 在Trace数据的Attributes中添加KV键值对,例如<userType: xxx>
  2. ARMS控制台应用监控 > 全局配置 > OT Collector配置页签,选择对应地域和集群,在自定义标签区域添加自定义标签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。
您也可以在Grafana的Dashboards > Manage页面中搜索查看默认创建的OpenTelemetry APM Dashboard。Satellite大盘

通过HTTP API获取APM Metrics

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