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

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

相关推荐
kebijuelun9 小时前
OpenAI 最新开源模型 gpt-oss 架构与训练解析
人工智能·gpt·语言模型·架构
绝无仅有9 小时前
面试真实经历某商银行大厂Java问题和答案总结(七)
后端·面试·github
●VON9 小时前
重生之我在大学自学鸿蒙开发第七天-《AI语音朗读》
学习·华为·云原生·架构·harmonyos
绝无仅有9 小时前
面试真实经历某商银行大厂缓存Redis问题和答案总结(一)
后端·面试·github
IT_陈寒10 小时前
Python性能翻倍的5个冷门技巧:从GIL逃逸到内存视图的实战优化指南
前端·人工智能·后端
程序员爱钓鱼10 小时前
Python编程实战 · 基础入门篇 | 第一个Python程序:Hello World
后端·python·编程语言
fakerth10 小时前
【OpenHarmony】存储管理服务模块架构
架构·操作系统·openharmony
陈大鱼头10 小时前
摸鱼搭子知乎你怎么了?访问抛出的 525 错误码是什么啊?
运维·后端·http
失散1311 小时前
分布式专题——46 ElasticSearch高级查询语法Query DSL实战
java·分布式·elasticsearch·架构