跳到主要内容

服务

在现代复杂的分布式系统中,系统通常由多个服务组成,每个服务承担特定的功能。通过服务的视角观测系统性能,意味着以单个服务或一组相关服务为观察对象,来评估整个系统的性能表现,可以清晰地看到各个服务对系统整体性能的贡献和影响,从而更精准地定位性能瓶颈。

一个服务的性能问题,可能会影响整个系统的用户体验。例如,在一个电商系统中,有商品展示服务、购物车服务、订单处理服务和支付服务等。如果支付服务响应缓慢,即使商品展示和购物车服务都很流畅,用户在支付环节长时间等待也会对整个电商系统的满意度产生负面影响。

服务列表

img

服务列表页面展示所有采集到的服务及关键性能指标,帮助用户快速了解当前所有服务的简要信息。

⬆️ 上方搜索框,通过输入服务名称,可以快速过滤出目标服务。

⬅️ 左侧快捷筛选框,可以通过多种筛选项快速过滤出目标服务。服务页面默认的筛选项有服务类型、环境、版本、服务名称。

➡️ 右侧数据列表,展示所选中时间段内,服务的名称、健康评分、平均响应时间、P99 响应时间、错误率、每秒请求数。服务列表默认按照每秒请求数倒序排列,点击其他性能数据的表头,可以自由进行升序、倒序排列。

服务详情

img

点击服务列表中的服务名称,右侧弹出抽屉页展示该服务详情页。

⬆️ 上方展示所选中的服务的基本性能数据,如健康评分、错误率、平均响应时间。

下方切换不同 Tab 展示不同详细信息(右上角时间选择器可以自由切换时间范围):

  • 性能
    • 展示当前服务的请求数、响应时间分布、错误请求数、健康评分、数据库调用性能、下游调用性能等趋势图。

      数据库和下游调用性能,统计的是当前服务作为主调用方时产生的数据;其他的均为作为被调方时产生的数据。

    • 单击趋势图中某个数据点,可以跳转查看相关时间段内调用链数据。(所选数据点的前一个数据点作为开始时间,后一个数据点作为结束时间。)
  • 上下游拓扑:展示当前服务的直接上下游调用拓扑。
  • 操作:展示当前服务的操作信息,包括操作的名称、平均响应时间、P95 响应时间、P99 响应时间、错误率、调用次数。此外,点击某条操作,会弹出按钮「查看调用拓扑」和「查看调用链」。
  • 调用链:展示当前服务所产生的调用链信息,包括调用链的开始时间、服务名称、操作、持续时间、方法、HTTP 状态码。此外,点击某条调用链,可以直接查看该调用链详情。
  • 日志:展示当前服务的日志信息,包括日志的时间、日志级别、日志信息。此外,点击某条日志,可以直接查看该日志详情。

拓扑图

img

拓扑图页面直观展示所有采集到的服务之间的相互调用关系,以及服务名称、服务类型。

  • 拓扑图中服务的图标、外圈、颜色等含义:
    • 中心图标表示服务类型,目前支持区分 Web、数据库、MySQL、Redis 等。
    • 实线外圈,表示该服务是通过 light-anget 采集到的 APM 服务;虚线外圈,表示第三方服务。
    • 外圈颜色,表示服务在当前填充指标下的不同区间。填充指标可以在右上角切换。
    • 数值由小到大依次分为绿色、黄色、橙色、红色四个等级,不同颜色代表的值可以在页面右下角的图例查看;其中,第三方服务固定显示为灰色。
    • 默认按照“错误率”填充,还可以自定义切换为“每秒请求数”、“平均响应时间”、“P99 响应时间”。
  • 鼠标停留在某个服务图标上:
    • 会悬浮显示该服务的名称、错误率、平均响应时间、每秒请求数;其中,第三方调用只会显示名称。
    • 同时,该服务直接的上下游调用关系会高亮显示,其他则灰度显示。
    • 鼠标停留在两个服务之间的连接线上,会悬浮显示两者调用的性能指标,有错误率、P99 响应时间、每秒请求数。
  • 鼠标点击某个服务图标,可自由选择查看相关详情数据:
    • 查看上下游拓扑:只展示与该服务有前后直接调用关系的拓扑图。点击左上角「返回全局拓扑」,即可重新展示全局拓扑图。
    • 查看服务详情:会带着该服务名称、当前时间轴的过滤信息,跳转到服务详情页面。
    • 查看相关日志:会带着该服务名称、当前时间轴的过滤信息,跳转到日志模块。
    • 查看相关调用链:会带着该服务名称、当前时间轴的过滤信息,跳转到调用链模块。
第三方服务

第三方服务是指,没有注入 light-agent 的服务。平台可以识别注入 light-agent 的服务与第三方调用的关系,但是无法获取第三方调用的内部详细数据。

操作列表

操作,是指系统中可以被请求的数据实体、API 或组件。可以理解为不同服务之间或服务内部之间相互访问的入口点。

img

操作列表模块展示采集到的所有操作与服务的依赖关系、性能数据、调用关系。

⬆️ 上方搜索框,通过输入操作名称,可以快速过滤出目标操作。

⬅️ 左侧快捷筛选框,可以通过多种筛选项快速过滤出目标操作。操作列表页面默认的筛选项有服务名称、平均响应时间范围、P95 响应时间范围、P99 响应时间范围。

➡️ 右侧数据列表,展示所选中时间段内,每个操作所属的服务名称、平均响应时间、P95 响应时间、P99 响应时间、调用次数、错误率。

操作详情

点击操作列表中某条数据,右侧弹出抽屉页展示该操作详情页。

img

⬆️ 上方展示所选中的操作的基本信息,如所属服务、错误率、调用次数、平均响应时间、P95 响应时间、P99 响应时间。

下方切换不同 Tab 展示不同详细信息(右上角时间选择器可以自由切换时间范围):

  • 调用拓扑:展示当前操作的调用关系拓扑图。
    • 每个卡片代表一个操作,并展示该操作所属的服务名称、类型、操作名称;
    • 卡片内下方的百分比代表,该操作占它直接上游调用次数的百分比;每个操作直接下游的百分比加和为 100% ;
    • 某条连接线上的红色百分比数字,展示当前单向调用关系的错误率。
    • 鼠标悬浮在某条连接线上,展示当前单向调用关系的调用占比、调用次数、错误数、错误率。
    • 默认展示所选操作下游调用关系拓扑;点击所选操作卡片左侧的「加号按钮」,即会展开该操作直接的上游调用,但不展示具体的调用百分比。
    • 默认折叠调用百分比小于 1% 的操作,点击「查看更多」即可展开;折叠调用百分比的阈值,可以在右上角自定义编辑。
    • 点击某个操作卡片,弹出按钮「查看调用拓扑」,点击即可切换展示被选中操作视角的调用拓扑;弹出按钮「查看调用链」,点击即可进入调用链模块,查看与该操作相关的调用链。
  • 业务接口:展示该操作包含的业务接口。
    • 默认情况下,识别 url.path 字段作为业务接口。
    • 若业务接口符合某个“业务接口识别规则”,则会按照规则生成特定的业务接口名称。
    • 单击列表中的某个业务接口,即可跳转到调用链模块查看相关数据。
业务接口名称显示规则举例

若业务接口符合某个识别规则,业务接口名称显示规则举例如下:

  • 若是根据请求参数识别:
    • 1 个参数:url/z?A=B*
    • 多个参数:url/z?A=B&X=Y*
  • 若是根据 Header 识别:
    • 1 个参数:url/A:B*
    • 多个参数:url/A:B&X=Y*
  • 若是根据 URL 路径识别:
    • 前面 2 段相同:A/B/*
    • 后面 2 段相同:*/A/B
    • 自定义第 2 段相同:*/A/ *
    • 自定义第 2、4 段相同:*/A/ */B/ *

自定义业务接口识别规则

通过自定义规则,可以按需识别出与业务相关的接口。有效地帮助客户从技术视角切换到业务功能视角,去观测接口的性能问题。

比如,支付接口。A 用户调用的 URL 为 /pay/A,B 用户调用时为 /pay/B,但本质上都是支付操作。通过配置合适的识别规则,可将这些调用统一识别为 /pay,从而针对地表示“支付”这个重要的业务功能。

进入「业务接口设置」页面后,点击右侧「新建识别规则」,根据提示填写配置信息,即可按需创建适合您业务系统的业务接口识别规则。

img

1. 第一步:生效范围

首先,可以选择是对平台所有采集到的服务生效,还是指定某些服务生效。

其次,在服务的基础之上,还可以指定对某些业务接口生效。此项非必填项。

2. 第二步:识别规则

目前,支持通过 URL 路径、请求参数、Header 参数来配置业务接口识别规则。

  • 对于请求参数、Header 参数:需要输入参数名,多个参数用英文逗号【,】隔开
  • 对于 URL 路径:需要选择识别位置,即“前面、后面、自定义、全部”。其中,
    • 若选择全部段相同才识别,直接采集到什么数据就展示什么数据。
    • 若选择自定义段相同才识别,即可以指定是“第几段”相同才识别。

3. 第三步:规则名称

对规则进行命名,有利于快速识别该规则的含义。

4. 第四步:优先级权重

当同一个业务接口符合多个识别规则时,会优先匹配权重更高的规则。可以输入 1-100 的数值,不同的识别规则优先级权重不可重复。

提示:可优先按照 10、20、30、40、50、60、70、80、90 赋值,后续插入非整数的权重会更加便捷。

指标含义

服务列表

指标名称含义
响应时间一定时间内,该服务的 Span 从发出请求到收到响应所经历的时间间隔。
平均响应时间:该服务所有 span 的响应时间的平均值。
P99 响应时间:该服务99% span 的响应时间都小于或等于该值。P50/P99 响应时间同理。
错误率一定时间内,该服务失败的请求数占总请求数的百分比。
每秒请求数一定时间内,该服务每秒处理的请求数量。
健康评分健康评分是基于标准化指标 Apdex ,将取值范围转化为 0-100,用于衡量一定时间内服务响应时间的优劣。
Lighthouse 默认的响应时间阈值(T)为 0.5 s。
设置响应时间阈值(T)的思路:满意阈值(T)、容忍阈值(4T)、不满意阈值(>4T)。

操作列表

指标名称含义
响应时间一定时间内,该操作从发出请求到收到响应所经历的时间间隔。
平均响应时间:操作响应时间的平均值。
P99 响应时间:99% 操作的响应时间都小于或等于该值。P95 响应时间同理。
调用次数一定时间内,该操作主调和被调的总次数。
错误率一定时间内,该操作报错次数占调用总次数的百分比