这两天,家里这边下雨,所以早晨大概7:30才睁眼,然后溜了一眼手机,几百个报警。掏出笔记本,远程办公室中控机,一片红。我嘞个去,俺两只爪子都颤了。
连上平台一看,没有续费,大爷的。三天自动给停了,后来发现,财务这块预警之前留的是以前同事的。
赶紧摇人,没起床呢。赶紧通知领导以及重点客户。
骑了个电驴子去了公司。路上两个领导也打了电话,大概沟通了一下。财务也在紧急前往公司路上。
到了公司,先安排打款。但是过了几分钟没有到账,原来还是需要人工10:00到了工位确认。领导等不及,你5万,他10万的先用信用卡凑够了怼上了。
先关闭长连接上线分配服务。避免对后端服务器造成压力。
打开列表,开始逐步恢复,从mariadb、redis、rabbitmq、zookeeper、fastdfs、opentsdb、zookeeper等逐步恢复,也包括容器集群的3台master。中间遇到了有的数据库居然无法登录,有的把vip地址加到了堡垒机里面等错误。
然后恢复容器集群:
marathon-lb:居然没有了容器镜像,幸好当时有镜像导入到一个节点的本地,使用docker save加载,然后拷贝到另外一台机器用同样的方式加载。然后重启marathon-lb。
discoveryserver:这个就比较操蛋了,容器镜像也可以下载,也显示启动,但是里面就是没有instance。卡了将近1个小时,最后临时把instance数量由1调整为2,先暂时用着。
其他服务:同样,还是通过调整instance数量加倍,暂时先跑起来。
打开长连接分配服务,开始上线。几十万的设备上线过程中,大概停了2次,把redis的exporter进程搞挂了。好在大概20分钟左右,全部服务重启完毕。
服务启动完成,物联网设备连接成功后,有些用户无法登录,等其他问题。发现,还是有些服务没有起来,但是容器集群dcos判定起来了。于是,还是将数量增加1倍先跑起来。
整个恢复过程大概从9:40到12:40,持续3个小时。
到15:40左右,有些服务大概是回过味儿来了,已经把没有的instance给回收掉了。
总结,本次由于运维的我没有尽到责任,包括
- 云平台余额告警信息没有修改已离职人员的
- 日常巡检没有巡检到等
后续
增加电话告警
少不了内部批斗。然后一个研发大牛建议针对重点告警开通电话告警功能。
搜索了一圈,采用https://push.spug.cc的电话告警是可以的。
点击https://push.spug.cc/library/4,点击使用模版。
勾选短信和电话
分别调整短信和电话设置,
添加三个手机号的电话和短信设置,
保存后,复制链接
复制链接到夜莺的回调,
调用uapi增加余额不足2000告警
#!/bin/env python3
# -*- coding: utf-8 -*-
"""
Homepage: https://github.com/ucloud/ucloud-sdk-python3
Examples: https://github.com/ucloud/ucloud-sdk-python3/tree/master/examples
Document: https://docs.ucloud.cn/opensdk-python/README
Filename: /opt/categraf/conf/input.exec/ucloud_zcyun_jifei.py
"""
from ucloud.core import exc
from ucloud.client import Client
import json
def main():
client = Client({
"public_key": "xxx",
"private_key": "xxx",
"base_url": "https://api.ucloud.cn"
})
try:
resp = client.ubill().get_balance({
})
except exc.UCloudException as e:
print(e)
else:
#print(resp)
return resp
if __name__ == '__main__':
data = main()
# 解析JSON数据
account_info = data['AccountInfo']
# 定义固定的前缀和项目标签
prefix = "ucloud"
project_label = 'project="zcyun"'
# 遍历AccountInfo中的每个字段并输出
for key, value in account_info.items():
print(f"{prefix}{{ {project_label}, name=\"{key}\"}} {value}")
#!/bin/bash
#Filename: /opt/categraf/conf/input.exec/ucloud_zcyun_jifei.sh
/opt/categraf/conf/input.exec/ucloud_zcyun_jifei.py 2>/dev/null