FogMon 2.0 is available here!
FogMon 2.0 has been released as a result of the experimental activities of the project Lightweight Self-adaptive Cloud-IoT Monitoring across Fed4FIRE+ Testbeds (LiSCIo) funded within the 8th Fed4FIRE+ Competitive Call – Innovative Experiments | Category “Medium Experiments”. FogMon 2.0 was assessed and tuned in lifelike experimental settings on Cloud-IoT resources across the Virtual Wall and CityLab testbeds, featuring 20, 30 and 40 monitored nodes.
A distributed monitoring tool for Fog computing infrastructures
FogMon, with its self-organising topology mechanisms, node churn handling and differential monitoring updates, has been fully described in the following article:
Stefano Forti, Marco Gaglianese, Antonio Brogi
Lightweight self-organising distributed monitoring of Fog infrastructures,
Future Generation Computer Systems (2020), DOI: 10.1016/j.future.2020.08.011.
The first release of FogMon was described in the following article:
Antonio Brogi, Stefano Forti, Marco Gaglianese
Measuring the Fog, Gently,
17th International Conference on Service-Oriented Computing (ICSOC), 2019.
If you wish to reuse source code in this repo, please consider citing them.
git submodule init
git submodule update
There is a Docker image for easily running the node.
docker build --tag fogmon .
Then run a Leader with the command
docker run -it --net=host fogmon --leader
and the other nodes with
docker run -it --net=host fogmon -C ip_leader
All the other parameters are visible reading the main.cpp, they can set up all FogMon parameters (time between tests, time between checks etc).
Some ports needs to be open for incoming connections, by default they are:
5555/TCP fogmon
5201/TCP iperf
8366/TCP assolo
8365/UDP assolo
Let's call the 5 nodes A, B, C, D, E and their ip IP_A, IP_B,..., IP_E.
First run one of the nodes (A) as a default Leader
docker run -it --net=host fogmon --leader
then connect all the other nodes to A
docker run -it --net=host fogmon -C IP_A
After 5 rounds the parameter "--time-propagation" a Leader selection happens, and 2 new leaders are selected. This is because the number of Leaders is too low to sustain 5 nodes.
The tool can be compiled outside Docker (not advised) as follows:
cmake .
make
dependencies:
sqlite3 for development
libstdc++ for static linking
libserialport
sigar:
https://github.com/hyperic/sigar
it needs libtool for compiling
and if it does not compile then try with:
./autogen.sh && ./configure && make && sudo make install
and
make clean
./autogen.sh && ./configure && make CFLAGS=-fgnu89-inline && sudo make install