I'd recommend taking a look at Prometheus[1]. It has its own _very_ performant TSDB, there's exporters for just about everything, it's the defacto way that things like Kubernetes expose metrics, and it has first class support in Grafana for visualization.
We POC'd Zabbix, Icinga, ScienceLogic, Instana, Sensu, and Prometheus. Prometheus was our favorite. Take a look at the comparison between it and other popular monitoring products to see if it fits your needs though [2].
[1] https://github.com/prometheus/prometheus [2] https://prometheus.io/docs/introduction/comparison/
When I first started using it, it was pretty early and had some issues. In fact, I nearly trashed it. I also didn't like the pull vs. push model from Prometheus. They ended up resolving the InfluxDB issues I was having right as I was about to give up on it, and it's been solid since. I use it with Grafana to generate graphs of system use. I set it up before TICK was a thing.
https://github.com/VictoriaMetrics/VictoriaMetrics/wiki/FAQ
("How does VictoriaMetrics compare to InfluxDB?")
[1] https://medium.com/@valyala/insert-benchmarks-with-inch-infl...
[2] https://medium.com/@valyala/promql-tutorial-for-beginners-9a...
[3] https://github.com/VictoriaMetrics/VictoriaMetrics/wiki/Sing...
That said it does some really cool stuff like tree walking across all the HP switches on our network, auto monitoring all ports it finds and then reporting on their stats and on any UP/DOWN states for every port.
Good for detecting unauthorized usage or a device which is rebooting itself.
Its IPMI support is also pretty good, we had it monitoring Supermicro IPMI interfaces with zero issue.
It handles vSphere and auto scans the entire cluster, adding all guests and monitoring them without needing to install an agent on every VM.
All in all a very good solution with some very cool features, but a steep learning curve and not much help on their forums although the docs are pretty good.
Nagios is not great, but it’s reliable and when it breaks you can figure it out.
That said, I'm not very familiar with the alternatives.
If you're happy with Icinga2, stick with that. I've used that too at a previous gig and found it better that Zabbix, but my personal take on it. YMMV
One feature I particularly like is the zabbix_send command, which I use to push the status of shell-scripted Borg backup jobs into Zabbix.
If better visuals are needed, I would hook it up to Grafana. I have previously used Grafana with Graphite as backend but it was too unreliable. If it actually works with Zabbix then it could be the perfect match.