Zabbix 被淘汰了吗
Zabbix 是一个开源的监控系统,它的历史比较悠久,从 2001 年开始就有了,到现在已经有 20 多年的历史了。在这 20 多年的时间里,Zabbix 也经历了很多版本迭代,功能也越来越丰富,但是在这个监控领域,新的监控系统层出不穷,Zabbix 还有存在的价值吗?或者直白的讲,Zabbix 被淘汰了吗?
笔者近期认真研究了一下 Zabbix 的设计,直接抛结论:
- 如果你的动手能力较强,并且没有 aix 等小机监控需求,Zabbix 可以被替掉。
- 如果你不想投入太多精力放在监控、可观测性的构建上,使用 Zabbix 监控网络设备,是一个不错的、投入脑细胞较少的选择。
- 除了网络设备之外,中间件、数据库、Kubernetes、微服务等的监控,建议使用 Prometheus 生态的开源项目。
- 这样会导致构建多套监控系统,Zabbix、Prometheus、甚至还有各类云监控,告警事件 OnCall 变成了一个大问题。可以使用 PagerDuty、FlashDuty 之类的商业产品解决。
Zabbix 的优势
Zabbix 发展了 20 多年,功能丰富,设计完整,很多细节都考虑到了。国内很多所谓的商业监控产品,其实都是基于 Zabbix 做的二次开发。
从数据采集角度,Zabbix 可以监控 Linux、Windows、BSD、AIX 等各种操作系统,要想在这方面淘汰 Zabbix,有点难度,因为很多新的监控系统都是使用 Go 编写的,甚至都无法跑在 AIX 上。不过好消息是,现在大部分企业的 OS 已经趋于统一,基本都是清一色的 Linux,个别的企业仍然在用 Windows,使用 AIX 的企业已经很少,是一个典型的存量市场。
从使用角度,Zabbix 的界面虽然不够现代,但是功能齐全,很多监控系统都是从 Zabbix 的界面上学习的。Zabbix 的配置也是比较复杂的,但是配置好之后,基本上不用管了,稳定性也是 Zabbix 的优势之一。Zabbix 使用模板机制来大幅降低配置的复杂度,这个机制也是很多监控系统学习的对象。
分享一个笔者现阶段的认知:
一个 ToB 的软件产品,更强调功能丰富性、灵活性,不能像 C 端产品那样,追求傻瓜化,当然了,ToB 产品也尽量希望傻瓜化,因为可以降低用户使用门槛嘛。典型的手段有两个:一个是采用模板机制,提前内置一些最佳实践,让用户直接使用;另一个是默认只暴露基础功能,高级功能需要用户打开才能使用。
Zabbix 的告警机制也很完备,如何管理各类通知媒介、如何管理不同用户的联系方式、如何关联告警规则和通知机制,设计的都很完整,甚至支持告警认领确认和升级。只是 Zabbix 不支持告警降噪,这点不知道是故意为之,还是人力问题尚未开发。
Zabbix 的劣势
Zabbix 最大的优势是发展的时间久,完成度极高,功能丰富稳定。但也恰恰是因为发展时间久,导致历史包袱较重,很多设计已经过时,不符合现代监控的要求。典型的有两点:
数据结构僵化
Zabbix 的监控数据,就是用 Host + Key 来唯一标识,这种方式在之前是没问题的,但是随着微服务、Kubernetes 等新技术的普及,这种方式就显得有点僵化了。尤其是想要多维度聚合计算的时候,就会非常痛苦;由于 Kubernetes 的动态性,Zabbix 资产式的管理方式也很难应对。
比如我有一个服务,提供 100 个 HTTP 接口,这些接口都要收集响应时间、QPS、Error 量等监控指标。这些监控指标通常需要附加各类维度信息,比如 region、service、method、env、status、code 等等,用户经常要针对这些维度进行聚合计算,Zabbix 就显得有点捉襟见肘了。
数据存储压力大
2001 年的时候,时序库尚未流行,即便是 OpenTSDB、InfluxDB 等老一辈时序库,那个时候也尚未问世。Zabbix 的数据存储自然就选用 RDBMS 了,可以使用 MySQL 或 Postgres,但是随着技术发展,收集的指标越来越多,有些公司每秒收集几千万指标,关系型数据库是完全无法搞定这样的用例场景的。
而 Zabbix 的整个产品设计严重依赖其底层存储的 Schema,要想换掉底层存储,谈何容易。这也是 Zabbix 的劣势之一。
Zabbix 的未来
坦白讲,笔者觉得 Zabbix 的未来并不明亮。也无需伤怀,每个软件都有自己的生命周期。Zabbix 在网络设备监控方面还是非常强大的,在易用性方面无出其右。但是随着云计算的发展,这毕竟是一个存量市场,Zabbix 的市场空间会越来越小。当然,短期几年甚至十几年,Zabbix 仍然可以活得很好。
重新回答刚开始的问题:Zabbix 被淘汰了吗?答案是:还没有,但是在一些方面已经被淘汰了。典型的是微服务和 Kubernetes 监控。实际上各类中间件、数据库的监控,也极少使用 Zabbix 了,虽然 Zabbix 推出了 agent2,但是在这些领域,Prometheus 生态已经占据了主导地位。
为何网络设备监控方向,Zabbix 难以被替代,是因为 Zabbix 的功能完整性和各类网络设备模板,这是 Zabbix 多年的积累,是它的护城河。Prometheus 生态的开源软件,不可能做到 Zabbix 在这方面的使用体验,当然,基于 Prometheus 生态的一些商业产品,可能会做到。