更新时间:2023-12-08 10:37:47

在云原生时代,随着微服务应用数量的极速增加,服务与服务之间的调用关系愈加错综复杂,寻找异常问题根源也愈加困难。当用户或应用程序发起请求后系统响应时间过长,或系统发生异常,可以使用链路图表帮助明确服务之间的调用链关系,快速发现、分析和准确定位应用软件、系统软件、基础设备等资源中的异常,有利于帮助用户及时排除问题,提高排障效率,避免导致业务中断、数据丢失等问题。

AnyRobot链路图表嵌于仪表盘模块,与仪表盘内其它可视化组件共同实现异常问题的指标表现、链路定位、日志事件还原,以下将介绍链路图表的配置以及应用。

配置链路图表

在查看链路图表之前需对其进行配置,目的为配置链路图表显示的字段信息及其数据来源,以及链路的源数据,主要包含链路节点的调用信息(例如:描述信息、时间戳、parent id等信息)、附加在跨度上的运行日志信息,具体操作如下:

说明:

• 链路(Trace):记录请求(由应用程序或最终用户发起)在多服务架构(如微服务和无服务器应用程序)中传播时的路径,有助于了解用户或应用发出请求时发生了什么。

• 跨度(Span):是链路当中的最小操作单元,链路由一个或多个跨度组成。跨度会跟踪请求发出的特定操作,记录该操作执行期间发生的事情,其包含名称、时间相关的数据、结构化日志消息和其它元数据(即属性)。第一个跨度表示根跨度,父级跨度下的子跨度提供了请求期间发生的事情更深入的上下文。跨度的运行状态直接影响链路呈现出的状态。

1. 进入仪表盘页面,点击右上角【编辑】>【添加配置】>【链路图表】,进入链路配置页面,进行图表配置、链路配置,各配置项说明如下:

♦  图表配置:配置仪表盘页面链路图表的名称、展示字段及其数据来源

元素名称
元素说明 备注
基本信息 * 链路图表名称 设置链路图表的自定义名称; 不能为空,长度≤40字符
图表数据配置 * 已存搜索

选择已存搜索,设置链路图表数据来源,表头显示的字段从此搜索中获取,链路图表将展示此搜索中的已选字段

注意:选择的“已存搜索”的已选字段中必须含有SpanContext.TraceIDSpanContext.SpanID两个字段,具体操作方法请参见过滤搜索章节中“添加至列表”段落

♦  链路配置:配置链路日志详情页面的链路节点调用信息以及跨度日志详情的数据来源

元素名称
元素说明 备注
链路数据范围 *日志分组 设置链路数据来源所属的日志分组,链路内的所有数据都从该日志分组下获取,包含链路节点调用信息(例如:描述信息、时间戳、parent id等信息) ; 不建议将两种数据存放至同一个日志分组中,否则会导致下方“展示字段”配置列表中出现过多无关字段,从而干扰选择查看跨度日志所需要呈现的字段 
关联日志数据范围

*日志分组 设置跨度相关联的运行日志所属的日志分组,跨度的日志信息从该日志分组中获取;
 展示字段

 勾选查看跨度日志所需要呈现的字段,其中@timestamp为默认必选项;

设置对应字段展示名称: 将鼠标悬浮至任一字段名后的“展示名称”列,点击按钮,输入自定义字段展示名称;

-

 

2. 配置完成后,点击【完成】即可生成链路图表,可在仪表盘页面查看。配置项与链路图表呈现效果对应关系如下所示:

•  “图表配置”结果呈现于仪表盘页面:

•  “链路配置”结果呈现于链路详情视图(点击链路图表中【查看链路】,即可进入详情视图):  

应用链路图表溯源排障

当您的业务运行出现异常,您可进入仪表盘页面查看此业务相关的链路图表,确定问题所在的跨度、调用的服务以及查看相关调用信息、运行日志,帮助缩小排障范围、确定问题根源。以下为通过链路图表排障的操作:

1. 进入仪表盘页面,点击异常业务相关的仪表盘,查看链路图表,表中展示每条跨度的链路ID、跨度ID,以及其它在配置链路环节配置要展示的字段信息,通过展示的字段信息判断某条跨度是否正常,例如:若选择展示“Status”字段,即可直观判断某条跨度状态是否正常;或,若选择展示“Duration”字段,即可判断某条跨度的耗时是否正常。另外,可点击表头字段右侧按钮对整列进行排序,以便更快查询到异常跨度。

2. 也可通过仪表盘页面的全局过滤器进行过滤,筛选出异常链路。点击仪表盘页面右上角【添加配置】>【过滤器】,具体配置项详述请参考 数据应用>仪表盘>数据过滤下钻>过滤器过滤 章节,以下为以“跨度状态”为筛选条件的过滤器配置示例:

3. 找到异常跨度后,可点击左侧按钮以列表形式展开所有日志字段,并且点击列表左下角还可切换日志呈现模式为“列表模式”或“原始日志”。

4. 点击跨度右侧的【查看链路】,可以更加清楚明了地查看此条跨度所属链路下所有跨度的详情视图。视图内,您可了解以下信息:

• 在页面顶部可查看根跨度名称、跨度开始时间、持续时间、调用的服务数、跨度层级数,以及异常、正常、未知状态的跨度数;

• 在页面左侧可查看以层级展示的各跨度之间的调用关系(每条跨度前圆点的颜色与页面顶部跨度状态的颜色标识一致,可以此判断某跨度是否异常);

• 在页面右方可查看每条跨度的调用信息,包括跨度持续时间、运行日志条数、跨度类型、调用的微服务名称、开始时间、结束时间,通过各跨度耗时与链路总耗时的占比判断性能瓶颈;点击各跨度行,即可在最右侧以列表模式查看此跨度详情。在跨度列表表头处,可通过拖拽改变列宽以查看更加细节的信息;

• 点击各跨度行后,在页面下方可查看相应跨度的运行日志信息,包括日志字段信息(展示的字段于“链路配置”中进行配置),如下所示:

说明:跨度的未知(unset)状态表示用户埋点时未自行定义的跨度的状态。

5. 点击下方日志列表右侧【查看日志详情】,可在右侧弹窗中以列表模式查看详细的运行日志,如下所示: 

6. 点击下方日志列表右侧【查看上下文】,查看此条日志的上下文原始日志信息,从而了解事件发生的脉络,在查看上下文页面的具体操作可参考 查看上下文 章节,如下所示: