Operations and DevOps · 5 min
Product observability: what to monitor before the business finds the issue
A practical observability plan for web and internal systems: metrics, logs, traces, alerts, recovery and ownership.
Start with the critical journey
Do not measure every path equally. Identify actions whose failure affects revenue or operations: sign-in, order, payment, request, sync or document release.
Set an expected time, error tolerance and owner for each journey.
Use three observability layers
Metrics show the size of a problem, logs explain the event and traces connect a request across services. Together they shorten the path from “slow” to a root cause.
Capture operation and correlation IDs while keeping unnecessary personal data out of logs.
An alert must lead to an action
A signal without a runbook becomes noise. Define a threshold, channel, owner and first check for every alert: rollback, failover or queue recovery.
Separate warnings from incidents so an overnight page means real user risk.
Recovery is part of monitoring
A backup does not prove recovery. Test restore time, required secrets and the user experience during degradation.
After an incident, update the runbook and add the measurement that would reveal a repeat earlier.
Monitoring starts with the critical user journey
Do not measure every endpoint equally. Choose operations tied to money or work: sign-in, order, payment, sync and document release. Define expected latency, tolerance and owner for each.
Connect signals to business context with operation IDs and clear metric names. Queue age matters because requests stop being processed on time.
An alert must lead to an action
Every signal needs a threshold, channel, owner and first check. If a notification opens dozens of charts with no runbook, it becomes noise.
Separate warning, degradation and incident. An overnight page should represent real user risk.
Recovery is tested before the incident
Run controlled failures: stop a worker, disable a dependency, fill a queue or restore a backup in a test environment. Measure detection, recovery and data loss.
After every incident, update the runbook and add the measurement that would have exposed the issue earlier.
Metrics should answer a business question
Replace a gallery of charts with questions: are requests being accepted, how long does confirmation take and is a queue growing faster than it is processed? Pick one primary metric and a few diagnostics for each.
A threshold without context is noise. Compare it with normal range, time of day and traffic volume before paging anyone.
Logs and traces connect the layers
Carry one operation ID through HTTP, queues, workers and database writes. An incident can then be followed from a user action to a specific dependency.
Never log personal data or tokens. Format, levels and retention belong in the operating standard.
Test alerts like a product
Ask another engineer to follow one notification runbook. If action or ownership is unclear, the signal is not ready.
Remove unused alerts and revisit thresholds after architecture changes. Observability should reduce noise instead of collecting it.
Observability should answer a business question
Connect a technical signal to impact: requests are blocked, payments wait or employees cannot see a document. Context helps prioritize instead of producing attractive graphs without action.
Define a normal range, threshold and owner for each metric. If nobody knows what to do after an alert, it is not operational yet.
Availability is not the same as usefulness
A service can return 200 while saving a wrong state or stale inventory. Add synthetic checks for critical journeys and business-result reconciliation.
Keep signals safe by masking personal data and limiting trace access.
SLO connects a technical target to a promise
Set availability, latency and error tolerance for each critical journey. This clarifies whether to page someone at night or create a backlog item. Without an SLO teams debate graphs instead of user impact.
Monitor queue age, not only queue length
Background work can have a short queue while the oldest message waits for hours. Age shows that the business is already waiting even when the service responds quickly. Add an alert and safe redelivery procedure.
Verify that alerts actually arrive
A test signal should use the same route as a real incident. Review rotations, permissions and owners regularly. An untested pager creates a dangerous illusion of readiness.