场景:
- 背景一
- 在一个欢快假期中的夜深人静的享受着各自属于自己夜生活的时候。突然,电话响了!公司的领导让你马上处理线上系统问题。
- 此时此刻,你的脸可能是这样的。 (ΩДΩ) o((⊙﹏⊙))o
- 灵魂三问在你的脑海里回响着。
- 我是谁?
- 哪个系统出问题了?
- 我该怎么办?
- 背景二
- 在一个欢快假期中的夜深人静的享受着各自属于自己夜生活的时候。突然,电话响了!N个业务人员告诉你,系统无法操作了,点什么都没反应。
- 此时此刻,你的脸可能是这样的。 ┓(;´_`)┏
- 开始忙碌起来了。
- 收集物证
- 接听各自电话
- 向上反馈
- 默默安慰用户与等待处理。
- 背景三
- 在一个欢快假期中的夜深人静的享受着各自属于自己夜生活的时候。突然,企业微信响了,异常聊天群里面满满的都是运维人员反馈的各种异常问题。
- 此时此刻,你的脸可能是这样的。(>﹏<) 不~
- 开始忙碌起来了。
- 联系项目负责人
- 联系技术负责人
- 联系 1 或 N个 服务负责人
- 联系1 或者 N 个开发
- 联系 1 或 N个 服务负责人
- 联系技术负责人
- 联系技术负责人
- 联系 1 或 N个 服务负责人
- 联系1 或者 N 个开发
- 联系 1 或 N个 服务负责人
- 开始协调各自资源与默默等待处理。
- 联系项目负责人
- 场景回到 背景一。
问题:
- 问题是我们都是知道用户操作的系统出了问题了,但是不知道是系统哪里出了问题。
- 从开始异常到各自通知沟通,再到研发开发开始定位问题,时间已经过去了很久。
- 核心问题点是
- 异常自动感知,不需要等待用户反馈。
- 研发人员可以快速定位问题。
- 为什么是快速定位问题?
- 绝大部分的服务都不是新上线的服务,是经过严格测试与实际运行的。代码逻辑错误的可能性是最低的。
- 为什么是快速定位问题?
如何解决问题:
- 从上诉来看,我们定位了问题的核心点。
- 服务异常感知,我们有各自的监控方案并且也在逐步完善与整合。但是目前缺少一个从服务自身为维度,进行检查的监控方案。
- 服务定期自检,反馈是否正常
- 提高研发人员定位问题的速度
- 复盘我们出现问题,研发人员需要做哪些步骤,做哪些处理。优化简化流程。
- 不光研发可以定位处理问题,在常见情况下,其他人员也可以定位问题。
- 出现问题的情况收集,当看到异常感知报错的信息后,对比异常消息,直接定位到异常问题。进行针对解决。
- 服务异常感知,我们有各自的监控方案并且也在逐步完善与整合。但是目前缺少一个从服务自身为维度,进行检查的监控方案。
解决方案
整体思维导图
介绍
- 报错通知
- DB
- DB
- Hystrix
问题排查
- hystrix
- 日志
动态日志级别调整
- 使用场景
- 线上问题排查。
- 使用方式
- 直接调整单个运行的节点的日志级别获取更详细的日志信息。
- 使用效果
- 无需重启服务即可打印详细日志。
- 单节点调整,不会影响其他节点。
历史状态日志
- 查看一定时间内的微服务状态信息
- 上线下情况
- 访问情况
- 异常情况及其详细信息
- 状态变化时间点
实际案例
- 微服务执行对应数据库测试语句失败。
- 监控页面微服务对应颜色从绿色变成红色。
- 触发企业微信通知
- 相关人员获知微服务出现的异常情况与原因
- 解决问题
- 可以通过异常信息直接判断异常原因
- 直接进行相关处理。
- 通过异常信息无法判断异常原因
- 直接访问该微服务的异常节点查看相关日志。
- 可以通过异常信息直接判断异常原因
低版本问题
- 低版本的配置中心会每次检查都会访问一次配置中心数据
- 解决方案
- 升级为部门标准版本
- 高版本优化
- 加入缓存
- 解决方案