Users wanting to monitor distributed or component-based systems often
perceive them as monolithic systems which, seen from the outside, exhibit a
uniform behaviour as opposed to many components displaying many local
behaviours that together constitute the system's global behaviour. This level
of abstraction is often reasonable, hiding implementation details from users
who may want to specify the system's global behaviour in terms of an LTL
formula. However, the problem that arises then is how such a specification can
actually be monitored in a distributed system that has no central data
collection point, where all the components' local behaviours are observable. In
this case, the LTL specification needs to be decomposed into sub-formulae
which, in turn, need to be distributed amongst the components' locally attached
monitors, each of which sees only a distinct part of the global behaviour. The
main contribution of this paper is an algorithm for distributing and monitoring
LTL formulae, such that satisfac- tion or violation of specifications can be
detected by local monitors alone. We present an implementation and show that
our algorithm introduces only a minimum delay in detecting
satisfaction/violation of a specification. Moreover, our practical results show
that the communication overhead introduced by the local monitors is
considerably lower than the number of messages that would need to be sent to a
central data collection point