Differences

This shows you the differences between two versions of the page.

Link to this comparison view

saisp:labs:03:contents:05 [2014/03/10 04:38]
mihai.carabas [05. [20p] Baze de date Round Robin (RRD)]
saisp:labs:03:contents:05 [2014/04/05 12:08] (current)
mihai.carabas [05. [20p] Baze de date Round Robin (RRD)]
Line 1: Line 1:
 ==== 05. [20p] Baze de date Round Robin (RRD) ==== ==== 05. [20p] Baze de date Round Robin (RRD) ====
  
-Procesul de monitorizare presupune colectarea continuă de date la intervale regulate de timp. În timp volumul de date crește foarte mult, iar spațiul ocupat de acestea devine o problemă. Luând ​aceste probleme ​în calcul și faptul că granularitatea datelor colectate la un moment dat în timp poate să scadă o dată cu trecerea timpului (ex.: nu ne interesează traficul pe o interfață de acum un an la o granularitate de un minut, ci la o oră este rezonabil) a fost proiectat un nou tip de bază de date: Round Robin (RRD). Dimensiunea acesteia este știută de la momentul creării în funcție de numărul de tipuri de date colectate și granularitatea acestora. După cum îi spune și numele aceasta stochează într-un spațiu finit, iar când acel spațiu alocat este epuizat, datele inițiale se vor suprascrie. Înainte de suprascriere se face o ''​arhivare''​ a datelor suprascrise (de cele mai multe ori se folosește media aritmetică pe intervalul de timp respectiv).+Procesul de monitorizare presupune colectarea continuă de date la intervale regulate de timp. În timpvolumul de date crește foarte mult, iar spațiul ocupat de acestea devine o problemă. Luând în calcul și faptul că granularitatea datelor colectate la un moment dat în timp poate să scadă o dată cu trecerea timpului (ex.: nu ne interesează traficul pe o interfață de acum un an la o granularitate de un minut, ci la o oră este rezonabil) a fost proiectat un nou tip de bază de date: **Round Robin Database ​(RRD)**.
  
-Utilitarul cu ajutorul căruia vom crea și popula bazele de date se numește ''​rrdtool''​. Acesta permite 3 operații: ''​create''​ (creare bază de date)''​update''​ (inserare valori bază de date) și ''​graph''​ (generează un grafic funcție de timp pe baza valorilor introduse).+Dimensiunea acesteia este cunoscuta de la momentul creării, în funcție de numărul de tipuri de date colectate și de granularitatea acestora. După cum îi spune și numele, aceasta stochează datele într-un spațiu finit, iar când acel spațiu alocat este epuizat, datele inițiale se vor suprascrie. Înainte de suprascriere se face o ''​arhivare''​ a datelor suprascrise (de cele mai multe ori se folosește media aritmetică pe intervalul de timp respectiv). 
 + 
 +Utilitarul cu ajutorul căruia vom crea și popula bazele de date se numește ''​rrdtool''​. Acesta permite 3 operații: 
 +  * ''​create''​ (creare bază de date) 
 +  * ''​update''​ (inserare valori bază de date) 
 +  * ''​graph''​ (generează un grafic funcție de timp pe baza valorilor introduse)
  
 Pe stația monitor instalăm utilitarul ''​rrdtool'':<​code bash> Pe stația monitor instalăm utilitarul ''​rrdtool'':<​code bash>
 root@monitor:​~#​ apt-get install rrdtool root@monitor:​~#​ apt-get install rrdtool
 </​code>​ </​code>​
-Pentru a crea o bază de date comanda ''​rrdtool create''​ primește următorii parametri:+Pentru a crea o bază de datecomanda ''​rrdtool create''​ primește următorii parametri:
   * timpul de început/​referință   * timpul de început/​referință
   * pasul cu care datele vor fi introduse în baza de date (la nivel de secundă)   * pasul cu care datele vor fi introduse în baza de date (la nivel de secundă)
Line 27: Line 32:
          ​RRA:​AVERAGE:​0.5:​60:​12          ​RRA:​AVERAGE:​0.5:​60:​12
 </​code>​ </​code>​
-După cum se observă am creat 2 variabile de tipul ''​COUNTER''​ care se numesc ''​speedIn''​ și ''​speedOut''​ (pentru alte tipuri de variabile vezi [[saisp:​courses:​03|]]. Valoarea lor maximă este nespecficată (''​U''​ - undefined). Valoarea ''​10''​ reprezintă numărul de secunde cât așteaptă după date noi, iar dacă este depășit se inserează o valoarea specială ''​UNKNOWN''​ pentru a nu afecta mediile calculate. +După cum se observă am creat 2 variabile de tipul ''​COUNTER''​ care se numesc ''​speedIn''​ și ''​speedOut''​ (pentru alte tipuri de variabile vezi [[saisp:​courses:​03|]]). Valoarea lor maximă este nespecficată (''​U''​ - undefined). Valoarea ''​10''​ reprezintă numărul de secunde cât așteaptă după date noi, iar dacă este depășit se inserează o valoarea specială ''​UNKNOWN''​ pentru a nu afecta mediile calculate. 
-Tipul de arhivare configurat este ''​AVERAGE''​ și o dată la 2 valori, realizează media acestora după care vechile valori vor fi suprascrise. Sunt păstrate 60 astfel de medii, în final aceste 60 medii fiind suprascrise și ele. Timpul acoperit de această arhivare este de 10 minute (5secundă ​x 2 x 60).+Tipul de arhivare configurat este ''​AVERAGE''​ și o dată la 2 valori, realizează media acestora după care vechile valori vor fi suprascrise. Sunt păstrate 60 astfel de medii, în final aceste 60 medii fiind suprascrise și ele. Timpul acoperit de această arhivare este de 10 minute (5 secunde ​x 2 x 60).
  
-O altă arhivare configurată este dată media a 60 de valori (deci 300 de secunde), fiind ținute 12 de astfel de medii. Această arhivare acoperă ''​300secunde ​x 12 = 60 minute''​. Deci baza noastră de date ne poate oferi statistici ale traficului pe o interfațăde rețea la diferite nivele de granularitate (în ultimele 10 minute este calculată media la nivel de 10 secunde, iar în ultima oră este calculată media la 1 minut).+O altă arhivare configurată este dată media a 60 de valori (deci 300 de secunde), fiind ținute 12 de astfel de medii. Această arhivare acoperă ''​300 secunde ​x 12 = 60 minute''​. Deci baza noastră de date ne poate oferi statistici ale traficului pe o interfață de rețea la diferite nivele de granularitate (în ultimele 10 minute este calculată media la nivel de 10 secunde, iar în ultima oră este calculată media la 1 minut).
  
-Copiați și completați scriptul de mai jos pentru a obține valorile pentru variabilele ''​octetsIn''​ și ''​octetsOut''​. Acestea reprezintă ​ numărul de octeți (trimiși și primiți) de pe interfața ''​eth0''​ a stației ''​gateway''​(Hint:​ ''​snmpwalk'',''​IF-MIB::​ifInOctets''​ urmat de numărul instanței). Scriptul colectează numărul de octeți din 5 în 5 secunde și îl introduce în baza de date ''​target.rrd''​ (''​rrdtool update target.rrd $(date +%s):​inOctets:​outOctets''​):<​code>+Copiați și completați scriptul de mai jos pentru a obține valorile pentru variabilele ''​octetsIn''​ și ''​octetsOut''​. Acestea reprezintă ​ numărul de octeți (trimiși și primiți) de pe interfața ''​eth0''​ a stației ''​gateway''​ (**Hint**: ''​snmpwalk'',​ ''​IF-MIB::​ifInOctets''​ urmat de numărul instanței). Scriptul colectează numărul de octeți din 5 în 5 secunde și îl introduce în baza de date ''​target.rrd''​ (''​rrdtool update target.rrd $(date +%s):​inOctets:​outOctets''​):<​file bash in-out-octets>
 #!/bin/bash #!/bin/bash
  
 rm -rf target.rrd rm -rf target.rrd
  
-#obtinem data de inceput +Init timestamp. 
-data=$(date +%s)+timestamp=$(date +%s)
  
-#o facem multiplu de +Align timestamp to multiple of seconds. 
-data=$(($data/5*5)) +timestamp=$(($timestamp/5*5)) 
-data_init=$data+init_timestamp=$timestamp
  
 rrdtool create target.rrd \ rrdtool create target.rrd \
-         ​--start $data \+         ​--start $timestamp ​\
          ​--step 5 \          ​--step 5 \
          ​DS:​speedIn:​COUNTER:​10:​U:​U \          ​DS:​speedIn:​COUNTER:​10:​U:​U \
Line 52: Line 57:
          ​RRA:​AVERAGE:​0.5:​60:​12          ​RRA:​AVERAGE:​0.5:​60:​12
  
-for i in $(seq 1 24) +for i in $(seq 1 24)do 
-do+   sleep 5 
 +   ​timestamp=$(($timestamp + 5))
  
-sleep 5 +   ​outOctets=$(...) 
-data=$(($data + 5))+   ​inOctets=$(...)
  
-outOctets=$(...) +   rrdtool update target.rrd ​ $timestamp:​$inOctets:​$outOctets
-inOctets=$(...) +
- +
-rrdtool update target.rrd ​ $data:​$inOctets:​$outOctets+
 done done
  
-echo --start $data_init ​--end $data +echo --start $init_timestamp ​--end $timestamp 
-</code>+</file>
 <​solution -hidden> <​solution -hidden>
 <​code>​ <​code>​
saisp/labs/03/contents/05.1394419095.txt.gz · Last modified: 2014/03/10 04:38 by mihai.carabas
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0