drove is a modern monitoring tool which support alerting (with escalation), auto-register nodes, statistics gathering and much more in a few lines of python code.
There are a lot of features in drove, for example:
- Easy to extend in python and other languages
- Easy to install, works in
- Lots of plugins in the community
- Compatible with nagios checks using nagios plugin
- Support smart alerting (escalation, collapsing, hysteresis etc.)
- Multiple backends to store metrics (influxdb, sql, redis, statsd...)
- ... and much more!
We designed drove keeping in mind to create a monitoring tool to be easy to adapt to new elements, with a strong community behind which provides useful reusable plugins.
With drove, you can basically install the core module as any other python software (read the Installation manual for more information) and then install plugins with drove itself with the command:
$ drove install [plugin]
Actually droves has not the concept of server or daemon per se. It’s
agnostic about that, are the plugins which gives the role of server or
client to a drove installation. The plugin
droveio.network allows you to
listen a port for incoming drove messages, and also the same plugin allows
you to configure your drove installation to send message to any other drove
In short, the plugin
droveio.network is the responsible of the
client-server architecture, but drove core itself does nothing about that.
How it works¶
Essentially drove is just a queue system which read from plugins (called readers) some data, and write that data in other plugins (called writers).
For example the plugin
droveio.cpu read CPU data from the operating
system, then drove core store that data in internal queues. On the other
hand we’ve the
droveio.influxdb plugin, which read data from internal
queues and save the data into InfluxDB database.
Values and Events¶
drove basically handles two types of data, the values
drove.data.value.Value) and the events
drove.data.event.Event). While the first are intended to represent
a metric (i.e. a number with a label), the second ones are designed to send
a unique event to the drove network (for example an alert).
Each data which is managed by drove is one of this two kind. Usually plugins send values to monitor some interesting metric, and other plugins can send events according to these values. But of course there are no limitations about how send events or values.