做运维这些年,最头疼的就是 ESXi 环境的监控 —— 要么用官方工具太笨重,要么第三方软件要收费,想找个轻量又好用的,最好可以API链接到任何第三方web界面,翻遍全网都没合心意的。

后来干脆咬咬牙:自己写一个!前后捣鼓了 2 个多月,虽然现在还很不完美,从数据采集到界面展示一点点抠细节,现在终于能勉强用了。冰冻三尺非一日之寒,今天把这套系统开源出来,希望能帮到和我一样有痛点的运维同学。

先说说我为啥要自己写这个系统?

之前管 ESXi 的时候,总遇到各种不方便:

想看看几台主机的 CPU、内存情况,得打开 vCenter 一个个点;虚拟机突然挂了,要等业务反馈才知道;有时候存储快满了,没提前预警,差点影响业务……

市面上的工具要么功能太复杂,一堆用不上的按钮;要么要付费,小公司舍不得;还有的需要在主机上装代理,怕影响稳定性。

干脆自己动手,按运维日常的使用习惯来设计 —— 不用复杂配置,部署好就能用,想看的信息一眼能找到。

这系统能帮你解决哪些问题?

虽然是自己写的,但核心功能一点没少,日常运维需要的场景基本都覆盖到了。

1. 所有 ESXi 状态,一个界面全看完

打开系统首页,最上面的面板能看到整体情况:有多少台 ESXi 主机在运行,多少台虚拟机正常,有没有警告或者错误。不用再切换多个页面,扫一眼就知道环境稳不稳定。

下面分了好几个模块,每台 ESXi 主机单独做成卡片,能看到它的 CPU 用了多少、内存剩多少,还有上面跑了多少台虚拟机。虚拟机状态用小色块标着,绿色就是正常,黄色要留意,红色就得赶紧看问题。

2. 有异常会主动提醒,不用一直盯着

之前总怕错过故障,现在系统会自己抓异常:CPU 超了阈值、存储空间不够、虚拟机突然关了,都会在告警模块列出来,还会写清楚是哪台主机、什么问题,甚至给点处理建议。

我自己加了企业微信推送,只要有告警,手机就能收到消息,不用一直守在电脑前。

3. 性能趋势能回溯,找问题不盲目

有时候业务反馈卡,想看看是不是 ESXi 资源不够,之前得手动查日志。现在系统里有性能图表,能看 24 小时、7 天甚至 30 天的 CPU、内存变化,还有存储和网络的流量趋势。

对着图表一看,就知道是不是某个时间段负载突然上去了,方便定位问题原因。

4. 大屏模式很实用,监控中心能直接用

我们运维室有块大屏幕,之前找的工具在大屏上显示效果不好,字太小看不清。这次特意加了大屏模式,点一下按钮,界面会自动调整,字体变大,模块间距也拉开,远距离看很清楚,适合挂在监控中心。

自己写的时候,踩了哪些坑?

从 0 到 1 做这个系统,中间也走了不少弯路。

一开始想用电报机器人推送告警,试了几次总不稳定,后来换成企业微信,对接起来反而简单,消息也能及时收到。

数据采集这块,刚开始用了个第三方库,总有些主机信息拿不到,后来换成 VMware 官方的 SDK,兼容性好多了,而且不用在 ESXi 上装任何东西,远程就能获取数据,不影响主机性能。

存储数据的时候,一开始全存在 MySQL 里,后来发现查历史趋势特别慢,又加了个时序数据库,专门存监控数据,现在查几个月的趋势也很快。

界面设计也是改了又改,一开始模块堆得太多,看起来乱,后来按 “重要程度” 排序,常用的放上面,不常用的折叠起来,用着才顺手。

怎么获取这个开源系统?

现在把代码整理好了,放在 GitHub 上(地址在文末),部署起来不算复杂,我写了文档,跟着步骤走,二开能力的很快就能搭好。

需要的环境也不高,普通的服务器就行,内存 4G 以上,硬盘有个 50G 空闲空间,系统用 Ubuntu 或者 CentOS8 都可以。

部署的时候,用 Docker 启动数据库,后端是 Python 写的,前端直接放 Nginx 里,不用复杂的配置,新手也能搞定。

为什么要开源?

做这个系统的时候,网上参考了不少开源项目,现在自己做出来了,也想分享给大家。

如果有运维同学用着觉得不方便,或者想加新功能,欢迎提建议,咱们一起完善。要是能帮到更多人,少走点我之前的弯路,这事儿就挺有意义的。

最后,放一下项目地址:【GitHub 链接】(实际使用时替换为真实地址),里面有完整的代码、部署文档和使用说明。

如果遇到问题,或者有好的想法,随时在TG群里交流,看到都会回复。希望这个小工具能帮到大家,让 ESXi 监控能简单点~

github项目地址:https://github.com/qinshihu/ESXI-Monitoring-System.git