文章目录
[隐藏]

1 简介

上周线上的一台运行CAS的虚拟机磁盘满了,导致统一身份认证系统发生故障,问题虽小,但影响范围比较大,教训是深刻的。越发感觉云平台后期运维是多么的重要,建设与之配套的自动化运维平台的对在线业务的实时监控、智能告警具有重要的意义。

2 脚本

由于运维平台尚未建立,这里临时提供一个简单脚本,实现获取Linux虚拟机的CPU、Mem、磁盘等使用量统计。

首先准备一个虚拟机IP列表的hosts文件,这里是从个人数据库中拉取虚拟机IPs,也可以写个简单的Python脚本从Nova的数据库中拉取:get_vm_ips.py

执行下,获取虚拟机浮动IP

生成的hosts.txt内容如下:

设置当前节点到所有VM的SSH。

然后利用SSH远程执行iostat、free和df命令获取CPU、Mem、磁盘等使用率信息,设定磁盘使用率阈值(比如60%),超出阈值进行告警,一个在终端下运行的简单的脚本如下:

效果如下:

此外,为了方便浏览,这里将当前监控结果临时保存,并更新到apache服务器的默认页面中,这里增加了<br>、<font>等格式化输出,通过IP直接可以简单浏览监控信息,脚本如下monitor_vm_infos.sh:

然后起一个定时任务,自定义监控频率,就可以很方便的拿到监控信息了。

浏览器访问,效果如下:

另外,这里的告警仅仅是红颜色的警告提示,如果想及时告警,可以触发一个邮件通知事件,具体可以参考之前的博客:Linux服务器配置邮件提醒 或 Python发送邮件 。

3 讨论

这里实现比较简单,虽然可以快速获取信息,但缺点也比较明显:

  • windows系列的虚拟机无法获取响应信息
  • SSH登录执行命令缓慢
  • 文本处理不够健壮:ubuntu系统命令输出信息可能不一致
  • 功能比较单一

后面尝试通过构建功能丰富的自动化运维平台实现云平台的高效运维。