%%
date:: [[2022-02-08]], [[2021-07-12]], [[2021-07-07]], [[2021-02-23]], [[2022-07-17]], [[2022-07-18]], [[2023-04-25]], [[2023-11-26]], [[2023-11-27]], [[2024-07-11]]
%%
# [[Monitoring]]
Monitoring is the process of continuously tracking the behaviour of a system using quantifiable information ([[Telemetry]]). Monitoring is one type of activity that improves the overall [[Observability]] of a system.
## [[Reasons for monitoring]]
## Types of monitoring
### By objects
#### Backend monitoring
Backend monitoring consists of gathering information about the underlying infrastructure of a system. Often, backend information is called [[Telemetry]], and consists of the following signals:
- [[Metrics]]
- [[Logs]]
- [[Traces]]
- [[Continuous Profiling]] (of [[CPU Utilization]] and [[Memory Utilization]])
#### Frontend monitoring
Frontend monitoring involves gathering information about application interfaces, including how users interact with them and how elements are rendered on end user devices.
- [[Real User Monitoring]]
- [[Synthetic monitoring]]
### By telemetry collection method
A key concern in monitoring is how to collect and aggregate data for later analysis, which can be especially complicated in [[Microservices|microservices-based]] architectures where there are potentially many targets to collect data from. There are two main ways to do this: pull-based and push-based monitoring.
#### [[Push-based monitoring]]
Push-based monitoring involves targets explicitly sending information to a central data store.
#### [[Pull-based monitoring]]
Pull-based monitoring, sometimes called passive monitoring, involves the central data store scraping information from targets at specified intervals.
[[Push-based monitoring vs. pull-based monitoring]]
### By approach
#### [[Black-box monitoring]]
#### [[White-box monitoring]]
### How to get information to monitor
- [[Instrumentation]] involves getting the component to expose the information you want.
- [[Manual monitoring]]
- Manual monitoring is more ad hoc. Instead of information being automatically collected and saved, manual monitoring involves explicitly querying information when it's needed.
### [[Aggregating monitoring data]]
### [[Observability Tools]]
## See also
- [[Schrödinger's Pokémon - Observability for chaotic load testing]]