What's the difference between Prometheus and Zabbix?

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.


Zabbix thinks in terms of machines, so you're limited to thinking about things in those terms. Alerts can be triggered based on simple math.

Prometheus doesn't have that restriction, you're free to think in terms of services or datacenters. Alerts can be triggered by any valid expression, such as the average latency is too high or disks will fill up in 4 hours.

https://blog.raintank.io/evolving-from-machines-to-services/ explains more the difference between machine based and service based monitoring.


Zabbix is written in C and PHP, it's more classic-monitoring.

Prometheus is written in Go, it's recommended for Cloud, SaaS/openstack monitoring.

BUT you can use both, Prometheus is faster because of the database zabbix has a smaller footprint(because its written in c). Zabbix you can most things in the webgui .. in prometheus you must edit files like Nagios.

UPDATE: here is a german article about Prometheus: http://www.linux-magazin.de/Ausgaben/2016/03/Prometheus