背景
当你成为公有云的一名管理员,权限和安全之间的权衡便成为了始终萦绕在我们身边的一个话题。每天在我们专心解决问题,或者 code 的时候,一会儿有人来找你:能不能帮我们看看××× 机器所在的 NAT 网关带宽多大呀?目前使用量是什么情况呀?一会儿有人问:我们在做业务升级,帮我们关注下 LB 的流量情况呀?我们现在 S3 的增长趋势是什么样子的呀?
方案调研
崩溃一秒钟,这种没有“含金量”的事情,怎么能浪费我们的时间呢?毕竟程序员的使命是要拯救地球的,再不济也得做一个优秀的产品。可是,问题来了。机器的监控好做,可以装 Agent、Zabbix、Open-Falcon 等。这些东西怎么监控呢?而且公有云有很多:什么 AWS、Azure 、阿里云、金山云等,自己重新开发一个监控系统么?
额,这个工作量有点大。干活当然得选最简单,高效,又合理的方案啦,哈哈。
小米内部都是用 Open-Falcon 做监控。Open-Falcon 的 GitHub 地址:
https://github.com/open-falcon
Open-Falcon 是基于 Go 开发的一款快速上手、高可用的监控系统,支持自定义 Dashboard 报警,可以用来监控机器各方面指标,还可以自定义插件,上报数据,获取自己想要的信息。
Open-Falcon 是小米早期的开源工具,星星多,社区活跃,还支持插件。恩,显示、存储、画图表、保持数据有序,都交给 TA 了。方案已定,写个 Open-Falcon 插件。
架构设计
说了这么久,先上架构图:
需要支持的云:
(1)AWS
(2)阿里云
(3)金山云
监控的资源范围:
(1)ELB
(2)EIP
(3)NAT 网关
(4)专线
每个资源都取哪些监控指标呢?当然全部取啦!控制台有啥就取啥。
具体指标信息和含义请自行参照官网:
金山云:https://docs.ksyun.com/documents/42
阿里云:https://help.aliyun.com/product/28572.html?spm=a2c4g.750001.list.212.49707b13EZbdDR
AWS:https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CW_Support_For_AWS.html
代码思路:
通过读取配置文件,获取资源类型、监控指标、地区信息和账号信息;
获取相应资源的所有列表;
获取列表的相关监控信息;
生成 Open-Falcon 识别的格式数据,推送到 Open-Falcon。
使用指北
该工具已经作为 Open-Falcon 的插件开源,开源地址:
https://github.com/open-falcon/cloud-mon
具体实现代码以及参考文档可以去 github 查看。
首先把代码 clone 下来,按照你们的实际情况配置文件,就可以使用啦。
配置文件实例:
cloud 下面是一个 list,可以写的很长很长,想配什么配什么。下面是各项参数说明:
至此,小工具分享完啦,希望帮助大家提高效率。
本文转载自公众号“小米运维” (ID: MI-SRE):https://mp.weixin.qq.com/s/IN6MjUesBkuk90tLfpadpA
评论