跳到主要内容

APM 应用性能监控

本章覆盖:拓扑 / 链路列表 / 服务 / 接口 / 错误 / Trace 详情。 APM(Application Performance Monitoring,应用性能监控)基于 OpenTelemetry(OTel)采集的链路(Trace)与指标数据,帮助研发与 SRE 从"服务全景"一路下钻到"单次调用的某个 Span",快速定位慢请求、错误来源与依赖瓶颈,缩短故障定位时间(MTTR)。

APM 各功能统一收敛在同一入口下的顶部 Tab 中,从左到右依次为:调用拓扑、链路列表、服务列表、接口分析、错误分析。服务详情、Trace 详情、接口详情则通过在这些页面中点击相应链接进入。

进入路径:左侧主导航 数据查询 → 链路追踪(页面地址 /query/traces)。

页面顶部为统一的数据源与范围控制条,对下方所有 Tab 生效:

控制项含义
数据源(Jaeger)选择提供 Trace 明细的 Jaeger 数据源;驱动"链路列表"与"Trace 详情"。未配置时使用系统内置默认 Jaeger
指标源(Prometheus)选择提供拓扑 / 服务 / 接口 / 错误指标的 Prometheus 数据源(数据来自 spanmetrics 与 servicegraph)。留空时后端回退到租户第一个启用的 Prometheus
套按 service.namespace(多套租户隔离归属)过滤所有 Tab;无命名空间数据时自动降级为"全部"
刷新数据源右上角,重新拉取已注册的数据源列表
OpenTelemetry 标签提示当前数据来源体系为 OpenTelemetry

注意事项:拓扑、服务、接口、错误四类分析依赖 Prometheus 指标(spanmetrics + servicegraph);链路明细依赖 Jaeger。若某一类数据缺失,请先确认对应数据源已在"数据源管理"中正确配置并启用。

服务拓扑​

1. 功能简介

服务拓扑以有向图的形式,将各服务之间的真实调用关系可视化,呈现调用方向、请求速率、成功率、响应时间与健康状态,帮助你一眼看清系统全貌、识别核心链路与异常节点。

2. 进入路径

数据查询 → 链路追踪 → 调用拓扑 Tab(默认打开的第一个 Tab)。

3. 界面总览 界面从左到右分为三个区域:中间为拓扑画布(服务节点 + 调用连线,支持缩放、拖拽、小地图导航),右侧上方为图例,右侧为选中服务的详情抽屉。

4. 界面元素说明

服务节点卡片字段:

字段含义
服务名称服务名(含图标);节点右上角为健康状态圆点与图标
套徽标该服务所属的 service.namespace(有归属时显示)
↓ n/s入向请求速率(每秒请求数,rps)
n ms平均响应时间(P95 近似)
×n实例数

调用连线与图例:

元素含义
实线同步调用
虚线异步调用
连线标签成功率百分比 · 请求速率(如 99.8% · 12.30/s)
连线粗细与请求量正相关,量越大线越粗
连线颜色灰色正常 / 橙色存在错误 / 红色错误率 > 5%(并以动画流动强调)
健康-健康(绿点)无错误且有流量
健康-警告(黄点)错误率 > 0 或存在警告级告警
健康-异常(红点)错误率 > 5% 或存在严重告警
健康-未知(灰点)无流量、无法判定

顶部工具条:

控件说明
健康状态多选下拉,按健康状态(健康 / 警告 / 异常 / 未知)过滤画布中显示的节点
搜索服务选中某服务后,画布收敛为"该服务 + 直接上下游"的邻域视图
最近 15 分钟当前统计时间范围
显示设置开关,控制是否在连线上显示成功率 / 速率标签

右侧服务详情抽屉(点击节点后展开,含 概览 / 追踪 / 指标 / 日志 / 告警 五个 Tab):

抽屉内容含义
基本信息服务名、实例数等
当前指标请求数(rps)、错误率、平均延迟(P95)、成功率四张指标块,均带迷你趋势图
上游依赖 / 下游依赖该服务的调用方与被调用方,标注占比与速率
概览 / 指标 Tab响应时间、错误率、调用数(成功 / 失败)趋势图
告警 Tab该服务当前活跃告警
查看追踪详情 →跳转到"链路列表"并按该服务预过滤

5. 操作步骤

  1. 进入 链路追踪 → 调用拓扑 Tab,画布自动加载全量服务调用关系(默认每 30 秒刷新一次)。
  2. 用鼠标滚轮缩放、拖拽平移;左下角控制条可复位视图,右下角小地图可快速导航。
  3. 观察节点右上角健康圆点与连线颜色,快速锁定异常服务或异常调用。
  4. 在顶部"搜索服务"中选择目标服务,画布收敛为其上下游邻域,聚焦排查。
  5. 点击任一节点,右侧抽屉展开该服务的指标、依赖与告警。
  6. 在抽屉中点击 查看追踪详情 →,直接跳到该服务的链路列表继续下钻。

6. 常见问题 / 注意事项

  • 画布提示"暂无服务调用关系(需 servicegraph 指标接入)":说明 Prometheus 中缺少 servicegraph 指标,请确认边缘 OTel Collector 已开启 servicegraph 连接器并正常上报。
  • 纯生产者节点(如压测 / 流量发生器)只有出向调用,入向请求为 0,健康判定会结合出向活动,避免误判为"未知"。
  • 工具条中的"生产环境""全部"两个下拉为本期占位项,暂不可操作。

链路列表​

1. 功能简介

链路列表展示一段时间内采集到的调用链(Trace)汇总,每一行是一条完整链路,包含开始时间、入口接口、耗时、状态等,支持多维筛选与排序,便于快速找出慢链路或错误链路并下钻查看。

2. 进入路径

数据查询 → 链路追踪 → 链路列表 Tab。(从拓扑抽屉点击"查看追踪详情"也会跳转到此并预过滤服务。)

3. 界面总览 左侧为筛选面板,右侧为链路结果表;表格上方显示"发现 N 个数据"。

4. 界面元素说明

左侧筛选面板:

筛选项含义
服务按入口服务筛选(下拉,支持搜索)
时间范围近 1 时 / 近 3 时 / 近 6 时 / 近 24 时
条数拉取上限:50 / 100 / 200
响应时间(ms)双端滑块,按耗时区间过滤(客户端)
状态正常 / 错误 复选
接口名称按结果集中出现的入口接口多选过滤
服务(结果集)按结果集中出现的入口服务多选过滤

链路结果表列:

列含义
开始时间链路起始时间(可点击表头排序)
TraceID链路唯一标识(截断显示),点击进入 Trace 详情
接口名称入口操作名(root operation)
状态正常 / 错误 徽标(链路内含错误 Span 则为错误)
耗时链路总耗时(可点击表头排序,自动按 µs/ms/s 换算)
服务入口服务(root service)
套所属 service.namespace 归属徽标
类型链路类型
状态码入口状态码
主机上报主机

5. 操作步骤

  1. 进入 链路列表 Tab,默认加载近 1 小时、上限 100 条链路。
  2. 在左侧选择服务、时间范围与条数,缩小拉取范围。
  3. 用"状态=错误"或拖动"响应时间"滑块,快速筛出错误链路或慢链路。
  4. 点击"开始时间"或"耗时"列表头切换升序 / 降序(列头箭头 ↑ / ↓ 指示当前排序)。
  5. 点击目标行的 TraceID,进入该链路的调用链详情(见 7.6)。

6. 常见问题 / 注意事项

  • 响应时间滑块、接口名称、服务(结果集)三类筛选为客户端过滤,仅作用于已拉取的结果,不会重新查询后端。若要扩大范围,请调大"条数"或时间范围。
  • 表格提示"未找到链路"时,多为该时间窗内无数据或所选服务未上报,可放宽时间范围或清空服务筛选。

服务列表与服务详情​

1. 功能简介

服务列表以 RED 指标(请求率 / 错误率 / 时延)汇总所有服务的运行状况,并配合 Top-N 趋势图,便于横向比较、快速识别高负载或高错误的服务;点击服务名可进入服务详情,查看实例、依赖关系、属性与告警。

2. 进入路径

数据查询 → 链路追踪 → 服务列表 Tab;点击服务名进入服务详情(页面地址 /apm/services/:name)。

3. 界面总览 顶部为搜索框与 Top-N 选择器,中部为"平均响应时间 / 请求量 / 错误率"三张趋势图,下方为服务指标表。 服务详情页顶部显示服务名与健康状态徽标,下含 服务关系 / 基础信息 / 服务告警 三个 Tab。

4. 界面元素说明

服务列表 —— 表格列:

列含义
服务名称服务名,点击进入服务详情
套所属 service.namespace 归属徽标
调用数时间窗内累计调用次数(可排序)
调用速率每秒请求数 /s(可排序)
错误率错误占比,> 5% 红色、>0 橙色、0 绿色(可排序)
平均响应时间平均时延(可排序)
最大响应时间P99 近似,受直方图桶上限约束(可排序)

服务列表 —— 顶部控件:搜索服务(同时过滤表格与趋势图)、Top(5 / 10 / 20,控制趋势图展示的服务条数)。

服务详情 —— 基础信息 Tab:

区块 / 字段含义
实例表服务实例名称、请求量、Node、Pod、Namespace、健康状态
全部实例平均值 / 按实例排行 Top5切换趋势图口径
响应时间 / 调用数 / 错误率三张趋势图
属性信息服务显示名称、检测名称、类型、使用的技术、语言、运行时名称 / 版本、服务版本、数据来源
标签信息自定义标签(后续提供)

服务详情 —— 服务关系 Tab:上游服务、当前服务(含最近一小时吞吐迷你图)、下游服务三张卡片,点击上游 / 下游卡片切换下方对端表(上游 / 下游服务名称、接收 / 发出请求量、平均网络耗时、健康状态)。

服务详情 —— 服务告警 Tab:该服务当前活跃告警(告警 ID、发生时间、告警等级、告警描述)。

5. 操作步骤

  1. 进入 服务列表 Tab,在搜索框输入关键字过滤服务,趋势图随之只展示匹配服务的 Top-N。
  2. 点击"错误率""调用速率"等列头排序,快速找出高错误或高负载服务。
  3. 点击某服务名进入服务详情。
  4. 在"服务关系"Tab 点击上游 / 下游卡片,查看对端服务及网络耗时。
  5. 在"基础信息"Tab 切换"按实例排行 Top5",逐实例对比性能;查看"属性信息"了解语言、运行时等元数据。
  6. 在"服务告警"Tab 查看该服务的活跃告警。

6. 常见问题 / 注意事项

  • "最大响应时间"为基于直方图的 P99 近似,受桶上限约束,仅供趋势参考,不等同于精确 P99。
  • 服务详情页右上角"接口分析"按钮会返回链路追踪入口。
  • 实例表的 Node / Pod / Namespace 需要 K8s 属性上报后才会填充,未接入时可能为空。

接口分析​

1. 功能简介

接口分析按协议维度(HTTP / RPC / Redis / SQL / MQ / 外部调用)统计各接口(Endpoint)的调用量、速率、错误率与响应时间,帮助定位到具体接口层面的性能与错误问题。

2. 进入路径

数据查询 → 链路追踪 → 接口分析 Tab;点击接口名进入接口详情(页面地址 /apm/endpoints/:service/:endpoint)。

3. 界面总览 顶部为协议分段选择器与搜索框,中部为"调用数 / 响应时间"组合趋势图,下方为接口列表(可切换"接口列表 / 来源服务"两种视图)。

4. 界面元素说明

顶部控件:

控件含义
协议分段HTTP接口 / RPC接口 / Redis调用 / SQL调用 / MQ消费 / 外部调用
时间范围最近 15 分钟 / 1 小时 / 6 小时 / 24 小时
搜索接口 / 服务按接口名或服务名过滤
趋势图柱=调用数(/s),线=响应时间(ms)
视图切换接口列表 / 来源服务

接口列表 —— 表格列:

列含义
接口名称接口路径 / 操作名,点击进入接口详情
数据来源采集来源(OTLP)
接口性能健康色条:绿正常 / 橙警告(>1%) / 红异常(>5%)
服务名称归属服务
调用数时间窗内调用次数(可排序)
调用速率每秒调用次数 /s(可排序)
错误率错误占比(可排序)
平均响应时间平均时延(可排序)
最大响应时间(P99)P99 时延(可排序)
趋势迷你趋势图

"来源服务"视图:按服务聚合,展示 服务名称、接口数、调用数、调用速率、错误率、平均响应时间。

5. 操作步骤

  1. 进入 接口分析 Tab,通过顶部分段选择器切换协议类型(默认 HTTP接口)。
  2. 在右上角选择时间范围,观察"调用数 / 响应时间"组合趋势。
  3. 在搜索框输入接口或服务关键字缩小范围。
  4. 点击列头(调用数 / 错误率 / 平均响应时间等)排序,定位高频或高错误接口。
  5. 切换"来源服务"视图,从服务维度聚合查看接口分布。
  6. 点击接口名称进入接口详情,查看该接口的更细粒度指标。

6. 常见问题 / 注意事项

  • 每种协议的数据相互独立,切换协议后趋势图与列表会随之刷新;某协议提示"该协议暂无接口数据"属正常(该类型无流量)。
  • "数据来源"当前统一显示 OTLP,表示接口指标来自 OpenTelemetry 采集。

错误分析​

1. 功能简介

错误分析聚合各服务、各接口的错误来源,按错误率与错误量排序展示,帮助你快速锁定"错误最集中"的服务与接口,是排障时的优先入口。

2. 进入路径

数据查询 → 链路追踪 → 错误分析 Tab。

3. 界面总览 顶部为服务筛选下拉,下方为错误来源表。

4. 界面元素说明

列 / 控件含义
按服务筛选下拉选择只看某个服务的错误(支持搜索)
服务产生错误的服务
接口产生错误的接口
错误率错误占比徽标,> 5% 红色、否则橙色
错误量每秒错误数 /s
趋势错误率迷你趋势图

5. 操作步骤

  1. 进入 错误分析 Tab,默认展示全部服务的错误来源(默认每 30 秒刷新)。
  2. 在"按服务筛选"下拉中选择目标服务,聚焦单个服务的错误。
  3. 根据错误率与错误量排布,锁定错误最集中的服务 / 接口。
  4. 结合"链路列表"按错误状态筛选对应链路,进一步下钻到 Trace 详情定位根因。

6. 常见问题 / 注意事项

  • 表格提示"当前无错误"说明所选范围内没有错误数据,属正常状态。
  • 错误分析基于 Prometheus 指标聚合,反映错误的分布趋势;要看单次错误的具体 Span 堆栈,请到 Trace 详情中查看标红的 Span。

Trace 调用链详情​

1. 功能简介

Trace 调用链详情展示单条链路内所有 Span 的父子关系、时序与耗时,通过瀑布图 / 火焰图直观呈现调用次序,并可逐 Span 查看环境、标签与耗时明细,是定位慢请求、错误 Span 的最终落点。

2. 进入路径

在"链路列表"(7.2)中点击某条链路的 TraceID 进入(页面地址 /apm/traces/:id)。

3. 界面总览 顶部为链路标题、状态徽标、总耗时与 TraceID;下方三个 Tab:调用次序 / 火焰图 / 耗时统计。调用次序与火焰图右侧附有 Span 详情面板。

4. 界面元素说明

顶部信息:

字段含义
状态徽标正常 / 错误(链路内任一 Span 出错即为错误)
标题入口 Span 的操作名与所属服务
总耗时整条链路耗时
TraceID链路唯一标识

调用次序 Tab(瀑布图):

元素含义
搜索框按服务名 / 接口名过滤 Span
▸ / ▾折叠 / 展开子 Span
Span 行操作名 · 服务 · 类型;缩进表示层级
占比 %该 Span 耗时占总耗时百分比
时间条按起始偏移与耗时定位的横条;错误 Span 显示为红色
右侧耗时该 Span 耗时

Span 详情面板(点击某个 Span 后显示):分为链路串联信息(SpanID、ParentID)、Span 环境信息(数据来源、上报主机、Span 类型、当前服务名、服务实例、线程名称)、Span 详情信息(入口 resource、耗时)、其他信息(全部标签键值)。

火焰图 Tab:以层级色块横向展示各 Span 的时间占用,点击色块可在右侧查看该 Span 详情。

耗时统计 Tab:按 服务 → 接口 两级聚合,列为 Resource、Span 数量、平均耗时、执行时间、执行占比,可折叠 / 展开每个服务下的接口明细。

5. 操作步骤

  1. 从"链路列表"点击 TraceID 进入本页,默认打开"调用次序"Tab。
  2. 观察瀑布图,红色时间条即为出错 Span;耗时最长的横条即为主要耗时点。
  3. 用搜索框按服务或接口名过滤,用 ▸ / ▾ 折叠无关子树。
  4. 点击任一 Span 行,右侧面板展开该 Span 的环境信息与全部标签。
  5. 切换"火焰图"从层级视角审视调用深度与耗时分布。
  6. 切换"耗时统计",按服务 / 接口定位"哪个服务、哪个接口"占用了最多时间。

6. 常见问题 / 注意事项

  • 页面提示"加载链路失败"时,多为该 TraceID 已过采样保留期或所选 Jaeger 数据源不含该链路,可返回列表重新选择或切换数据源。
  • Span 详情中的"服务实例""上报主机"等字段来自 OTel 资源属性(如 service.instance.id、host.name、k8s.pod.name),未上报对应属性时会显示为"-"。
  • 耗时统计的"执行占比"基于各 Span 耗时之和计算,存在并发 Span 时占比之和可能大于 100%,属正常现象。