在线诊断平台

本文探讨了Arthas在金融级运维中的局限,着重介绍了如何通过设计WebUI诊断平台解决信息安全、学习成本、多人协作等问题,包括用户鉴权、资源管理和在线审计。平台分为在线诊断平台、网关和进程,通过Restful接口提供安全、高效的服务。
摘要由CSDN通过智能技术生成

面临问题

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

  1. 信息安全问题
    Arthas 可以通过命令行方式,直接观测方法的入参、返回值,这就涉及到一些客户敏感信息,直接在生产环境使用命令行操作显然是不合适的。
  2. 学习成本问题
    工具的安装使用存在极大的学习成本。
  3. 多人协作问题
    当多个开发者对同一个目标进程诊断时,可能存在线程、代码、数据等的冲突及安全问题。
  4. 资源占用问题
    Arthas 进程会占用一定的系统资源(如内存、CPU),应该在排查问题时使用,而不应该当作常规监控工具一直运行。
  5. 环境不统一问题
    在不同的 Java 虚拟机实现安装和使用 Arthas,会碰到问题。
    另一方面,生产节点规模庞大,网络访问权限严格,想远程连接目标进程,涉及到权限开通、版本管理、安装程序下发等问题。

解决方案

设计一套轻巧的架构,让开发人员以 Web UI 的方式,便捷、直观的使用各类在线诊断能力。
整体架构大致分成在线诊断平台、在线诊断网关、在线诊断进程三部分,网关起到承上启下的作用,提供 Restful 接口供平台调用,并返回 json 格式数据供平台展示,一个接口可能组合了多个 Arthas 指令实现一个具体的功能。

在线诊断平台

在线诊断平台实现功能包括:
安装卸载:根据用户在平台输入目标节点和进程信息,实现诊断程序的安装和卸载,具体将在下一节介绍。
多人协作:当多个用户同时诊断同一个进程时,对于存在冲突的功能,平台通过分布式锁实现互斥,保障同一时刻只有一个用户能使用,当然这么做的前提是平台在功能设计时考虑原子性。另外,当一个用户试图关闭一个其他用户正在使用的连接时,也会被拒绝。
用户鉴权:建立审批和黑白名单机制,基于 RBAC 模型,同时联动 CMDB,对操作人员的权限进行严格管控,普通开发者需要被授权才可使用,各类诊断功能的使用权限也和用户角色挂钩,权限控制强度从生产环境到开发环境逐渐减弱。
连接保持:Arthas 一些命令比如 dashboard,提供了实时监控目标进程整体运行情况的功能,默认每 5 秒刷新一次。对于这样的功能,平台的前端通过 websocket 与后端保持连接,后端内存中维护了一个目标对象和已连接用户的对照关系,如果多个用户同时监控某个目标对象,后端每次只会定时发送一次请求给网关。这么做的好处,是在保证了实时监控的同时,节约连接资源,避免了多人访问时,到目标服务器的不必要的重复连接。此外,为了防止用户忘记卸载诊断进程,对照关系也会同步到配置中心,当内存中某个目标对象对应的用户全部下线时,会触发一次检查,如果发现配置中心中的用户也已经全部下线,平台会自动发送 shutdown 请求给网关,卸载诊断进程。
操作审计:通过切面的方式,对用户的各类操作进行记录和存储,达到审计的目的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值