Monitoring watches for problems you have predicted. You decide that CPU above a threshold or an error rate above a threshold is bad, and you alert on it. Observability is broader. The OpenTelemetry project defines it as the ability to understand a system from the outside by asking questions about it without knowing its inner workings, which lets you troubleshoot novel problems, the "unknown unknowns", and answer "why is this happening?"
The two work together. Monitoring tells you something is wrong. Observability gives you enough data to find out what and why without shipping new code first. That depends on three kinds of telemetry, usually called the three pillars.
| Signal | What it is | Best question it answers |
|---|---|---|
| Logs | Timestamped records of individual events | What exactly happened in this request? |
| Metrics | Numeric measurements aggregated over time | How is the system behaving overall, and is it getting worse? |
| Traces | The path of one request through every service | Where did the time go, and which service failed? |



