本文将阐述应用性能监控 APM 固有指标的协议标准,用户可以通过如下两种方式获取应用性能监控 APM 的固有指标:
通过云 API 查询指标,请参见 DescribeGeneralMetricData 接口文档。
将指标同步到腾讯云 Prometheus 监控服务,请参见 Prometheus 数据集成以及 Dashboard 关联展示。
指标数据结构
指标名称
每种指标都有唯一云 API 指标名称和唯一的 Prometheus 指标名称,分别用于云 API 查询以及同步至 Prometheus 这两种获取 APM 固有指标的方式。
指标视图
APM 的固有指标分包含4个类别,通过4个指标视图进行标识。在云 API 查询场景,需要在
ViewName
字段中指定视图名称;在 Prometheus 集成场景,可以忽略视图。视图名称 | 描述 |
service_metric | 统计应用的通用性能表现,例如请求数量、响应时间等。 |
error_metric | 统计链路中的错误数量。 |
sql_metric | 统计应用访问数据库的性能表现,例如 SQL 执行次数、响应时间等。 |
mq_metric | 统计应用访问消息队列的性能表现,例如消息生产的次数、响应时间等。 |
指标维度
每种指标都支持多个维度:在云 API 查询场景,维度用于数据过滤;在 Prometheus 集成场景,维度信息将以 Prometheus 标签(Label)的形式输出到 Prometheus 指标中。
通用维度
云 API 维度名称 | Prometheus 标签名称 | 描述 |
tapm.app.id | tapm_app_id | 云 AppID |
tapm.instance.key | apm_instance | APM 实例 ID |
service.name | apm_service_name | 应用名 |
service.instance | service_instance | 应用实例 |
agent.version | agent_version | 探针版本号 |
service.version | service_version | 应用版本 |
除了通用维度之外,每一种视图下的指标,还支持一系列特有维度。例如 service_metric 视图下的指标支持
span.kind
,代表 Span 类型。详情请参见下文。service_metric 视图
指标
云 API 指标名称 | Prometheus 指标名称 | 类型 | 描述 | 单位 | 桶分布 |
request_count | service_request_count | Gauge | 请求数量 | - | - |
error_request_count | service_error_request_count | Gauge | 错误请求数量 | - | - |
duration_avg | service_duration_avg | Gauge | 平均耗时 | ms | - |
duration_max | service_duration_max | Gauge | 最大耗时 | ms | - |
duration_min | service_duration_min | Gauge | 最小耗时 | ms | - |
slow_request_count | service_slow_request_count | Gauge | 慢调用数量(>2000ms) | - | - |
tolerate_request_count | service_tolerate_request_count | Gauge | 容忍调用数量(500 - 2000ms) | - | - |
duration_p50 | service_duration_p50 | Gauge | 耗时 p50 | ms | - |
duration_p90 | service_duration_p90 | Gauge | 耗时 p90 | ms | - |
duration_p95 | service_duration_p95 | Gauge | 耗时 p95 | ms | - |
duration_p99 | service_duration_p99 | Gauge | 耗时 p99 | ms | - |
range_count_duration | 不支持 | Histogram | 耗时分布 | - | 0,1,5,10,50,100,200,300,400,500,600,700,800,900,1000,1500,2000,3000,4000,5000,7000,10000,15000 |
特有维度
云 API 维度名称 | Prometheus 标签名称 | 描述 |
span.kind | span_kind | Span 类型 |
service.component | service_component | 组件类型 |
peer.service | peer_service | 对端应用名 |
peer.operation | peer_operation | 对端接口名 |
peer.filled | peer_filled | APM 处理后的对端应用名 |
operation | operation | 接口名 |
peer.instance | peer_instance | 对端实例 |
status.message | status_message | 请求状态信息 |
status.code | status_code | 请求状态码 |
status_code_xx | status_code_xx | APM 处理后的状态码 |
error.object | error_object | 错误类型 |
namespace | namespace | 命名空间 |
service.view | service_view | 组件视图(枚举值:"sql"、"mq",如果没有则为空) |
k8s.deployment.name | k8s_deployment_name | Kubernetes 负载名 |
k8s.pod.name | k8s_pod_name | Kubernetes Pod 名 |
k8s.namespace.name | k8s_namespace_name | Kubernetes 命名空间 |
k8s.cluster.id | k8s_cluster_id | TKE 集群 ID |
k8s.region | k8s_region | TKE 集群地域 |
k8s.pod.ip | k8s_pod_ip | Kubernetes Pod IP |
k8s.node.ip | k8s_node_ip | Kubernetes 节点 IP |
cvm.region | cvm_region | CVM 地域 |
cvm.instance.id | cvm_instance_id | CVM 实例 ID |
custom_key_1 | custom_key_1 | 自定义维度1 |
custom_key_2 | custom_key_2 | 自定义维度2 |
custom_key_3 | custom_key_3 | 自定义维度3 |
error_metric 视图
指标
云 API 指标名称 | Prometheus 指标名称 | 类型 | 描述 | 单位 |
error_request_count | error_error_request_count | Gauge | 错误请求数 | - |
last_error_occur_time | error_last_error_occur_time | Gauge | 最后错误发生时间 | ms |
特有维度
云 API 维度名称 | Prometheus 标签名称 | 描述 |
service.component | service_component | 组件类型 |
span.kind | span_kind | Span 类型 |
operation | operation | 接口名 |
error.object | error_object | 错误类型 |
peer.service | peer_service | 对端应用名 |
custom_key_1 | custom_key_1 | 自定义维度1 |
custom_key_2 | custom_key_2 | 自定义维度2 |
custom_key_3 | custom_key_3 | 自定义维度3 |
sql_metric 视图
指标
云 API 指标名称 | Prometheus 指标名称 | 类型 | 描述 | 单位 |
duration_avg | sql_duration_avg | Gauge | 平均耗时 | - |
last_error_occur_time | sql_last_error_occur_time | Gauge | 最后错误发生时间 | ms |
error_request_count | sql_error_request_count | Gauge | 错误请求数量 | ms |
request_count | sql_request_count | Gauge | 请求数量 | ms |
slow_sql_count | sql_slow_sql_count | Gauge | 慢 SQL 数量(>2000ms) | - |
特有维度
云 API 维度名称 | Prometheus 标签名称 | 描述 |
service.component | service_component | 组件类型 |
span.kind | span_kind | Span 类型 |
db.statement | db_statement | 执行语句 |
db.instance | db_instance | 数据库的实例地址 |
db.ip | db_ip | IP 地址 |
db.operation | db_operation | 操作类型 |
error.object | error_object | 错误类型 |
db.system | db_system | 数据库类型 |
attack.subtype | attack_subtype | 注入类型 |
attack.symbol | attack_symbol | 注入标记:0 无注入,1 疑似注入 |
attack.level | attack_level | 注入等级:Critical、Important、Moderate、Low、info |
custom_key_1 | custom_key_1 | 自定义维度1 |
custom_key_2 | custom_key_2 | 自定义维度2 |
custom_key_3 | custom_key_3 | 自定义维度3 |
mq_metric 视图
指标
云 API 指标名称 | Prometheus 指标名称 | 类型 | 描述 | 单位 | 桶分布 |
duration_avg | mq_duration_avg | Gauge | 平均耗时 | ms | |
error_request_count | mq_error_request_count | Gauge | 错误数量 | | |
request_count | mq_request_count | Gauge | 请求数 | | |
range_count_duration | 不支持 | Histogram | 耗时分布 | | 0,1,5,10,50,100,200,300,400,500,600,700,800,900,1000,1500,2000,3000 |
特有维度
云 API 维度名称 | Prometheus 标签名称 | 描述 |
component | component | 组件类型 |
span.kind | span_kind | Span 类型 |
peer.service | peer_service | 对端应用名 |
mq.topic | mq_topic | 消息队列 Topic 名称 |
mq.broker | mq_broker | 消息队列的 Broker 地址 |
operation | operation | 接口名 |
status.code | status_code | 请求状态 |
status_code_xx | status_code_xx | APM 处理后的状态码 |
error.object | error_object | 错误类型 |