0

I want to implement a monitoring system in a small organization. I have experience with Zabbix, but I'm considering Prometheus as it seems there's a big community behind it, and it's pretty much the standard today (please correct me if I'm wrong).

However, I wonder how it is convenient to handle all the configuration of the scrapes and alerting rules in configuration files, rather in a web UI like in Zabbix. I mean, it may be ok for 10-20 alerts, but how can it be manageable with 20 different services and 1000 different alerts, for example? Maybe there's a solution for it that I just missed? In Zabbix it's very convenient to manage everything, since it's UI and also everything is going into groups (host groups, templates, etc.)

I'd appreciate your insights.

roeezab
  • 19
  • 3

2 Answers2

0

Prometheus is a compelling solution that -- deservedly -- has considerable momentum. For completeness, I urge you to consider other changes that may required by Prometheus as you determine whether it's appropriate for you to switch from your existing solution. This will be one of many changes for which you should be prepared.

I don't know why Prometheus' developers took the path that they did with configuration but I'll give you one benefit of the model. By requiring that configuration is written in (YAML) configuration files, you are able to commit these configurations to your source control and manage changes to these files just as you would with other sources. This is a tenet of "Infrastructure as code" and there are many benefits to this.

Now, it's also true that a UI Console tool could write changes to configuration files for you and you could then manage these files using source control as before. But, this functionality isn't available in the core solution.

One facility that may interest you is that you needn't restart prometheus nor alertmananger when you make changes to their configuration. You can change the configuration and then, POST to the services' /-/reload endpoint and the service will refresh configuration.

See:

https://prometheus.io/docs/prometheus/latest/configuration/configuration/ https://prometheus.io/docs/alerting/configuration/

Also see this useful article that explains how to have Prometheus automatically refresh its configuration when changes are made to a list of targets:

https://www.robustperception.io/using-json-file-service-discovery-with-prometheus

DazWilkin
  • 32,823
  • 5
  • 47
  • 88
  • Thanks for your answer. "Infrastructure as code" is great and I'm going this path in other tools like Ansible and Terraform, but there are some tools that I think it's ok to consider as "blackbox" and just backup their configuration routinely in traditional manners, rather than source control. Anyway, going this path of configuration files, I think that one of the basic features should be the ability to separate the configuration into multiple files with imports and includes, to avoid one huge configuration file. – roeezab Mar 22 '19 at 07:36
  • It just seems that some features in Prometheus were designed for monitoring a very small system. Another thing that I find hard to manage is searching in all the metrics. In Graphite, for example, you have a tree for that. In AWS CloudWatch, you have namespaces and it's very easy to start looking for metrics for your service. It's a shame, because Prometheus could be a great monitoring tool, but lacks very basic features to support large systems monitoring. – roeezab Mar 22 '19 at 07:39
-1

Zabbix and Prometheus are both powerful monitoring tools. Zabbix is based on host so everything organized on host. You can navigate from hostgroup to host, then navigate from host to metric,alert,dashboard and so on. The web UI of Zabbix is straightforward and easy to learn and use.

Prometheus is base on metric. The advantage of Prometheus is very flexible. Everything is defined in a configure file in YAML format, such as scrape config, alerting rule config and so on. This is very convenient for teams who follow Observability as Code workflow.

So is there a tool that brings a web UI to Prometheus? Users could manage alerting rules and dashboards in a simple way using webUI. I recommend an easy way to manage prometheus in WebUI using Nightingale project. A typical screenshot may looks like as bellow:

vicla
  • 1
  • 2