Development of a distributed and decentralised monitoring system for Guifi.net

Development of a distributed and decentralised monitoring system for Guifi.net

Monitoring the infrastructure of Guifi.net is essential for the operation of the network. A centralized monitoring solution, however, is sensitive to failures and does not follow the spirit of a collaborative effort.

Within the Lightkone project, we have developed a decentralized monitoring solution for Guifi.net, in which the monitoring server software that is hosted on Cloudy nodes can join the overall network monitoring task and in a self-organizing way take over part of that work.

The conceptual system is shown in the next figure. Each device of the network infrastructure of Guifi.net (in the center of the picture) is monitored by several servers.

These monitoring servers coordinate with each other over a distributed database about which server takes care of the monitoring of a set of routers (network devices). This coordination is done continuously and the current assignment is always updated to the database in order to assure that if any server fails, another server will jump in and make sure that all network devices continue to be monitored. In the next figure, the components of the monitoring servers are shown. There is a key component named “assign” to organize the monitoring assignment of each server. The monitoring task is done by the “ping” and “snmp” components.

The implementation of the monitoring servers was done in the Go language and the code is available in our Gitlab repository. We used the AntidoteDB database as a distributed storage service.

You can learn more about the monitoring system in our technical paper published at IEEE SOCA 2019.