Monitoring is a problem that has been solved in many different ways for many different levels of stack. Let's take a look at different demographics of monitoring:
- Availability monitoring (up/down monitoring)
- Performance monitoring (time series—CPU, memory, utilization, and so on)
In the infrastructure side of things, availability monitoring and performance monitoring are both used, but the application side is a little heavy on the performance monitoring as the availability of the application is monitored on the infrastructure level itself by the load balancers and the likes.
The following diagram shows the different protocols that are generally used in monitoring systems of different types: