techniques to manage large clouds: for instance hier-
archical layering of sensors, as shown in figure 3, and
monitoring domain splitting, as explained below.
The Rocmon design extends the flexibility of the
Nagios plugin approach to all aspects of monitoring:
namely, the processing of monitoring data and their
delivery. This is obtained by introducing two distin-
guished types of mixins that are specific for the sen-
sor. Using such mixins it is possible, for instance, to
aggregate a large stream to filter relevant data, to hide
sensitive data before passing over, to trigger actions
when certain patterns show up. All these functionali-
ties are provided under the control of the cloud man-
agement, although it is not excluded (per the OCCI
core standard) that the user implements and uploads
custom mixins.
Being plug-in oriented, the Rocmon design is
ready to reuse the plugin probes already implemented
for Nagios: the typical Nagios plugin has a clean SSL
oriented interface, which should be adapted to use the
HTTP API to control the plugin. Data delivery should
be converted to use the WebSocket interface instead
of the SSL. To meet security constraints, a practical
design uses the secure versions for the HTTP proto-
col and the WebSocket.
New sensors can be dynamically added to the in-
frastructure, since their activity can be associated to a
Virtual Machine (VM), and a given resource can mod-
ify the running probes with a POST request: there-
fore the monitoring activity can be dynamically mod-
ified in response to a change in the environment, like
a workload increment.
Such flexibility fosters the possibility to open to
the user the control of the monitoring activity. In case
the same infrastructure is used for administration and
user monitoring, a mechanism to allow user access to
a restricted number of mixins is a preliminary step on
this way, which can be obtained at the OCCI interface
level. More important is the ability to dynamically
instantiate new sensors according with user demand:
this is indeed possible since, as noted above, a sensor
can be implemented using a VM. The monitored re-
source will route distinct data towards the WebSocket
on the user sensor, and on a admin sensor, so to im-
plement distinct monitoring domains.
The Rocmon design can be approached also to
other OCCI-based monitoring systems. In (Ven-
ticinque et al., 2012) the authors sketch a prelim-
inary model for the specification and the monitor-
ing of a SLA. The proposal does not explore how
such model might be implemented in practice. In
(Mohamed et al., 2013) the authors layout a detailed
model for monitoring and reconfiguration of cloud re-
sources. The model is quite complex, and is specific
for a closed loop, with reconfiguration that follows
monitoring. Although the authors do not cover the
implementation of their model, it is conceivable that
the Rocmon system might contribute with the mon-
itoring part. In (Ciuffoletti, 2015a) we have shown
a basic Java implementation of our monitoring sys-
tem, based on TCP connections — instead of REST
interfaces and WebSockets — and without the mech-
anisms for resource creation.
4 A Rocmon PROTOTYPE
IMPLEMENTATION
To verify the feasibility and the complexity of the
above design we have implemented a prototype show-
ing its relevant features. An example that illustrates
an elementary deployment is in figure 4. Green cir-
cles represent HTTP ports: the user interacts with the
cloud manager with the OCCI API, the cloud man-
ager submits POST requests to the Sensor and the
Resource. The Resource opens a Web Socket (WS)
to the Sensor and sends raw monitoring data. The
Sensor delivers metrics to the user.
In our prototype we have only the essential oper-
ation of the OCCI API user interface on the upfront
server: we implement a PUT method, limited to the
request of a sensor, collector or compute entity. After
receiving such a request the OCCI server (labeled as
Cloud management in figure 4) either instantiates the
requested resource, or configures the requested link.
Since the implementation is oriented to experiments,
we have adopted the Docker technology, so that a sen-
sor or compute entity correspond to a Docker con-
tainer with the requested features. Since containers
have a light footprint, it is possible to assemble quite
complex experiments, depending on the capacity of
the physical host.
4.1 Software Structure
The prototype is implemented using the Ruby lan-
guage: the Sinatra framework is used for the HTTP
servers, together with the websocket-client-simple li-
brary for client-side WebSocket management. The
software of the sensor and of the compute contain-
ers is built around the Sinatra web server, and the im-
plementation of the POST method is the cornerstone.
The API methods on the compute and sensor Docker
are those listed in table 1 and 2.
The sensor container receives with the POST re-
quest the internal timing configuration and the lay-
out of the mixins: which of the available ones is
OCCI 2016 - Special Session on Experiences with OCCI
368