34

PrometheusZabbix有什么区别?

4

3 回答 3

79

Zabbix 和 Prometheus 都可以在各种监控场景中使用,并且在这两者中都没有任何特定的专业化。Zabbix 比 Prometheus 更老,可能更稳定,有更多现成的解决方案。

Zabbix 有一个用 C 编写的核心和一个基于 PHP 的 Web UI。它还使用用 C 编写的“代理”(客户端程序)。Prometheus 是用 Go 语言编写的。

Zabbix 将数据存储在用户选择的RDBMS(MySQL、PostgreSQL、Oracle 或SQLite)中。Prometheus 使用嵌入到后端进程中的自己的数据库(它是一个非关系型数据库,专门用于以类似于 OpenTSDB 的数据模型的方式存储监控数据

当服务器连接到每台监控机器上的代理时,Zabbix 默认使用“拉”模型,代理会定期收集信息并将其发送到服务器。当代理与服务器建立连接并在需要时向其发送数据时,另一种选择是“主动检查”模式。

当服务器从客户端机器收集信息时,Prometheus 更喜欢“拉”模型。但是在需要“推送”模型的情况下,可以使用Prometheus 推送网关。

Prometheus 需要使用 Prometheus 客户端库(以不同的编程语言提供)检测应用程序以准备指标。但是对于监控无法检测的系统或软件,有一个官方的“黑盒导出器”允许通过一系列协议探测端点;此外,还有大量第三方“导出器”和工具可用于帮助公开 Prometheus 的指标(类似于Zabbix 的“代理”)。Telegraf就是这样一种工具。

Zabbix 在代理和服务器之间使用自己的基于TCP的通信协议。

Prometheus 使用 HTTP 和Protocol Buffers(+ 文本格式以便于 curl 使用)。

Zabbix 提供了自己的可视化 Web UI。Prometheus 提供了一个基本工具,用于探索收集的数据并在其本机服务器上以简单的图表将其可视化,还提供了一个最小的仪表板构建器。但是 Prometheus 是并且旨在得到Grafana等现代可视化工具的支持。

Zabbix 的核心支持警报。Prometheus 提供了一种警报解决方案,该解决方案从其核心分离到Alertmanager应用程序中。

于 2016-04-07T13:26:15.463 回答
21

Zabbix 是从机器的角度思考的,所以你只能用这些术语来思考问题。可以基于简单的数学触发警报。

Prometheus 没有这种限制,您可以自由地考虑服务或数据中心。任何有效的表达式都可以触发警报,例如平均延迟太高或磁盘将在四小时内填满。

从机器发展到服务更多地解释了基于机器和基于服务的监控之间的区别。

于 2016-02-11T11:31:53.747 回答
13

Zabbix 是用 C 和 PHP 编写的。这是更经典的监控。

Prometheus 是用 Go 编写的,推荐用于云、SaaS / OpenStack监控。

但是你可以同时使用两者。由于数据库,Prometheus 更快,而 Zabbix 占用空间更小(因为它是用 C 编写的)。在 Zabbix 中,您可以在 Web GUI 中完成大部分操作,但在 Prometheus 中,您必须像在Nagios中那样编辑文件。

这是一篇关于 Prometheus 的德语文章:Prometheus für das Cloud- und Enterprise-Monitoring

于 2016-02-10T13:22:04.880 回答