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

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

相关推荐
ajsbxi2 分钟前
苍穹外卖学习记录
java·笔记·后端·学习·nginx·spring·servlet
颜淡慕潇1 小时前
【K8S问题系列 |1 】Kubernetes 中 NodePort 类型的 Service 无法访问【已解决】
后端·云原生·容器·kubernetes·问题解决
尘浮生2 小时前
Java项目实战II基于Spring Boot的光影视频平台(开发文档+数据库+源码)
java·开发语言·数据库·spring boot·后端·maven·intellij-idea
尚学教辅学习资料2 小时前
基于SpringBoot的医药管理系统+LW示例参考
java·spring boot·后端·java毕业设计·医药管理
monkey_meng3 小时前
【Rust中的迭代器】
开发语言·后端·rust
余衫马3 小时前
Rust-Trait 特征编程
开发语言·后端·rust
monkey_meng3 小时前
【Rust中多线程同步机制】
开发语言·redis·后端·rust
W Y3 小时前
【架构-37】Spark和Flink
架构·flink·spark
Gemini19953 小时前
分布式和微服务的区别
分布式·微服务·架构
paopaokaka_luck8 小时前
【360】基于springboot的志愿服务管理系统
java·spring boot·后端·spring·毕业设计