Pattern-Oriented Observability (Part 4): Diagnostics – Observability Square (DOS)

There is much confusion between diagnostics and observability (used in two senses). First, observability is a property, not a process. It concerns whether system internal states can be inferred from external outputs (observations) such as memory snapshots, traces, and logs. It is not enough to get a trace or memory dump file; these must be correctly engineered and procured using artifact acquisition patterns. The second usage of observability is to name a discipline.

What about a process? It is simply “observation”, a verb “observe” (previously called monitoring, which also has a second usage as a discipline), which is an inference from states to observations (nouns). We can do observations even if observability is not good, and get observations (observation results).

Correspondingly, diagnosability is a property. It is about whether we can infer instances of patterns of abnormal structure and behavior from observations by applying diagnostic analysis patterns.

Therefore, diagnostics is a process, too. We can perform diagnostics even if diagnosability is poor: we don’t get useful results for the subsequent root cause analysis or troubleshooting and debugging suggestions.

The following square shows relationships between these concepts:

The top row shows the relationship between abstract properties (conditions): observability enables diagnosability, because only a limited amount of diagnosability is possible without observability. However, the critical use of diagnosability improves observability.

The bottom row shows that observation feeds into diagnostics and vice versa, since more observations may be required after diagnostics.

Columns show that observability is used in practice via observation, and diagnosability is used in practice via diagnostics.

What about diagonals?

Observability to diagnostics. If a system is observable, diagnostics are feasible: “If you can observe enough, you can perform diagnostics,” a sufficient condition for diagnostics.

Diagnosability to observation. Diagnosability implies constraints on observation: “If diagnostics are possible, then your observation process is strong enough,” a necessary condition for diagnosability.

Also, diagnostics can improve observability, and observations can improve diagnosability, but we do not show these arrows.

Although observability is distinct from diagnostics as seen from the diagram and explanation, it is considered a part of pattern-oriented and systemic diagnostics; this part, as a discipline (not a property), is called pattern-oriented observability.