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