Solución:
Tanto Zabbix como Prometheus pueden usarse en varios escenarios de monitoreo, sin especialización particular en ninguno de estos. Zabbix es más antiguo que Prometheus y probablemente más estable, con más soluciones listas para usar.
Zabbix tiene un núcleo escrito en C y webUI basado en PHP, también usa “agentes” (programas del lado del cliente) escritos en C. Prometheus está escrito en lenguaje Go.
Zabbix almacena datos en RDBMS (MySQL, PostgreSQL, Oracle, sqlite) de la elección del usuario. Prometheus utiliza su propia base de datos integrada en el proceso de backend (es una base de datos no relacional especialmente diseñada para almacenar datos de monitoreo de manera similar al modelo de datos de OpenTSDB).
Zabbix usa por defecto el modelo “pull” cuando un servidor se conecta a los agentes en cada máquina de monitoreo, los agentes recopilan periódicamente la información y la envían a un servidor. La alternativa es el modo de “comprobaciones activas” cuando los agentes establecen conexión con un servidor y le envían datos cuando lo necesitan. Prometheus prefiere el modelo “pull” cuando un servidor recopila información de las máquinas cliente. Pero Prometheus Push Gateway se puede utilizar en casos en los que se necesita un modelo “push”.
Prometheus requiere que una aplicación esté instrumentada con la biblioteca cliente de Prometheus (disponible en diferentes lenguajes de programación) para preparar métricas. Pero para monitorear un sistema o software que no se puede instrumentar, existe un “exportador de caja negra” oficial que permite sondear terminales en una variedad de protocolos; Además, una amplia variedad de “exportadores” y herramientas de terceros están disponibles para ayudar a exponer las métricas de Prometheus (similares a los “agentes” de Zabbix). Una de esas herramientas es telegraf (https://github.com/influxdata/telegraf).
Zabbix utiliza su propio protocolo de comunicación basado en tcp entre agentes y un servidor. Prometheus usa HTTP con búferes de protocolo (+ formato de texto para facilitar su uso con curl).
Zabbix ofrece su propia interfaz de usuario web para visualización. Prometheus ofrece una herramienta básica para explorar los datos recopilados y visualizarlos en gráficos simples en su servidor nativo y también ofrece un generador de tablero mínimo. Pero Prometheus está y está diseñado para ser compatible con herramientas de visualización modernas como Grafana.
Zabbix tiene soporte para alertas en su núcleo. Prometheus ofrece una solución para alertas que está separada de su núcleo en la aplicación Alertmanager.
Zabbix piensa en términos de máquinas, por lo que está limitado a pensar en las cosas en esos términos. Las alertas se pueden activar basándose en cálculos matemáticos simples.
Prometheus no tiene esa restricción, puede pensar en términos de servicios o centros de datos. Las alertas se pueden activar con cualquier expresión válida, como la latencia promedio es demasiado alta o los discos se llenarán en 4 horas.
https://blog.raintank.io/evolving-from-machines-to-services/ explica más la diferencia entre el monitoreo basado en máquinas y el basado en servicios.
Zabbix está escrito en C y PHP, es un monitoreo más clásico.
Prometheus está escrito en Go, se recomienda para monitoreo en la nube, SaaS / openstack.
PERO puede usar ambos, Prometheus es más rápido debido a que la base de datos zabbix tiene una huella más pequeña (porque está escrito en c). Zabbix puede la mayoría de las cosas en el webgui .. en prometheus debe editar archivos como Nagios.
ACTUALIZAR:
aquí hay un artículo en alemán sobre Prometheus: http://www.linux-magazin.de/Ausgaben/2016/03/Prometheus