一、为什么要进行巡检

  1. 当前平台架构复杂,中间件繁多,组件之间耦合度高,微服务还未达到故障自愈水平,所以需要通过告警或巡检等手段发现问题来保障平台持续稳定运行。
  2. 当前有客户对平台及上层应用使用频率低,例如三四天登录查看一次数据,但是设备是正常运转的,一旦平台出现问题,刚好客户发现问题,运维 才去解决就为时已晚。
  3. 定期巡检方案是模拟人工登录各业务页面,而非接口调用,更能真实地发现问题,并通过截图真实保留平台运行状态。
  4. Prometheus平台的监控报警功能还未覆盖到整个业务系统,部分问题还未能实时监控到,导致平台出现异常后而无法感知。
  5. 当前并不能保证客户环境的Prometheus平台本身不存在问题,针对这种不确定性,定期巡检是一个保障平台稳定性的方案,实现平台双保障。
  6. 部分客户环境不能够连接外网,Prometheus的监控告警信息无法同步到微信、飞书等,但可以通过定期巡检方案来保障平台稳定运行。

由于以上原因,为了保证SLA,必须进行定期巡检。

二、巡检检查项

2.1 服务器基础信息

cpu 利用率
磁盘利用率
内存利用率
服务器时间同步
日常数据备份文件检查

2.2 k8s集群状态

证书过期检查
API通信是否正常
各名称空间下的pod运行状态
ceph共享存储是否正常

2.3 业务状态

业务平台登录是否正常
kafka是否积压
kafka消费速率

三、实现方式

前期:前期巡检同事登录各客户环境进行人工手动巡检(登录VPN、连接跳板机、登录业务平台、登录grafana平台等等)一些列操作下来,一轮巡检工作大约在2-3hours。

目前:通过自动化的方式(shell+python+web框架flask)实现了,人工在windows跳板机上、Linux服务器中的模拟人工操作连接VPN、登录业务平台、登录grafana平台等一系列操作,定期定时将巡检任务结果发送至企业微信群内;从单人单次巡检的2-3小时,直接提效到了5-10min,极大程度上提高了日常巡检的工作效率。


那么,在客户环境数量达到一定体量时,群消息接收也会造成巡检遗漏的情况,在这种情况下需要一个集中化的平台作为展示,于是将巡检结果发送到群内的同时也会将消息格式化(注:图片是通过Python截图生成后将其转换为base64编码,然后将其他巡检结果内容格式化为json后post到web后端,再在web前端进行展示)

Detail: 通过点击后弹出整个巡检过程以及结果信息;

Screenshoot: 通过点击后将会弹出base64编码转换为图片的业务平台及grafana截图

最后,巡检人员只需要定期浏览此汇总展示平台即可!

(人工操作是基础,自动化操作才是王道😀 )

技术点

  • Python自动化
  • Selenium爬虫技术(网页内容获取)
  • Windows端UI自动化(用于自动启动VPN程序,并填写账号密码后进行登录操作)
  • Flask前后端开发(平台展示,内容接收入库)
  • 企业微信机器人Webhook集成