Bekijk Volledige Versie : Dataverkeerstatistieken verzamelen op servers
Wij hebben ongeveer 50 virtuele machines draaien. Ik heb collectd, graphite en grafana geïnstalleerd en we hebben ongeveer dataverkeer-statistieken als deze:
https://i.imgur.com/IYccyFkl.png
De lijnen zijn inkomend en uitgaand bandbreedte in kB/sec, maar ik zou graag statistieken hebben die mij kunnen zeggen hoeveel dataverkeer in GB's er is gebruikt tussen 09:00 en 17:00 over de gehele farm.
Wat zou een goede manier zijn om over een groep servers te achterhalen hoeveel dataverkeer deze hebben gebruikt?
CharlieRoot
27/06/16, 13:29
Misschien heb je iets aan MRTG
http://oss.oetiker.ch/mrtg/doc/mrtg-traffic-sum.en.html
Nou dat hangt er ten eerste vanaf hoeveel metrics je opslaat. Is dat 1 per 5 minuten, 1 per minuut, 1 per seconde? Dat zou de nauwkeurigheid namelijk erg kunnen beïnvloeden. Maar de groep samen kan je gewoon met bijvoorbeeld een wildcard + een term als sumSeries in Graphite opzoeken. Die kun je dan bijvoorbeeld weer summarizen voor je window, en omrekenen naar GB's
Zie ook:
http://stackoverflow.com/questions/13589350/graphite-summarize-datapoints
http://stackoverflow.com/questions/12816337/graphite-multiple-series-with-a-single-command
avanmessen
27/06/16, 13:31
Is het de bedoeling één keer een meting te doen tussen 9:00 en 17:00 of wil je dit permanent kunnen uitvoeren ?
Nou dat hangt er ten eerste vanaf hoeveel metrics je opslaat. Is dat 1 per 5 minuten, 1 per minuut, 1 per seconde? Dat zou de nauwkeurigheid namelijk erg kunnen beïnvloeden. Maar de groep samen kan je gewoon met bijvoorbeeld een wildcard + een term als sumSeries in Graphite opzoeken. Die kun je dan bijvoorbeeld weer summarizen voor je window, en omrekenen naar GB's
Zie ook:
http://stackoverflow.com/questions/13589350/graphite-summarize-datapoints
http://stackoverflow.com/questions/12816337/graphite-multiple-series-with-a-single-commandJa, ik was al met graphite bezig. Mijn script stuurt statistieken om de 10 seconden, maar sumSeries telt meerdere series (lijn A, lijn B, etc.) bij elkaar op... toch niet meerdere datapunten?
Als ik om de 10 seconden het aantal verstookte bytes verstuur (makkelijk) en die kan optellen... vanaf punt A tot punt B, zou ik inderdaad het antwoord hebben. In "/sys/class/net/$1/statistics/rx_bytes" staat netjes het aantal ontvangen bytes, ik kan elke 10 seconden het verschil versturen naar Graphite. Maar hoe laat ik Graphite dan alle data-punten bij elkaar optellen in een bepaalde tijd zodat ik kan uitzoeken hoeveel rx_bytes er zijn ontvangen op die dag door die server?
Misschien heb je iets aan MRTG
http://oss.oetiker.ch/mrtg/doc/mrtg-traffic-sum.en.htmlMRTG lijkt me een beetje old-school.
Is het de bedoeling één keer een meting te doen tussen 9:00 en 17:00 of wil je dit permanent kunnen uitvoeren ?Nee, permanent. Het is de bedoeling meer inzicht te krijgen hoeveel GB's de hele serverfarm gezamenlijk verstookt.
Helaas is er geen toegang tot de switch. Het gaat om een bende Jenkins-servers, Docker-registry, Git-server en nog wat andere kleine server.
CharlieRoot
28/06/16, 09:01
MRTG lijkt me een beetje old-school.
Maar wel functioneel en veel gebruikt.. ?
Jawel, maar ik heb het altijd gebruikt op basis van SNMP invoer en dan het maken van grafiekjes. Dat heeft 2 nadelen:
1) Ik heb hier geen SNMP invoer, het is een cloud-achtige environment.
2) Je kunt de grafieken geen samenvoegen. Het is simpelweg 1 grafiek per poort. Het is niet mogelijk om een grafiek vervolgens te maken van het dataverbruik alle Jenkins-servers.
Verder is een grafiek als deze met Total in het dataverbruik wel ongeveer wat ik zoek:
https://github.com/Cosmologist/collectd-network-bandwidth-usage/raw/master/screenshots/counter.png?raw=true
CharlieRoot
28/06/16, 09:15
Jawel, maar ik heb het altijd gebruikt op basis van SNMP invoer en dan het maken van grafiekjes. Dat heeft 2 nadelen:
1) Ik heb hier geen SNMP invoer, het is een cloud-achtige environment.
2) Je kunt de grafieken geen samenvoegen. Het is simpelweg 1 grafiek per poort. Het is niet mogelijk om een grafiek vervolgens te maken van het dataverbruik alle Jenkins-servers.
Verder is een grafiek als deze met Total in het dataverbruik wel ongeveer wat ik zoek:
https://github.com/Cosmologist/collectd-network-bandwidth-usage/raw/master/screenshots/counter.png?raw=true
Je zou het zelf kunnen doen met rrdtool of gd?
ifconfig eth0 |grep bytes|cut -d":" -f2|cut -d" " -f1p
Bedankt voor de tips. :) Het is uiteindelijk gelukt met een integraal-grafiek in Grafana.
Bandbreedte in bytes per seconde: https://i.imgur.com/8KaLedth.png
Bandbreedte in totaal aantal bytes: https://i.imgur.com/XoAUKVYh.png
Ik heb de hostnames even gemaskeerd.