带你读《代码管理实践10讲》——九、打通源码!高效定位代码问题

简介: 带你读《代码管理实践10讲》——九、打通源码!高效定位代码问题

为了帮助企业和团队挖掘更多源代码价值以赋能日常代码研发、运维等工作,云效代码团队在大数据和智能化方向进行了一系列的探索和实践(例如代码搜索与推荐),本文主要介绍我们如何通过直接打通源代码来提高研发与运维效率。

 

随着微服务架构的流行,一个业务流程需要多个微服务共同完成。一旦出现问题,运维人员在面对数量多、调用链路复杂的情况下,很难快速锁定导致问题发生的罪魁祸首:代码。

 

为了提高排查效率,目前常见的解决方案是:链路跟踪+日志分析工具相结合。即通过链路跟踪产品(如阿里云的Tracing Analysis)可视化还原业务执行过程的系统调用链路的拓扑、接口请求量与耗时等数据,再配合日志分析工具(如阿里云的SLS)进一步分析链路中某个系统的详细日志从而锁定出问题的大致坐标。

 

理想情况是开发人员能够自助分析并解决联调过程中遇到的问题,但实际情况是一旦被依赖的服务执行返回失败时测试流程就终止了,必须要等到下游服务提供方的同事协助排查才能解决;尤其当遇到在紧急场景时,更是讲究一个“快”字,如果过于依赖排查人员对代码的熟悉程度以及必须下载到本地电脑才能分析的诸多限制,势必会降低问题排查的效率。

 

究其根源,链路跟踪+日志分析工具的排查模式存在两个待解的问题:

 

∙        无法直接锁定有问题的源码,现有的定位方式只能查找到问题发生的现场信息(如发生的时间、上下文数据和一些描述信息),而缺少产生问题的凶手信息,即源代码数据;

∙        限制条件多,首先需要排查人员事前知道问题可能涉及的代码库;其次代码库必须提前下载到本地PC电脑才能查看分析,如果身边没有电脑则无法进行下去。

 

>  打通源码,解决最后一公里

 

为了解决上述2个问题,云效代码管理平台 Codeup 联合阿里云日志服务工具 SLS 一起打通了日志到源码追溯的通道。管理员在完成一次配对后,开发者在排查过程中就无需关心日志与代码库的关联关系,也无需临时申请代码库权限,让在线代码问题的排查变得简单而高效。

 

这里涉及到两款工具,其中 Codeup 是代码托管产品,提供了代码源文件的存储与版本控制、代码文本搜索等服务;SLS提供了海量日志数据的收集、存储、检索等服务。


首先通过 SLS 收集上报业务系统打印的日志数据,一旦生产环境出现问题并由监控系统发出报警,则开发或运维人员接到报警后第一时间登录 SLS 控制台查询具体的日志详情,然后分析具体日志详情以及一键跳转日志关联的源码仓库,定位到问题代码行,整个过程一气呵成,让处理人员专注于问题本身,极大提高解决问题的效率。

 

 

>  实际操作指南

 

1) 登录阿里云日志服务 SLS 界面,由管理员配置日志库与代码库的关联关系,通过点击图1所示的“查看源码”功能,可以进入配置页面。配置是一次性工作,生效后无需重复配置。

 

image.png

 

1 “查看源码初始化入口

 

2) 选择「查看源码」,选择业务对应的云效代码库,如果代码暂未托管至云效Codeup,别担心,这里支持一键快速导入三方代码库到 Codeup,具体可见下方操作视频。

 

点击此处,查看操作视频。

 

3) 配置成功后会在高级选项里新增“代码诊断”入口,如图3所示(入口名称可自定义,此处中自定义为:代码诊断)。


image.png

 

2 初始设置完成效果图


4) 查看 SLS 日志详情,如需配合源码分析,则只需选择相应代码相关日志关键字,然后点击「代码诊断」即可,如图4~6所示,点击后可以在 SLS 页面直接查看相关的代码片段。

image.png

 

3 代码查询交互


image.png

 

4 关联查询的代码片段

 

image.png

 

5 Codeup托管的代码详情

 

上述能力可以可以很好地解决日常联调场景和在线应急场景的问题。

 

∙        日常联调场景中能够通过日志记录搜索问题代码,自助解决全链路调试过程中出现的一些类似参数校验,运行时异常等简单的代码问题。

∙        在线应急场景下,能够通过一个traceID轻松从链路中定位问题的系统,再从系统的日志中查询详细日志数据,最后通过日志数据中记录的代码摘要快速搜索查询源码内容。整个过程一键完成,只要有相应的日志和代码库权限即可,即使没有PC电脑,移动设备一样能够搞定。

如果你对该能力感兴趣,欢迎加入钉群找我们交流(钉钉群号:33634408)。

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
SVN版本控制系统
SVN是现在软件开发之中的主流软件版本控制工具,在工作之中利用SVN可以有效的解决多人开发的代码管理问题,本课程将为读者讲解SVN服务器的配置以及基于MyEclipse的SVN客户端插件的配置与使用,并且在讲解之中着重讲解了冲突的产生于解决。
目录
相关文章
|
2月前
|
安全 开发工具 数据安全/隐私保护
代码管理记录(一): 码云Gitee代码提交和维护
本文介绍了Gitee平台,提供了代码托管服务,并详细说明了从新建仓库到代码提交的步骤。
67 1
代码管理记录(一): 码云Gitee代码提交和维护
|
2月前
|
开发工具 git Python
代码管理记录(二):Github代码上传实操
本文是关于如何使用Git将本地代码上传到GitHub的实操指南。介绍了Git的基本概念、安装方法,并通过详细的步骤指导用户从GitHub创建仓库到使用Git命令初始化、添加、提交代码,最终将代码推送到远程仓库。同时,还汇总了一些常见的错误及其解决方法。
38 2
代码管理记录(二):Github代码上传实操
|
7月前
|
Kubernetes 开发工具 git
带你读《代码管理实践10讲》——一、量体裁衣,寻找适合你团队的代码协同模式(1)
带你读《代码管理实践10讲》——一、量体裁衣,寻找适合你团队的代码协同模式(1)
132 2
|
7月前
|
Linux 网络安全 开发工具
【超详细!超多图!】【代码管理】Python微信公众号开发(3)- 服务器代码上传Github
【超详细!超多图!】【代码管理】Python微信公众号开发(3)- 服务器代码上传Github
146 0
|
7月前
|
持续交付 开发工具 Android开发
带你读《代码管理实践10讲》——一、量体裁衣,寻找适合你团队的代码协同模式(2)
带你读《代码管理实践10讲》——一、量体裁衣,寻找适合你团队的代码协同模式(2)
120 0
|
7月前
|
SQL 安全 算法
带你读《代码管理实践10讲》——七、3类代码安全风险如何避免?
带你读《代码管理实践10讲》——七、3类代码安全风险如何避免?
165 0
|
7月前
|
Java Serverless Maven
云效代码管理问题之代码仓库配置需要评审如何解决
云效仓库是阿里云提供的代码托管和版本控制服务,支持Git等多种版本管理工具;本合集聚焦于云效仓库的使用技巧、团队协作流程以及常见问题解答,旨在帮助开发者更高效地进行代码管理和协作开发。
1842 0
STM32框架式代码管理LED代码的讲解
STM32框架式代码管理LED代码的讲解
160 0
|
7月前
|
JavaScript 数据可视化 前端开发
【Node.js】低代码管理系统源码:只需点击鼠标,搭建属于你的企业应用
【Node.js】低代码管理系统源码:只需点击鼠标,搭建属于你的企业应用
81 1
|
JavaScript 数据可视化 前端开发
Node.js低代码管理系统源码:只需点击鼠标,搭建属于你的企业应用
低代码管理系统是一种通过可视化界面和简化的开发工具,使非专业开发人员能够快速构建和管理应用程序的系统。它提供了一套预先定义的组件和模块,使用户可以通过拖放操作来设计应用程序的界面和逻辑。低代码管理系统还提供了自动化的工作流程、数据管理和集成功能,使用户能够快速创建和部署应用程序,而无需编写大量的代码。
119 0
下一篇
无影云桌面