%% 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]]