What's the difference between Prometheus and Zabbix?

The One picture The One · Feb 10, 2016 · Viewed 45.6k times · Source

Just as the title said, can you tell me the differences between Prometheus and Zabbix?

Answer

Alexander I.Grafov picture Alexander I.Grafov · Apr 7, 2016

Both Zabbix and Prometheus may be used in various monitoring scenarios, no particular specialization in either of these. Zabbix is older than Prometheus and probably more stable, with more ready-to-use solutions.

Zabbix has core written in C and webUI based on PHP, also it uses "agents" (client-side programs) written in C. Prometheus is written in Go language.

Zabbix stores data in RDBMS (MySQL, PostgreSQL, Oracle, sqlite) of user's choice. Prometheus uses its own database embedded into backend process (it is a non-relational database specially designed for storing monitoring data in a similar fashion to OpenTSDB's data model).

Zabbix by default uses "pull" model when a server connects to agents on each monitoring machine, agents periodically gather the info and send it to a server. Alternative is "active checks" mode when agents establish connection with a server and send data to it when it need. Prometheus prefers "pull" model when a server gather info from client machines. But Prometheus Push Gateway may be used in cases when "push" model is needed.

Prometheus requires an application to be instrumented with Prometheus client library (available in different programming languages) for preparing metrics. But for monitoring a system or software that can't be instrumented, there is an official "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 (https://github.com/influxdata/telegraf).

Zabbix uses its own tcp-based communication protocol between agents and a server. Prometheus uses HTTP with protocol buffers (+ text format for ease of use with curl).

Zabbix offers its own webUI for visualization. Prometheus offers basic tool for exploring gathered data and visualizing it in simple graphs on its native server and also offers a minimal dashboard builder. But Prometheus is and is designed to be supported by modern visualizing tools like Grafana.

Zabbix has support for alerting in its core. Prometheus offers solution for alerting that is separated from its core into Alertmanager application.