Prometheus 和 Zabbix 有什么区别?

What's the difference between Prometheus and Zabbix?

Prometheus and Zabbix有什么区别?

Zabbix 是用 C 语言编写的,PHP。比较经典的监控。

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

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

那样编辑文件

这是一篇关于普罗米修斯的德文文章:Prometheus für das Cloud- und Enterprise-Monitoring

Zabbix 从机器的角度思考问题,因此您只能从这些角度思考问题。可以根据简单的数学来触发警报。

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

Evolving from Machines to Services 详细解释了基于机器和基于服务的监控之间的区别。

Zabbix 和 Prometheus 都可以用在各种监控场景中,并没有什么特别的专业。 Zabbix 比 Prometheus 更老,可能更稳定,有更多现成的解决方案。

Zabbix 有一个用 C 编写的核心和一个基于 PHP 的 Web UI。它还使用用 C 编写的“代理”(client-side programs)。 Prometheus 是用 Go 语言编写的。

Zabbix 在 RDBMS (MySQL, PostgreSQL, Oracle, or SQLite) of the user's choice. Prometheus uses its own database embedded into the backend process (it is a non-relational database specially designed for storing monitoring data in a similar fashion to OpenTSDB 的数据模型中存储数据。

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

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

Prometheus 需要使用 Prometheus 客户端库(以不同的编程语言提供)对应用程序进行检测,以准备指标。但是对于无法检测的系统或软件的监控,官方有"blackbox exporter" that allows probing endpoints over a range of protocols; additionally, a wide spread of third-party "exporters" and tools are available to help expose metrics for Prometheus (similar to "agents" for Zabbix). One such tool is Telegraf.

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

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

Zabbix 提供了自己的网络 UI 用于可视化。 Prometheus 提供了一个基本工具,用于探索收集的数据并在其本机服务器上以简单的图形将其可视化,还提供了一个最小的仪表板构建器。但是 Prometheus 是并且被设计为由 Grafana.

等现代可视化工具支持

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