Designing Monitoring Systems for Network Partitions

Published on 2026-10-12

A monitoring system that stops being useful when it loses its upstream connection is not a distributed system. It is a centrally hosted application with remote data collectors.

For systems deployed across sites, vehicles, laboratories, industrial assets or constrained networks, intermittent connectivity is an expected operating condition. Links fail because of maintenance, radio coverage, routing faults, power events, firewall changes and upstream service outages. The engineering question is not whether a partition can occur. It is what each part of the system must do while it cannot communicate.

Treating cloud loss as an exception commonly produces predictable failures: local alarms are suppressed because a remote rules engine is unavailable; measurements are discarded when an in-memory queue fills; timestamps become unreliable; and reconnecting devices overload an already recovering service. The resulting dataset can appear complete enough for a dashboard while containing unquantified gaps, duplicates or reordered events.


Define the local operating contract

Each edge node requires an explicit operating contract for disconnected operation. This should distinguish functions that must continue locally from functions that can wait for central services.

Local functions often include acquisition, basic validation, safety-relevant threshold detection, timekeeping, health monitoring and durable storage. A temperature sensor in a controlled store may need to continue recording at its configured interval and raise a local notification when a threshold is exceeded. Neither requirement should depend on a successful round trip to a remote platform.

Central functions may include fleet-wide correlation, long-horizon trend analysis, reporting, user administration and configuration approval. Some are inherently dependent on a shared view of the estate. Others could be performed locally but should not be, because a locally generated decision would be unsafe without current reference data or authorisation.

This distinction must be based on consequences, not convenience. If a local action can affect a process, equipment state or operator decision, define the inputs on which it is permitted to rely, the period for which those inputs remain valid, and its behaviour after that period expires. A cached alarm threshold may be acceptable for days. A cached access-control revocation list may not be.

The node should also make its degraded state visible locally. Operators need to know the difference between a process within limits, a sensor that has not reported, and a sensor that is reporting but cannot forward data. These are different conditions requiring different responses.


Buffer observations as records, not messages

A transport queue is not necessarily a measurement record. Messaging middleware may provide delivery retries, but its retention period, ordering semantics and failure behaviour may not preserve the evidence needed to reconstruct an observation.

For monitoring applications, an edge node should persist a record before considering an observation accepted. At minimum, the record normally needs a stable event identifier, source identity, measurement timestamp, receipt timestamp where relevant, value, unit, quality indicators and the configuration or processing version used to derive it. Raw inputs may also need retention where later analysis depends on recalculation or review of signal quality.

The storage design needs stated bounds. Calculate retention against the worst credible partition duration, acquisition rate, record size and an engineering margin. When capacity is exhausted, the system must follow a defined policy. It may preserve alarm and exception records while discarding lower-priority samples, reduce sampling only where the intended use permits it, or enter a declared storage-fault condition. Silent overwriting is not an acceptable policy where records may be needed as operational or quality evidence.

Buffer integrity matters as much as capacity. Use atomic writes or a journaled store, detect corruption on restart, and ensure that loss of power cannot leave an apparently valid but partial record. If a node has removable or volatile storage, the residual risk should be understood rather than hidden behind a retry counter.


Time is a dependency, not an attribute

Partitioned systems cannot assume that timestamps remain trustworthy simply because every record has one. A node may lose access to its time source, drift during a prolonged outage, or step its clock when synchronisation returns.

Record the time source and synchronisation state alongside observations where timing materially affects interpretation. A device can retain a monotonic sequence counter to establish local order even when wall-clock time is uncertain. On recovery, do not rewrite historic timestamps to make them appear aligned. Preserve the original recorded time and, if necessary, store a separately derived correction or uncertainty estimate.

This is particularly important where records are correlated across devices. A central platform should not infer causality from timestamps whose uncertainty exceeds the interval being analysed. A sequence that appears to show one alarm preceding another may be only an artefact of unsynchronised clocks.


Reconnection requires reconciliation

Restoring a network route is the start of recovery, not its completion. The edge node and central service need a protocol for determining which records were received, which were acknowledged durably, and which remain outstanding.

At-least-once delivery is usually the practical choice for monitored data. It requires consumers to be idempotent: a retransmitted record with the same stable identifier must not create a second measurement. Do not rely solely on arrival order. Partition recovery can cause batches to arrive late and interleave with newer live data.

Acknowledgements should represent durable acceptance by the receiving system, not merely successful receipt at a load balancer or gateway. Where records are rejected because of schema, authentication or configuration problems, retain them and surface the rejection. Deleting data after a non-specific delivery failure converts a recoverable integration fault into an untraceable data loss.

Recovery traffic must also be controlled. A fleet reconnecting after an outage can saturate constrained links or overload central ingestion. Rate limits, back-off with jitter, batching, prioritisation and resumable transfer checkpoints are operational requirements, not optional performance refinements.


Test the partition, not only the connection

A connectivity indicator showing green says little about how a system behaves under realistic failure. Testing should include delayed and asymmetric links, DNS failure, expired credentials during a partition, full local storage, clock drift, repeated process restarts and central-service recovery while nodes are still retransmitting.

The test evidence should answer practical questions: did local alarms continue; were all required records retained; can duplicates be identified; are gaps explicitly represented; and can an investigator reconstruct the order and state of events? For regulated or high-consequence use, these behaviours form part of the system's intended operation and should be specified, verified and controlled through change.

A well-designed monitoring system does not regard the cloud as its sole source of truth during an outage. It gives each node bounded authority, durable local responsibility and a disciplined route back to a reconciled shared record when connectivity returns.

Copyright © 2026 Obsidian Reach Ltd.

UK Registered Company No. 16394927

3rd Floor, 86-90 Paul Street, London,
United Kingdom EC2A 4NE

020 3051 5216