开源监控软件 Zabbix 和 Nagios 究竟哪个更好?Zabbix 可视化更好?Nagios 更轻量?作为产品经理程默的一名默默无闻的小粉丝,觉得很有义务把他的回答编辑整理出来让大家看到。下面是程默在知乎上的回答,经本人同意转载。
首先,提醒一下大家。下面的内容,有可能会被认为是广告,因为我推荐的是我自己做的一款产品:Cloud Insight. 但是,在对比 Zabbix 和 Nagios 的时候,我觉得有些东西还是值得拿出来讨论一下的。第一个就是上文 Wenx 提到的:没有更好,只有更适合吧。是否需要使用 Zabbix 或者 Nagios 都是可以拿出来讨论讨论的。在人员不够、经验不足、时间很紧的情况下,有必要使用 Zabbix 或 Nagios 这样很重的解决方案吗?Zabbix 和 Nagios 相继出现在 1998 年和 1999 年,经过历史的发展和迭代,以及社区中很多程序员的贡献,已经发展得很强大了。我们 OneAPM 公司初期也是使用 Zabbix 来做所有云主机和物理主机的监控。但是后期遇到了很多大的麻烦:
- 用 Zabbix 和 Nagios 真的很依赖运维工程师的实际水平和 Docker Mesos 这些新技术的支持。
- 需要自己去找脚本来试验,真的很麻烦。
- 数据是只读的,运维工程师真的就只是看看,出啥问题了,最后还是重启,甚至需要从腾讯云换到阿里云等等这种麻烦的手段。
既然监控是为了解决实际的问题,如果想要找到自己最适合的运维监控工具,我推荐一些还在观望 Zabbix 和 Nagios 的初创团队,可以试一试 Cloud Insight。
All in One
这个概念就像 esty 当年发布 statsd 写的文章一样:Measure Anything, Measure Everything。系统监控工具如果能够做到 All in One,那真的可以解决人力和时间成本上的问题。说到这个就得提提 statsd。statsd 是 Flickr 公司首创,后来由 Esty 公司重构的一个轻量级的指标采集模块。也就是说操作系统、不同数据库、不同的中间件 ,都可以通过它来采集指标,并且上传至 Graphite 这些用于可视化 & 存储的组件中。不了解的人,可以读读 Measure Anything, Measure Everything。现在很多公司都开始使用了这样的工具,来搭建自己的运维监控系统了。国外也出现了基于 statsd 的公司:Boundary Datadog 等等。以下是他们的网址:
国外这些公司就是为了提供一个一体化的解决方案:
如何集成不同的操作系统、数据库、中间件监控的问题,你不需要担心,用就行了。
数据只读和数据管理
就像上文提到的,数据只读是 Zabbix 一个比较大的痛点:根本发现不了什么问题。所以国内的淘宝、小米都开始使用时间序列数据库,来解决这个事情;
- 淘宝使用 OpenTSDB 案例:OpenTSDB监控系统的研究和介绍
- 小米开源项目:Open-Falcon|互联网企业级监控系统
能够对数据对切片、聚合,并且使用一些数值计算,能够更快地解决问题。拿 Docker 来说,不同的 Container 的 CPU 消耗,这个需求就很常见。标签信息在时间序列数据库中的作用,就是为了解决这个需求。那么计算是什么意思呢?相信动态门限的告警、对某些数值浮动较小的数值求 log 这些需求在实际运维场景中也是很常见的。
而这些时间序列数据库都可以帮你做到。
Cloud Insight
Cloud Insight 就是国内利用 statsd 和 OpenTSDB 实现的一个一体化的解决方案(免费但不开源)。楼主提出这个问题, 我猜想是公司内部有人对于 Zabbix 和 Nagios 不是很熟悉,不知道前方有什么坑。 那么,在人员的经验不足的前提下,也没有时间去试错。所以建议使用下 Cloud Insight 进行快速试错,也看看新的技术发展是否能够更好地满足自己的需求。最后是上几张产品截图:
总的来说,不建议创业团队或者初创公司,在人员不足的情况下,使用 Zabbix 和 Nagios(成本实在太高)。倒是可以使用国外的这种方法:
轻量级的探针采集数据(Statsd)+ 时间序列数据库(运算)+ 展现端(Grafanna)
或者使用 Cloud Insight,来解决。
开源监控软件越来越在互联网技术领域占据重要位置,开源监控软件之间的战争也早已打响,如果还在观望究竟 Zabbix 和 Nagios 哪个更好,并且对这件事犹豫不决一筹莫展,不妨眼观六路,了解一下国内的淘宝、小米都开始使用时间序列数据库监控方法,尝试一下 OpenTSDB、Open-Falcon 或者学习成本和使用成本都很低,功能却很强大的新产品 Cloud Insight 也未尝不可。