工商银行打造在线诊断平台的探索与实践

作者|刘慕雨中国工商银行软件开发中心云计算实验室

在信息系统建设方面,工商银行一直积极探索,以开放的姿态借鉴行业先进经验,旨在为客户提供更优质的金融服务和用户体验。随着分布式架构和云计算平台在工行的广泛应用,如何高效排查程序错误或性能瓶颈,是个棘手的问题。

工行在线诊断平台:

对于后端工程师,一旦线上程序逻辑出错,问题排查如同破案,在分析研判时,问题现场的第一手信息是最珍贵的。开发人员很容易首先想到的就是阅读日志,从海量的日志中寻找蛛丝马迹,这就好比是对犯罪现场周边的视频监控录像逐一回看,非常辛苦。如果问题现场的日志记录缺失,就尝试在本地重现问题并调试解决,本地难以重现的,只能再加日志,再部署,再重现,然后再查日志,效率较低。对于复杂一些的比如程序性能问题,如何定位性能瓶颈,一不小心又要回到加日志、部署、查日志、再加日志的老路,不仅效率不高,也破坏了问题现场。

JDK提供的工具如jps、jmap、jstat、jstack、jconsole等,可以为工程师提供一些帮助。Linux操作系统的命令,如top、free、pidstat、vmstat、iostat等,也是排查问题尤其是性能调优必不可少的工具。但直接使用这些工具,对工程师的个人技术能力和经验要求较高。而且对企业来说,在生产环境直接通过命令行操作,是很敏感的行为。因此,如何在保证安全的基础上,又能像调试本地程序一样更便捷的排查分析,是个棘手的问题。

Arthas原理图:

比如,使用watch命令,实时观测方法的调用情况;使用jad命令,把字节码反编辑成java代码;使用redefine命令,可以对代码做热更新,让开发人员告别不停“加日志、部署、查日志、再加日志”的套娃时代。在Arthas刚推出没多久,还提供了一个简单的WebConsole功能,实际是一个以Websocket访问Arthas进程的方式,这也为我们后面建设在线诊断平台提供了思路。

直接使用Arthas的命令行交互方式,不能满足金融级运维要求,在落地使用上存在一些实际的问题:

我们设计了一套轻巧的架构,让开发人员以WebUI的方式,便捷、直观的使用各类在线诊断能力。那么我们是怎么做的呢?

整体架构大致分成在线诊断平台、在线诊断网关(后简称网关)、在线诊断进程三部分,通过一个网关集群统一代理对云上、云下节点的访问,网关提供Restful接口给在线诊断平台(后简称平台)调用。一个接口可能组合了多个Arthas指令,也可能对指令的执行结果进行剪裁和修改,处理成json格式数据返回给平台做展示。

整体架构图:

在线诊断平台是开发人员进行在线诊断的入口,平台通过WebUI的方式提供一站式在线诊断能力,支持复杂的交互场景。除了提供出色的用户体验,平台还解决了安装卸载、多人协作、用户鉴权、连接保持、操作审计等问题。

网关的作用,一是统一打通了到行内云上、云下环境的火墙;二是由于我们当时使用的Arthas版本还不支持Restful接口(最新版本已支持),返回报文都是文本的形式,网关侧在这里会对文本进行解析,处理成json格式的结构数据,方便平台侧做展示。归纳起来,网关的主要目的是统一代理对目标节点的访问,同时封装诊断能力,提供标准json结构数据的Restful接口给行内各平台访问。网关在封装诊断能力时,还会进行参数校验、超时管理、数据脱敏、文本处理等工作。

也就是Arthas进程,需要考虑安装、启停、版本管理、网络隔离等问题,具体做法在下一节详细介绍。

工程师第一次对目标服务器进行诊断时,涉及安装、启动、使用、卸载等一系列步骤,如下图所示:

用户点击安装后,会触发一系列操作。首先在线诊断平台发送一个探活请求给网关,网关收到请求后相应的也发送一个空指令给目标节点。平台根据响应判断,如果探活成功,则发送诊断请求开始诊断;否则发送安装请求到行内指定的管理系统(传统虚拟机/容器,后续简称通道)。

以传统虚拟机为例(如果是容器则把安装介质下发到宿主机),通道去目标服务器指定目录查找诊断程序的版本文件,如果获取成功且版本是最新的,则通道直接执行启动脚本。否则,通道会通知目标服务器从公共的文件服务器上,下载最新版本的安装介质。

安装介质实际是一个压缩包,包括安装脚本、jar、版本文件等。安装介质首次下载到目标服务器后,通道对其解压并执行启动脚本。我们修改了Arthas的启动脚本,根据用户输入的进程关键字,找到目标进程,然后使用和目标进程相同的jdk版本,启动诊断程序。注意,启动时Arthas的target-ip参数被设置为网关地址,以隔离其他渠道访问,默认值127.0.0.1表示只能本地访问。

诊断进程接收用户诊断指令,开始诊断。使用完用户可手工点击卸载,销毁诊断进程。

这里举几个例子,看一下平台的实际使用效果。

基于dashboard命令,控制面板实时展示目标进程的整体运行情况,包括线程、jvm、操作系统等,每隔10s刷新一次,用户也可选择手动刷新。线程按CPU使用率取TOP10,jvm主要展示内存分布和GC情况:

点击查询更多可以查看详情,比如监控jvm的内存及垃圾回收情况:

线程清单页面按CPU使用率分页展示所有线程,支持按线程状态(如RUNNABLE、BLOCKED)过滤,在控制面板页面点击查看更多,也可以直接跳到此页面:

点击某条记录,跳转到线程详情,展示线程堆栈,在堆栈中选中一个方法,则可以直接进行方法观测、方法追踪、方法追溯、方法监控、反编译等操作:

方法监测指的是对方法运行情况的监控和观测,具体包括下面几个功能。

支持对选中的堆栈中的方法进行观测,也就是watch命令,这里以开发环境举例(开发环境不做数据脱敏),可以实时捕获方法的输入、输出、异常堆栈、执行耗时等,并且支持指定观测次数、耗时限制等条件。比如我这里对UserServiceImpl类的findUser方法的调用情况进行观测:

当方法抛异常时展示堆栈:

方法追踪指的是追踪方法的调用栈,打印每个方法的执行耗时,基于trace命令实现,在排查性能问题时非常有用。看一下方法追踪的界面,直接高亮标记出调用栈上耗时最久的方法,也支持配置过滤规则,过滤一些不关心的方法(比如java底层代码)。在这个方法调用栈界面,又可以选中其中某个方法,进行观测、追溯、监控等操作,不同的诊断能力之间都是打通的:

有时需要追溯方法被谁调用了,则可以使用方法追溯。比如这里通过方法追溯可以看到Dubbo的Filter处理链:

当我们需要确认Java虚拟机加载的代码情况时,比如你修改的代码是否生效,我们在本地经常使用一些反编译工具以达目的。jad命令提供了在线反编译能力,我们基于jad以界面的形式展示Java虚拟机加载的实际代码,同时也会展示类加载器树、类的路径。比如这里对findUser方法的反编译情况(不指定方法名的话,则对整个类反编译),可以看到这个类属于springboot项目,被spring的类加载器加载:

我们对其他的实用命令,也做了一些封装和定制,比如sc、sm、redefine、tt等,这里就不一一介绍。此外,我们也将实时诊断能力和内部监控运维系统相整合,在排查问题时,可以通过直接跳转的方式申请在线诊断权限,对目标进程做实时诊断。下图是行内全链路跟踪产品截图,支持直接对问题链路关联的节点进行诊断:

THE END
1.在网上如何分辨平台真假?交易运营检查平台的运营状况。考察平台的运营时间、运营模式、收益情况、合规性等,正规平台通常长时间稳定运营且收益良好。 查看平台的监管情况。了解平台是否受到相关部门的批准和监管,是否持有相关牌照,是否符合相关法规,例如,查看是否有所在国家的监管机构认证,如FCA 、NFA 、ASIC 等。 https://www.163.com/dy/article/J1TLAFMP05567YWG.html
2.四招识破虚假网址链接下载打开国家反诈中心APP后,在主页面有个“风险查询”功能,可以对疑似涉诈的虚假网址链接进行查询检测。如果该虚假网址链接已经被人举报,或者已经有人因此上当受骗,该网址链接就会被国家反诈中心收录进去,发起查询之后就会有“风险提示”。通过以上四招,可以帮助我们判断一个网址链接的虚实。当然,未知链接不要轻易https://baijiahao.baidu.com/s?id=1763410925126264797&wfr=spider&for=pc
3.如何找到安全合法的羞羞漫画sss入口?避免风险的最佳选择有哪些在如今的互联网时代,在线阅读漫画已经成为了许多人日常娱乐的一部分。随着越来越多的漫画平台和网站出现,用户在选择漫画时也面临了多样化的选择。然而,对于一些偏向成人或限制级内容的漫画类型,如何找到安全且合法的观看入口便成为了一个热门话题。今天我们就来聊聊“羞羞漫画sss入口”这一关键词的相关内容,帮助大家更好http://www.xingyao365.com/xingyaomj/2113211711.html
4.帮助中心注:如果您已经登录了中国统一教育网网站,那么您可以直接使用知学爱问平台,无需再次登陆。 如何提问 一、点击“提问”,如下图: 点击上图中“提问”按钮,接下来,您进入到一个问题详细设置页面,在这里您可以输入您提问的问题。 在提问输入框中输入您的问题,例如: 输入“冬天装修应注意哪些问题?”,并点击“我要提问https://www.tongyi.com/index.php/helpp/search
5.如何安全且高效地使用永久免费软件下载平台避免潜在风险如何判断一个下载网站的可靠性 面对众多的免费下载网站,如何筛选出那些既安全又靠谱的网站是用户面临的一大难题。安全性是最重要的因素。下载平台是否提供安全的下载链接,是否存在病毒或恶意软件,这是用户需要关注的首要问题。合法性也是一个关键指标,许多免费的资源网站可能会涉及版权问题,下载非法内容可能导致不必要的麻http://www.qqpi.net/qqpimj/52525.html
6.四川省投资项目在线审批监管平台项目备案操作问答五、如何判断申报的项目是否符合《产业结构调整指导目录》 点击“声明承诺”中的“产业政策”,仔细阅读《产业结构调整指导目录》,判断拟实施项目是否符合产业政策。 六、项目备案完成后,需要到政务中心窗口领取备案凭证吗? 项目单位需要备案证明的,可以通过在线平台自行打印备案凭证,无需到政务中心窗口领取。 https://cddrc.chengdu.gov.cn/cdsfzggw/cjwt1/2024-09/05/content_e6fca45bf90d4f919d858733205ffe61.shtml
7.如何辨别网上的网站是否合法00:00/00:00 如何辨别网上的网站是否合法 樱桃霸王龙发布于:江苏省2024.11.22 17:16 +1 首赞 在网上浏览时,确保网站的合法性非常重要,以避免个人信息泄露、财产损失等风险。https://www.sohu.com/a/829381908_121978825
8.颜夕卡盟平台官网,一个值得信赖的在线服务选择吗?颜夕卡盟成立于2018年初,旨在为游戏玩家提供一个便捷、安全的虚拟商品交易平台,平台致力于通过整合资源,提供多样化的游戏辅助工具和虚拟商品,提升玩家的游戏体验。 平台目标是成为国内领先的游戏辅助和虚拟商品交易平台,通过不断创新和优化服务,赢得玩家的信任和支持。 https://blog.huochengrm.cn/zmt/16250.html
9.如何验证某个string是否为合法的GUID?在线判断是否guid假如有一个string字符串,请问如何判断它是合法的GUID还是一个普通的数字型字符串, 是否可以用包含字母进行区分? 回答区 Can Gencer: 判断是否有字母的方式是不靠谱的,比如说:FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF它是一个有效的 GUID,而00000000-0000-0000-0000-000000000000也是一个有效的GUID。 https://blog.csdn.net/mzl87/article/details/121156065
10.QQ秒赞神器!免费平台助你社交互动飙升,旨在传达一个提供QQ秒赞QQ 免费秒赞业务网站平台是一种为用户提供免费快速点赞服务的在线平台,它通常针对 QQ 空间的说说、日志、相册等动态内容,用户只需在该平台上提交自己的 QQ 号码或相关动态链接,即可在短时间内获得大量的点赞,这类平台往往宣称能够快速提升用户的社交影响力和人气。 http://p21.bgtrn.cn/post/32407.html
11.怎样判断用户是否在线跨境电商杂货铺1.写后台线程,心跳机制等判断用户是否在线。 2.利用session 每次用户登录会产生一个session 因为考虑到一台电脑多个浏览器之间session不共享也就是可能会形成这样一个概念,你的同一个用户名在服务器中打开了两个不同版本的浏览器因此保存了2个session,也就造成了不准确的因素 https://www.cnblogs.com/panxuejun/p/5958871.html
12.如何安全地获取“国产精品视频秘A9入口”并确保视频质量这种资源一般通过搜索引擎或一些社交平台上的分享信息来传播。例如,一些论坛、微信群、或是特定的内容网站,用户在这些平台上可能会找到相关的信息。值得注意的是,获取这些信息时要确保来源的合法性和安全性,以免受到不必要的安全威胁。 如何判断一个视频资源的质量?http://www.haodankeji.com/haodankeji4/954503ecf.html
13.网络医疗平台有哪些怎么判断在线医疗平台是否正规→MAIGOO知识二、怎么判断在线医疗平台是否正规 在线医疗市场也不能说是清泉一洼,如何分辨靠谱的在线医学平台也确实是门学问,在真假信息混杂的互联网上,学会判断在线医疗平台的正规性是很重要的: 1、科学理性的看待疾病,在科学研究的语言系统里,很少使用绝对化的表达方式,所以,当我们看到某个在线医疗平台宣传某种疾病治疗方法特别有https://m.maigoo.com/goomai/239982.html
14.KS直播间人气自助下单,第一卡盟排行榜揭示真相,旨在吸引读者关注“钻石卡盟”这两个词汇背后隐藏着一个破坏行业生态的灰色产业链,一些不良商家打着帮助主播提升人气、增加粉丝量的旗号,通过虚假手段制造繁荣景象,严重扰乱了市场秩序,本文将深入探讨这一现象,特别是针对快手(KS)平台的直播间人气在线下单服务及其与第一卡盟排行榜的关系,分析其运作机制、优势、风险以及如何安全有效地http://yacn2x.www.geunion.com.cn/post/17150.html
15.用户协议和隐私声明(15)涉嫌拖欠/未按法律规定支付薪资/劳务报酬的,或涉嫌具有其他可能损害劳动者或劳务人员合法权益的。(涉及农民工或涉众的均属于“情节严重”)本平台有权对前述情形进行处置,相关判断方式包括但不限于因上述行为被列入相关政府部门“黑名单”、被多名用户举报投诉或被新闻媒体曝光等情形 http://www.dianjiang99.com/declare/declare.html
16.如何判断企业微信是否在线?腾讯云开发者社区企业微信已成为很多企业首选的移动办公工具,能够很好地运营客户,而且很多企业管理者会根据员工企业微信的在线状态来判断员工是否长时间未响应客户。 前言 企业微信已经成为很多企业首选的移动办公工具,而且企业微信的运营功能更受企业青睐,可以帮助企业更好地运营客户。很多企业要求员工每天到公司的第一件事就是登录企业微信https://cloud.tencent.com/developer/news/960300
17.羞羞漫画免费阅读网站入口在哪?如何才能找到安全又好用的免费漫画尽管免费漫画网站可以让你省去一些费用,但我们也要注意支持正版,尊重原创。通过选择合适的漫画平台,不仅能避免版权问题,还能促进漫画产业的健康发展。 总的来说,找到一个既安全又免费且合法的羞羞漫画平台并不容易,但只要我们掌握了一些判断标准,选对了平台,就能轻松享受丰富的漫画内容,避免潜在的风险和法律纠纷。http://www.chinassw.org/zszx/23927.html