_images/drove-logo.svg

Introduction

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 python3 and python2.7
  • 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!

Philosophy

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]

Note

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 installation.

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).

_images/doc-fig-1.svg

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.

Indices and tables