【复盘】记一次jumpserver web终端不显示资产问题心路历程

很早就想专门写一个专栏来聊聊关于运维如何troubleshooting。后来转念一想其实本来就没有天下第一的武功哪来普世的解决方法。加之我从业时间也不算太长。故就不聊方法论层次的(自我觉得层次不够)。那这个专栏就聊聊遇到问题时我本人如何解决的这个角度谈谈我个人主观的想法。

故障起因

因为IDC机器问题,需要将jumpserver主服务器下线迁移到其他机架上。我们jumpserver采用容器部署做了主从备份因此可以保证jumpserver不会因为宕机导致 jumpserver服务器无法登录的死循环问题。这点其实在现实很有意义,而且应该作为平时故障切换的演练项目。避免因为基础设施导致最近阿里云和滴滴出现P0事故。

故障详情以及处理过程

bash 复制代码
jms_core
jms_nginx
jms_koko
jms_redis
jms_guacamonle 

我们jumpserver一共有上述5个容器构成。迁移后遇到第一个问题是mysql数据库未启动导致jumpserver无法连接数据库。在重新启动数据库后解决。

数据库启动后登录正常但是在web终端页面资产无法显示。

我的第一反应是 jms_koko组件异常导致,因为koko组件是负责终端这块功能的(我的推测无法确定)。docker logs -f jms_koko --tail=100 查看koko可以看到如下报错。

上述报错让我不得不怀疑koko组件异常 我猜测是因为容器都是同一时间启动在koko启动时core组件未启动就绪导致连接异常(一般现代程序都有重试机制这种情况很少见)。因此我又重启了一次koko组件但还是异常。还排查了域名问题发现都是正常解析的。以及配置文件报错问题。后续又一直在浏览器F12查看接口调用也都只status 200(也正是这200迷惑了我)。

于是上bing寻求寻找答案,正好在jumpserver 官方github中找到了类似的问题(链接如下)。issue中提到了获取资产列表的接口是/api/perms/v1/user/my/asset-groups-assets/ issue中提到nginx配置错误会导致上述问题。我在核对了一遍nginx配置后排除这个异常。因为本次迁移不涉及版本更新和ip变动因此这种可能性很小。

web终端不显示资产 · Issue #1264 · jumpserver/jumpserver (github.com)

于是我进一步排查上述提到的接口/api/perms/v1/user/my/asset-groups-assets/ 发现虽然状态码是200但并未获取到任何数据。于是打开浏览器console控制台发现如下报错

通过查询异常 net::ERR_CONTENT_LENGTH_MISMATCH 200 (OK)定位到是nginx proxy_tmp权限异常导致的。在修改之前目录权限为700 属主为root属组为app 因为nginx是app用户启动所以导致缓存失效。想起上次也遇到过类似问题 递归修改属主属组为app即可。这里排错参考了掘友-三苗同学-的文章

浏览器报错 net::ERR_CONTENT_LENGTH_MISMATCH 200 (OK) 解决办法 - 掘金 (juejin.cn)

授权后故障排除资产可以正常显示

相关推荐
Lei活在当下1 小时前
【Perfetto从入门到精通】3. Linux(Android)底层内存管理机制概述
性能优化·架构·监控
Tony Bai2 小时前
“我曾想付钱给 Google 去工作”—— Russ Cox 深度访谈:Go 的诞生、演进与未来
开发语言·后端·golang
serendipity_hky3 小时前
【SpringCloud | 第2篇】OpenFeign远程调用
java·后端·spring·spring cloud·openfeign
嘟嘟MD3 小时前
程序员副业 | 2025年11月复盘
后端·创业
SadSunset3 小时前
(15)抽象工厂模式(了解)
java·笔记·后端·spring·抽象工厂模式
汝生淮南吾在北3 小时前
SpringBoot+Vue养老院管理系统
vue.js·spring boot·后端·毕业设计·毕设
国科安芯3 小时前
国产RISC-V架构MCU在工控系统中的节能性分析
网络·单片机·嵌入式硬件·fpga开发·性能优化·架构·risc-v
李慕婉学姐4 小时前
【开题答辩过程】以《基于springboot的地铁综合服务管理系统的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·spring boot·后端
期待のcode4 小时前
Springboot配置属性绑定
java·spring boot·后端
海上彼尚4 小时前
Go之路 - 6.go的指针
开发语言·后端·golang