We operate a SAAS business, and we have hundreds of processes which can roam from server to server. They are .net processes which can be created (started) on any one of a bank of machines, run for a period of time (typically weeks), and then be migrated to another machine.
These processes have many different time-series outputs (which are broadcast using RabbitMQ) and we have our own bespoke system for monitoring the application processes.
We have a variety of monitoring tools (for example LogicMonitor) but we're starting using Zabbix for server monitoring.
It makes sense to me that we put all time-series data from all sources (switches, servers, hosts, VM's, applications) into one place because then we can compare the server wide data (for example CPU load, memory load).
I'm considering using Zabbix for this.
I can see that Zabbix supports sending time-series data using the https://www.zabbix.com/documentation/3.0/manual/concepts/sender. So I know I can get data into it.
I'm struggling to understand how to setup Zabbix for this given Zabbix is server centric, with keys for each time-series data. But, I expect this is a common scenario but I'm new to Zabbix.
I imagine a hierarchy along the following lines:
DataCenter (1 of n) -> Rack (1 of n) keys (eg power used) -> Physical Machine (1 of n) "The hosts" keys (eg CPU, Memory, Network Bandwidth) -> VM (1 of n) keys (eg CPU, Memory, Network Bandwidth) -> Application keys (eg CPU, Memory, Network Bandwidth, Jobs per second etc)
Is this something Zabbix supports? I thought about perhaps using a naming convention for the host or keys but it feels like I'm doing something wrong.