【复盘】记一次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)

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

相关推荐
coderWangbuer1 小时前
基于springboot的高校招生系统(含源码+sql+视频导入教程+文档+PPT)
spring boot·后端·sql
攸攸太上1 小时前
JMeter学习
java·后端·学习·jmeter·微服务
Kenny.志1 小时前
2、Spring Boot 3.x 集成 Feign
java·spring boot·后端
sky丶Mamba2 小时前
Spring Boot中获取application.yml中属性的几种方式
java·spring boot·后端
feng_xiaoshi2 小时前
【云原生】云原生架构的反模式
云原生·架构
千里码aicood3 小时前
【2025】springboot教学评价管理系统(源码+文档+调试+答疑)
java·spring boot·后端·教学管理系统
程序员-珍3 小时前
使用openapi生成前端请求文件报错 ‘Token “Integer“ does not exist.‘
java·前端·spring boot·后端·restful·个人开发
liuxin334455663 小时前
教育技术革新:SpringBoot在线教育系统开发
数据库·spring boot·后端
数字扫地僧4 小时前
HBase与Hive、Spark的集成应用案例
后端
架构师吕师傅4 小时前
性能优化实战(三):缓存为王-面向缓存的设计
后端·微服务·架构