本文介绍应用性能监控所支持的告警维度和告警指标。
目前,应用性能监控支持基础性能指标、运行时指标、数据库调用指标、错误调用指标4种策略类型,每种策略类型支持不同的告警维度和告警指标。
基础性能指标
告警维度
维度名称 | 补充说明 | 是否为必选告警对象维度 |
业务系统 | 业务系统用于分类管理应用,不同业务系统之间的监控数据完全隔离。 | 是 |
应用 | 应用是一个逻辑组合,多个使用相同应用名接入的进程,会表现为相同应用下的多个实例。 | 是 |
实例 | 实例是应用在物理或虚拟环境中的一个实际部署单元,通常对应一个进程。 | 否 |
调用角色 | 调用角色等同于 Span 类型,表示这条 Span 在链路中被哪一种身份记录,包括 Server、Client、Consumer、Producer、Internal 5个枚举值,分别代表服务端、客户端、消费者、生产者,以及内部调用。 | 否 |
接口 | 接口等同于 Span 名称。 | 否 |
K8s 集群 ID | 否 | |
K8s Deployment | 否 | |
K8s 命名空间 | 否 | |
服务版本 | 否 | |
对端服务 | 用于标识该调用的对端服务。例如,当一个 Span 的调用角色为 Server 的时候,通常会对应另一个调用角色为 Client 的 Span,那个 Span 所在的应用,就是对端服务 。如果使用腾讯云增强版 Java 探针接入,APM 会在 Span 中自动注入对端服务。如果使用其他 OpenTelemetry 方案接入,APM 也会根据调用关系尽可能的在 Span 中注入对端服务。如果对端服务未能自动注入,您可以在上报到 APM 的 Span 中通过 peer.service 属性手动指定对端服务。 | 否 |
调用状态 | 表示该调用是否正确。包括 正确、错误、未设置3个枚举值。 | 否 |
错误类型(下线中) | 不推荐使用,仅适用于历史遗留的告警策略。 | 否 |
告警指标
指标名称 | 补充说明 | 单位 |
调用次数 | 统计时间段内的总调用次数。 | 次 |
每秒调用次数 | 平均每秒调用次数。 | 次 |
错误数 | 状态为 错误的调用次数。 | 个 |
错误率 | 错误数 / 调用次数。 | % |
平均响应时间 | 响应时间的平均值。 | 毫秒 |
最大响应时间 | 响应时间的最大值。 | 毫秒 |
慢调用数量 | 响应时间大于2秒的调用为慢调用。 | 次 |
可容忍调用数量 | 响应时间大于等于0.5秒,且小于等于2秒的调用为可容忍调用。 | 次 |
Apdex | Apdex 标准从用户的角度出发,对应用响应时间的表现,转为可量化范围为0 - 1的满意度评价。 计算公式为 ((调用次数 - 可容忍调用数量 - 慢调用数量) + 可容忍调用数量 × 0.5) ÷ 调用次数 | - |
运行时指标
告警维度
维度名称 | 补充说明 | 是否为必选告警对象维度 |
业务系统 | 业务系统用于分类管理应用,不同业务系统之间的监控数据完全隔离。 | 是 |
应用 | 应用是一个逻辑组合,多个使用相同应用名接入的进程,会表现为相同应用下的多个实例。 | 是 |
实例 | 实例是应用在物理或虚拟环境中的一个实际部署单元,通常对应一个进程。 | 是 |
K8s 集群 ID | 否 | |
K8s Deployment | 否 | |
K8s 命名空间 | 否 | |
服务版本 | 否 | |
池种类 | 包括 thread和connection2个枚举值,分别代表线程池和连接池。 | 否 |
组件类型 | 适用于连接池和线程池相关的指标。例如 tomcat。 | 否 |
池名称 | 适用于连接池和线程池相关的指标。例如 http-nio-8080-exec-*。 | 否 |
GC 类型 | 包括 Full GC、Young GC、ZGC 三种枚举类型。 | 否 |
收集器名称 | 适用于和 GC 相关的指标,例如 MarkSweepCompact。 | 否 |
内存种类 | 适用于和内存利用率相关的指标。例如 Heap。 | 否 |
内存区域 | 适用于和内存利用率相关的指标。例如 Eden。 | 否 |
告警指标
指标名称 | 补充说明 | 单位 |
GC 次数 | 统计时间段内的 GC 总次数。 | 次 |
平均 GC 耗时 | GC 耗时的平均值。 | 毫秒 |
CPU 利用率 | 对于 Java 应用,CPU 利用率取自 OperatingSystemMXBean。 | % |
堆内存使用率 | 堆内存使用率 = 已使用堆内存 / JVM 能从操作系统申请的最大堆内存。 | % |
内存空间使用量 | JVM 某个内存区域已使用的内存。 | MB |
活跃线程数 | JVM 进程中的活跃线程数。 | 个 |
线程池-活跃线程数 | 线程池中的活跃线程数。 | 个 |
线程池使用率 | 活跃线程数 / 最大线程数。 | % |
连接池-活跃连接数 | 连接池中的活跃连接数。 | 个 |
连接池使用率 | 活跃连接数 / 最大连接数。 | % |
Full GC 次数(下线中) | 不推荐使用,仅适用于历史遗留的告警策略。 推荐使用(指标: GC次数,维度:GC类型=Full GC)。 | 次 |
平均 Full GC 耗时(下线中) | 不推荐使用,仅适用于历史遗留的告警策略。 推荐使用(指标: 平均GC耗时,维度:GC类型=Full GC)。 | 毫秒 |
堆内存使用量(下线中) | 不推荐使用,仅适用于历史遗留的告警策略。 推荐使用(指标: 内存空间使用量,维度:内存种类=Heap)。 | MB |
年轻代 Eden 区使用量(下线中) | 不推荐使用,仅适用于历史遗留的告警策略。 推荐使用(指标: 内存空间使用量,维度:内存种类=Heap,内存区域=Eden)。 | MB |
年轻代 Survivor 区使用量(下线中) | 不推荐使用,仅适用于历史遗留的告警策略。 推荐使用(指标: 内存空间使用量,维度:内存种类=Heap,内存区域=Survivor)。 | MB |
老年代使用量(下线中) | 不推荐使用,仅适用于历史遗留的告警策略。 推荐使用(指标: 内存空间使用量,维度:内存种类=Heap,内存区域=Oldgen)。 | MB |
数据库调用指标
告警维度
维度名称 | 补充说明 | 是否为必选告警对象维度 |
业务系统 | 业务系统用于分类管理应用,不同业务系统之间的监控数据完全隔离。 | 是 |
应用 | 应用是一个逻辑组合,多个使用相同应用名接入的进程,会表现为相同应用下的多个实例。 | 是 |
实例 | 实例是应用在物理或虚拟环境中的一个实际部署单元,通常对应一个进程。 | 否 |
调用角色 | 调用角色等同于 Span 类型,表示这条 Span 在链路中被哪一种身份记录,包括 Server、Client、Consumer、Producer、Internal 5个枚举值,分别代表服务端、客户端、消费者、生产者,以及内部调用。 | 否 |
服务版本 | 否 | |
数据库类型 | 例如 mysql、redis 等。 | 否 |
数据库名称 | 具体数据库实例或逻辑数据库名称。 | 否 |
告警指标
指标名称 | 补充说明 | 单位 |
调用次数 | 统计时间段内的总调用次数。 | 次 |
平均响应时间 | 响应时间的平均值。 | 毫秒 |
慢 SQL 次数 | 响应时间大于2秒的调用为慢 SQL 调用。 | 次 |
错误次数 | 状态为 错误的调用次数。 | 次 |
错误率 | 错误数 / 调用次数。 | % |
错误调用指标
告警维度
维度名称 | 补充说明 | 是否为必选告警对象维度 |
业务系统 | 业务系统用于分类管理应用,不同业务系统之间的监控数据完全隔离。 | 是 |
应用 | 应用是一个逻辑组合,多个使用相同应用名接入的进程,会表现为相同应用下的多个实例。 | 是 |
实例 | 实例是应用在物理或虚拟环境中的一个实际部署单元,通常对应一个进程。 | 否 |
调用角色 | 调用角色等同于 Span 类型,表示这条 Span 在链路中被哪一种身份记录,包括 Server、Client、Consumer、Producer、Internal 5个枚举值,分别代表服务端、客户端、消费者、生产者,以及内部调用。 | 否 |
接口 | 接口等同于 Span 名称。 | 否 |
K8s 集群 ID | 否 | |
K8s Deployment | 否 | |
K8s 命名空间 | 否 | |
服务版本 | 否 | |
对端服务 | 用于标识该调用的对端服务。例如,当一个 Span 的调用角色为 Server 的时候,通常会对应另一个调用角色为 Client 的 Span,那个 Span 所在的应用,就是对端服务 。如果使用腾讯云增强版 Java 探针接入,APM 会在 Span 中自动注入对端服务。如果使用其他 OpenTelemetry 方案接入,APM 也会根据调用关系尽可能的在 Span 中注入对端服务。如果对端服务未能自动注入,您可以在上报到 APM 的 Span 中通过 peer.service属性手动指定对端服务。 | 否 |
错误状态码 | 链路中具体的错误类型,例如 io.grpc.StatusRuntimeException。 | 否 |
告警指标
指标名称 | 补充说明 | 单位 |
错误数 | 统计时间段内的错误调用总次数。 | 次 |