What are the differences between Prometheus and Zabbix?
Zabbix is written in C and PHP. It's more classic-monitoring.
Prometheus is written in Go, and it's recommended for Cloud, SaaS/OpenStack monitoring.
But you can use both. Prometheus is faster because of the database and Zabbix has a smaller footprint (because it’s written in C). In Zabbix you can do most things in the web GUI, but in Prometheus you must edit files like in Nagios.
Here is a German article about Prometheus: Prometheus für das Cloud- und Enterprise-Monitoring
Both Zabbix and Prometheus may be used in various monitoring scenarios, and there isn't any particular specialization in either of these. Zabbix is older than Prometheus and probably more stable, with more ready-to-use solutions.
Zabbix has a core written in C and a web UI based on PHP. Also it uses "agents" (client-side programs) written in C. Prometheus is written in the Go language.
Zabbix stores data in an 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's data model).
Zabbix by default uses a "pull" model when a server connects to agents on each monitoring machine, and agents periodically gather the information and send it to a server. The alternative is "active checks" mode when agents establish a connection with a server and send data to it when it need.
Prometheus uses a "pull" model when a server gathers information from client machines. But Prometheus Push Gateway may be used in cases when a "push" model is needed.
Prometheus requires an application to be instrumented with the 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.
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 web UI for visualization. Prometheus offers a 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 a solution for alerting that is separated from its core into the 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, and 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 four hours.
Evolving from Machines to Services explains more about 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, and it's recommended for Cloud, SaaS/OpenStack monitoring.
But you can use both. Prometheus is faster because of the database and Zabbix has a smaller footprint (because it’s written in C). In Zabbix you can do most things in the web GUI, but in Prometheus you must edit files like in Nagios.
Here is a German article about Prometheus: Prometheus für das Cloud- und Enterprise-Monitoring
© 2022 - 2024 — McMap. All rights reserved.