  Cloud services must be continuously monitored to guarantee that misbehaviors
can be timely revealed, compensated, and fixed. While simple applications can
be easily monitored and controlled, monitoring non-trivial cloud systems with
dynamic behavior requires the operators to be able to rapidly adapt the set of
collected indicators. Although the currently available monitoring frameworks
are equipped with a rich set of probes to virtually collect any indicator, they
do not provide the automation capabilities required to quickly and easily
change (i.e., deploy and undeploy) the probes used to monitor a target system.
Indeed, changing the collected indicators beyond standard platform-level
indicators can be an error-prone and expensive process, which often requires
manual intervention. This paper presents a Monitoring-as-a-Service framework
that provides the capability to automatically deploy and undeploy arbitrary
probes based on a user-provided set of indicators to be collected. The
life-cycle of the probes is fully governed by the framework, including the
detection and resolution of the erroneous states at deployment time. The
framework can be used jointly with existing monitoring technologies, without
requiring the adoption of a specific probing technology. We experimented our
framework with cloud systems based on containers and virtual machines,
obtaining evidence of the efficiency and effectiveness of the proposed
solution.
