Trace a symptom to the service behind it.
We build monitoring around the application behavior that people depend on, then use the measurements to investigate errors, delay and capacity problems.
Illustrative signal, not live service data.
Start at the service boundary
An endpoint can respond slowly while its individual hosts look healthy. We identify the requests or background jobs that matter to the application, then choose measurements for their duration, failure rate and throughput.
For a web service, that may mean separate views for interactive requests and long-running exports. Combining both in one latency chart can make a routine export look like a problem with the interactive service. The labels and sampling need to preserve a useful distinction.
Use each kind of evidence for its job
- Metrics
- Show how a quantity changes across requests or time. Useful measures include request duration, queue age, errors and resource saturation.
- Traces
- Follow a sampled request through application components and dependency calls. They can locate where time was spent when a service slowed down.
- Logs
- Explain individual events and failures. Structured fields can connect an event to a request or deployment without recording unnecessary sensitive content.
A queue length does not tell you how old the work is
A queue can stay short because new jobs finish quickly while one job keeps failing. Track the age of the oldest outstanding work alongside arrival rate, completion rate and failed attempts. That helps distinguish a growing backlog from a small group that cannot make progress.
A retry creates another attempt, not another completed business operation. Where the application exposes identifiers safely, retain enough correlation to follow the original job through its attempts without putting customer data into routine monitoring.
Keep a request identifier useful
A trace becomes more useful when a relevant log event can be connected to it. The application can carry a request or trace identifier through supported calls and include that identifier in structured logs. Missing propagation leaves gaps between components.
Background jobs need care: the original web request may have ended long before the job finishes. Record enough context to connect the job to the initiating event without treating its whole duration as interactive response time. Avoid putting customer content or credentials into those identifiers.
Alerts need an investigation path
We configure alerts around agreed service conditions and connect them to the relevant diagnostic views. A notification should identify the affected service and the period of the problem. An alert for an urgent failure needs different routing from a capacity trend that can wait for normal working hours.
For incident investigation, we compare the timing of deployments, traffic changes and dependency behavior with the observed symptoms. Findings can lead to a configuration change, additional instrumentation or an application task. A monitoring assignment does not imply round-the-clock incident cover.
Read saturation beside duration
A latency increase and a full connection pool can occur in the same interval. Compare the measurements at a useful resolution and inspect affected request groups. A correlation narrows the investigation; it does not establish which event caused the other.
We can add the missing instrumentation or adjust the views used by the team. The assignment should identify the service questions the measurements need to answer, including how failures and abandoned requests are counted.
Choose what to retain
Logs and traces can contain customer data, request parameters or credentials if collected indiscriminately. We agree useful fields, redaction and retention settings with the client. Sampling and storage volume are part of that design.
Read latency beyond the averageKeep the investigation reproducible
Record the endpoint or job type, the observed interval and the release or environment involved. Preserve the relevant query or measurement definition so another engineer can inspect the same group of requests.
If the available evidence cannot distinguish two explanations, name the next observation needed. Adding a span around a dependency call may answer a narrower question than changing the entire monitoring setup.
The request groups behind a percentile