Praktikum komunikačních sítí II

Projekt 1

Nastavení sběru dat a vykreslování grafů v programu RRDTool

Jako monitorovanou veličinu jsem si zvolil load na serveru

Instalace RRDTool

Všechny balíčky součástí standardních repozitářů pro námi použitý OS Ubuntu 18.04

		
 sudo apt install rrdtool
	

Nastavení sběru dat a kreslení grafů

Následně vytvoříme databázi pro ukládání dat ze SNMP
		
 rrdtool create jméno_databáze.rrd --start N --step 60					#start nyní, hodnota každých 60s
 DS:load:GAUGE:120:U:U 									#na hodnotu čekej max 120s, pak ji nahraď NaN
 RRA:AVERAGE:0.5:1:60 									#celkem jedno, ptáme se na konkrétní hodnoty (avg z 1 = 1)
											#ukládej po dobu 1h (60 cyklů, 1 cyklus = 1 minuta)
 RRA:AVERAGE:0.5:5:288 									#průměr z 5 minut, 288 pětiminutových cyklů (288*5m = 24h)
 RRA:AVERAGE:0.5:60:168 								#průměr z 60 minut, 168 hodinových cyklů (168*1h = 1w)
	
Vytvoříme skript, který se bude pravidelně ptát klienta na sledovanou hodnotu/hodnoty (v našem případě Load)
		
 #!/bin/sh
 a=0
 while [ "$a" == 0 ]; do
 snmpget monitoring.martinvylet.cz UCD-SNMP-MIB::laLoadFloat.1 > snmp_reply
     load=`awk '{print $5}' snmp_reply`
     # I can use N as a replacement for the current time
     rrdtool update target.rrd N:$load
     # sleep until the next 60 seconds are full
     perl -e 'sleep 60 - time % 60'
 done # end of while loop
	
Dále vytvoříme skript, který bude kreslit grafy a kopírovat je do adresáře pro webový server. Pro tento adresář je nutno nastavit práva pro zápis uživateli, pod kterým bude skrip spouštěn.
(Ideální by bylo kreslit nový graf na požadavek webserveru, ale taky poněkud komplikované pro toto demo.)
		
 #!/bin/sh
 rrdtool graph -A 24h.png --end now --start end-24h --step 300 -l 0 -u 1 --width 1080 --height 500 DEF:obs=target.rrd:load:AVERAGE LINE1:obs#0000ff:"5 minutovy prumerny load"
 cp 24h.png /var/www/html/images/

 rrdtool graph -A 1h.png --end now --start end-1h -S 60 -l 0 -u 1 --width 1080 --height 500 DEF:obs=target.rrd:load:AVERAGE LINE1:obs#0000ff:"1 minutovy prumerny load"
 cp 1h.png /var/www/html/images/

 rrdtool graph -A 1w.png --end now --start end-1w -l 0 -u 1 --width 1080 --height 500 DEF:obs=target.rrd:load:AVERAGE LINE1:obs#0000ff:"hodinovy prumerny load"
 cp 1w.png /var/www/html/images/
	
Tento skrip následně spouštím v cronu v minutovém intervalu.
		
 * * * * * bash /home/student/generateGraph.sh