在云原生时代,随着微服务应用数量的极速增加,服务与服务之间的调用关系愈加错综复杂,寻找异常问题根源也愈加困难。当用户或应用程序发起请求后系统响应时间过长,或系统发生异常,可以使用链路图表帮助明确服务之间的调用链关系,快速发现、分析和准确定位应用软件、系统软件、基础设备等资源中的异常,有利于帮助用户及时排除问题,提高排障效率,避免导致业务中断、数据丢失等问题。
AnyRobot链路图表嵌于仪表盘模块,与仪表盘内其它可视化组件共同实现异常问题的指标表现、链路定位、日志事件还原,以下将介绍链路图表的配置以及应用。
配置链路图表
在查看链路图表之前需对其进行配置,目的为配置链路图表显示的字段信息及其数据来源,以及链路的源数据,主要包含链路节点的调用信息(例如:描述信息、时间戳、parent id等信息)、附加在跨度上的运行日志信息,具体操作如下:
说明:
• 链路(Trace):记录请求(由应用程序或最终用户发起)在多服务架构(如微服务和无服务器应用程序)中传播时的路径,有助于了解用户或应用发出请求时发生了什么。
• 跨度(Span):是链路当中的最小操作单元,链路由一个或多个跨度组成。跨度会跟踪请求发出的特定操作,记录该操作执行期间发生的事情,其包含名称、时间相关的数据、结构化日志消息和其它元数据(即属性)。第一个跨度表示根跨度,父级跨度下的子跨度提供了请求期间发生的事情更深入的上下文。跨度的运行状态直接影响链路呈现出的状态。
1. 进入仪表盘页面,点击右上角【编辑】>【配置管理】>【链路图表】,进入链路配置页面,进行图表配置、链路配置,各配置项说明如下:
♦ 图表配置:配置仪表盘页面链路图表的名称、展示字段及其数据来源
♦ 链路配置:配置链路日志详情页面的链路节点调用信息以及跨度日志详情的数据来源
2. 配置完成后,点击【完成】即可生成链路图表,可在仪表盘页面查看。配置项与链路图表呈现效果对应关系如下所示:
• “图表配置”结果呈现于仪表盘页面:
• “链路配置”结果呈现于链路详情视图(点击链路图表中【查看链路】,即可进入详情视图):
应用链路图表溯源排障
当您的业务运行出现异常,您可进入仪表盘页面查看此业务相关的链路图表,确定问题所在的跨度、调用的服务以及查看相关调用信息、运行日志,帮助缩小排障范围、确定问题根源。以下为通过链路图表排障的操作:
1. 进入仪表盘页面,点击异常业务相关的仪表盘,查看链路图表,表中展示每条跨度的链路ID、跨度ID,以及其它在配置链路环节配置要展示的字段信息,通过展示的字段信息判断某条跨度是否正常,例如:若选择展示“Status”字段,即可直观判断某条跨度状态是否正常;或,若选择展示“Duration”字段,即可判断某条跨度的耗时是否正常。另外,可点击表头字段右侧按钮对整列进行排序,以便更快查询到异常跨度。
2. 也可通过仪表盘页面的全局过滤器进行过滤,筛选出异常链路。点击仪表盘页面右上角【添加配置】>【过滤器】,具体配置项详述请参考 数据应用>仪表盘>数据过滤下钻>过滤器过滤 章节,以下为以“跨度状态”为筛选条件的过滤器配置示例:
3. 找到异常跨度后,可点击左侧按钮以列表形式展开所有日志字段,并且点击列表左下角还可切换日志呈现模式为“列表模式”或“原始日志”。
4. 点击跨度右侧的【查看链路】,可以更加清楚明了地查看此条跨度所属链路下所有跨度的详情视图。视图内,您可了解以下信息:
• 在页面顶部可查看根跨度名称、跨度开始时间、持续时间、调用的服务数、跨度层级数,以及异常、正常、未知状态的跨度数;
• 在页面左侧可查看以层级展示的各跨度之间的调用关系(每条跨度前圆点的颜色与页面顶部跨度状态的颜色标识一致,可以此判断某跨度是否异常);
• 在页面右方可查看每条跨度的调用信息,包括跨度持续时间、运行日志条数、跨度类型、调用的微服务名称、开始时间、结束时间,通过各跨度耗时与链路总耗时的占比判断性能瓶颈;点击各跨度行,即可在最右侧以列表模式查看此跨度详情。在跨度列表表头处,可通过拖拽改变列宽以查看更加细节的信息;
• 点击各跨度行后,在页面下方可查看相应跨度的运行日志信息,包括日志字段信息(展示的字段于“链路配置”中进行配置),如下所示:
说明:跨度的未知(unset)状态表示用户埋点时未自行定义的跨度的状态。
5. 点击下方日志列表右侧【查看日志详情】,可在右侧弹窗中以列表模式查看详细的运行日志,如下所示:
6. 点击下方日志列表右侧【查看上下文】,查看此条日志的上下文原始日志信息,从而了解事件发生的脉络,在查看上下文页面的具体操作可参考 查看上下文 章节,如下所示: