Monitoring provides feedback from the production environment. Monitoring provides information about an application’s performance and usage patterns.One goal of monitoring is to achieve high availability by minimizing key metrics measured in terms of time:
When performance or other problems occur, detailed diagnostic data about the problems is sent to development teams through automatic monitoring. It’s time to detect (TTD).
DevOps teams act on the information to mitigate problems as quickly as possible so that users are no longer interested. This is the time to mitigate (TTM).
Resolution times are measured and teams work to improve over time. After mitigation, teams work on correcting root cause problems so they don’t repeat themselves. It’s time to correct (TTR).
A second goal of monitoring is to enable validated learning by monitoring usage. The main concept of validated learning is that each distribution is an opportunity to keep track of the experimental results that support or diminish the assumptions that led to the distribution.
Tracking usage and version differences allows teams to measure the impact of changes and make business decisions. If a guess is reduced, the team can quickly fail or pivot. If the hypothesis is supported, the team can double down or persevere. These data-informed decisions lead to new assumptions and backlog prioritization.
Telemetry is the mechanism for collecting data from monitoring. Telemetry data can use agents installed in the deployment environments, a marker-based SDK embedded in the source code, server registration, or a combination of these. Typically, telemetry distinguishes between the optimized data pipeline for real-time alerts and the higher-volume dashboards and data needed for troubleshooting or usage analysis.
Synthetic monitoring uses a consistent set of transactions to evaluate performance and availability. Synthetic transactions are predictable tests that have the advantage of allowing comparisons between versions in a highly predictable way.
Real user tracking, on the other hand, indicates the measurement of the experience from the user’s browser, mobile device, or desktop and represents last kilometer conditions, such as cellular network, internet routing, and caching. Unlike synthetics, IT DOES NOT GENERALLY provide repeatable measurements over time.
Monitoring is often used for testing in the production environment. A well-monitored deployment streams health and performance data so the team can immediately spot production incidents.
Combined with a continuous deployment version pipeline, the monitoring will detect new anomalies and allow for timely mitigation. This allows for the detection of unknowns in application behavior that cannot be predicted in pre-production environments.
Effective monitoring is essential to enable DevOps teams to quickly deliver, get feedback from production, and increase customer satisfaction, acquisition, and retention.Learn how to set up and use Application Insights to monitor.