PDA

Bekijk Volledige Versie : Cacti en 95%



FransVanNispen
01/11/07, 07:10
Ik ben al enige tijd aan het stoeien met het zelf meten van traffic via SNMP omdat dit geweldig geintergreerd kan worden in het klantenpaneel.

Niet alleen het laten zien van een grafiekje, maar ook het hebben van de getallen biedt vele opties (volumes laten zien, automatisch waarschuwen bij verwachte overusage, direct kunnen zien of een systeem online of offline is, ..)

Op dit moment werkt het pollen perfect. Ik gebruik de 32 bit counters en pol per minuut, omdat we anders op de 125Mbit grens een overflow krijgen. 64bit pointers is met PHP een probleem, omdat afhankelijk van de versie en host OS PHP 56 tot 63 bits goed kan afhandelen, daarna gaat het de mist in.

Nu komt het probleem: Als ik mijn data, gewoon keihard per minuut uitgelezen van de switch counters via SNMP, vergelijk met grafieken die Cacti genereerd, kloppen de pieken en 95 percentile niet.

Op de een of andere manier weet Cacti er altijd meer uit te slepen. Cacti draait bij ons per 5 minuten, maar onze netwerk leverancier doet dit per minuut, en daar zijn de pieken zelfs nog ietsjes hoger.

Nu kan het aan mij liggen, maar er wordt toch normaal gewoon het gemiddelde per 5 minuten gemeten, en bij de 95% regel valt daar 5% vanaf. De hoogtst overgebleven piek zou 95% moeten zijn.

Meten per 5 minuten levert mij 288 samples op. Deze sorteer ik op grootte, en neem dan de 14e sample. Zelfs het nemen van de 12e of 11e sample levert kleinere getallen op dan Cacti weet te presenteren.

Waar haalt Cacti in hemelsnaam die extra hoge pieken vandaan? En hoe komt hij aan 600 samples per dag waar er maar 288 gemeten worden?

Dit is belangrijk, omdat ik graag in mijn grafieken gereflecteerd zie wat mij uiteindelijk in rekening gebracht zal worden. Nu wijkt het 4 tot 25% af.

sdetroch
01/11/07, 08:52
Nu kan het aan mij liggen, maar er wordt toch normaal gewoon het gemiddelde per 5 minuten gemeten, en bij de 95% regel valt daar 5% vanaf. De hoogtst overgebleven piek zou 95% moeten zijn.

Is het niet zo dat Cacti een 'snapshot' neemt iedere 5 minuten, m.a.w. geen gemiddelde van de traffiek van de voorbije minuten, maar 1 cijfer om de 5 minuten. Ben je maw op minuut 3 100mbit aan het verbruiken en op minuut 5 50 mbit, dan zal die 5 mbit tonen (tenzij ik het ook verkeerd voor heb, maar lijkt me logisch wanneer cron om de 5 minuten draait).

Om die reden gebruiken wij de statistieken uit de routers om klanten te factureren voor (over)traffiek en niet Cacti. Cacti is daarvoor niet nauwkeurig genoeg, het is m.i. eerder een systeembeheerstool (toestand netwerk, historiek, 95% percentiel idee, ...) ipv een tool die de basis vormt voor facturatie.

Wanneer je de polling zou doen om de 1 minuut (ipv de standaard 5 minuten), dan zou het al een pak correcter zijn.

guidob
01/11/07, 11:01
Sla je wel data van de hele maand per 5 minuten op? Standaard wordt de rrd in cacti zo niet aangemaakt.

Zie: http://docs.cacti.net/node/54

FransVanNispen
01/11/07, 12:54
Ik meet gewoon per 5 minuten wat het verbruik per poort is. Dit is een absoluut exacte basis voor facturatie, omdat het daadwerkelijk verbruik is.

Het verschil heb ik inmiddels gevonden, het zit hem in de definitie van kB. Cacti gebruikt 1000*1000 MB ipv 1024 * 1024 MB

Ramon Fincken
01/11/07, 13:28
woo !

en is dat nog zelf aan te passen?

Costeijn
01/11/07, 15:10
Ik heb ook een klein vraagje over cacti. Hoop dat het mag in dit topic.

Ik heb een cacti server geinstalleer maar hoe kan ik nu andere servers toevoegen hierop, zodat ik bijv load kan bekijken e.d. Moet ik dan snmp installeren op de andere servers en dan toevoegen in cacti? Hoop dat iemand me kan helpen.

guidob
02/11/07, 09:36
SNMP installeren op de server en dit in "/etc/snmp/snmpd.conf" plaatsen:

rocommunity public 123.123.123.123

Het IP van de server waar cacti op draait. Daarna server toevoegen in Cacti via devices en als host template snmp gebruiken. Eventueel kun je op forums.cacti.net andere en uitgebreidere snmp templates vinden.

Merlijn
03/11/07, 01:54
Het verschil heb ik inmiddels gevonden, het zit hem in de definitie van kB. Cacti gebruikt 1000*1000 MB ipv 1024 * 1024 MB

1000*1000 is ook goed. 1Kbit bestaat uit 1000bits, en niet uit 1024 bits. Snelheid komt uit de telecom en daar is K gewoon 1000 en niet 1024.

xserve
03/11/07, 11:44
Aha! Ik heb deze week een tooltje geschreven om dataverkeer direct uit de RRD files te lezen. Daar had ik elke keer een afwijking van ongeveer 4,45%. Maar nu weet ik dus waar dat verschil vandaan komt. Ik zal het eens proberen met 1000 voor een k te rekenen en kijken of het dan goed gaat.

Edit:
Nu is het inderdaad hetzelfde. De waarde die uit mijn script komt en uit Cacti. Nu is nog de vraag: wat is juist? Ik bereken het dataverkeer in GB's en niet in MBit's, moet het dan wel / 1024 of door 1000?

Merlijn
03/11/07, 15:11
Uit ander topic (http://www.webhostingtalk.nl/dedicated-colocated-hosting-forum/70367-berekening-van-dataverkeer-3.html):

"Naar mijn mening (en wat ik zelf al jaren gebruik in deze wereld) is Mbps gewoon million bits per second (ofwel 1000000). Zie ook

http://searchnetworking.techtarget.com/sDefinition/0,290660,sid7_gci212534,00.html
http://lyberty.com/encyc/articles/kb_kilobytes.html
http://www.speedguide.net/read_articles.php?id=115

bps komt uit de telecommunicatie wereld en daar hebben we het over pulsen, en gebruik van het decimale stelsel is normaal (en niet het binaire stelsel)."

Ramon Fincken
03/11/07, 16:49
Merlijn, bedoel je niet dit topic?
http://www.webhostingtalk.nl/dedicated-colocated-hosting-forum/70367-berekening-van-dataverkeer-2.html

Wynand
03/11/07, 17:46
De SI eenheid (niet-binaire) zou altijd gebruikt moeten worden, in BE zelfs verplicht. :)

FransVanNispen
03/11/07, 19:32
Het blijft verwarrend, k (1000) en K (1024). Inmiddels draaien mijn metingen al een paar dagen perfect nu, soms een heel kleine afwijking, maar die is logisch omdat het moment van meten enkele seconden kan afwijken.

Wynand
03/11/07, 21:48
Het zou een pak eenvoudiger zijn als iedereen en alles gewoon de SI standaarden zou gebruiken, werkt nog het makelijkste om mee te tellen ook.

xserve
04/11/07, 16:43
Maar moet ik voor berekeningen in gigabytes nou de berekeningen doen met een k = 1000 of een k = 1024?

FransVanNispen
04/11/07, 17:29
k = 1000. 1Gb is dus 1.000.000.000 bytes

INEXPro
04/11/07, 17:43
Aha! Ik heb deze week een tooltje geschreven om dataverkeer direct uit de RRD files te lezen. Daar had ik elke keer een afwijking van ongeveer 4,45%. Maar nu weet ik dus waar dat verschil vandaan komt. Ik zal het eens proberen met 1000 voor een k te rekenen en kijken of het dan goed gaat.

Is er een mogelijkheid dat je dat scriptje openbaar wilt maken?

xserve
04/11/07, 18:45
Dank je Frans, kan ik er weer mee verder.

Tim: Ik kan dat scriptje wel openbaar maken, dat is geen probleem. Het is nu nog een proof-of-concept maar ik zal hem de komende week even wat netter maken en dan gooi ik hem hier wel even om de hoek.

xserve
04/11/07, 23:49
Bijgaand de paar regels waarmee ik vanuit PHP het totale dataverkeer in Bytes uit de RRD bestanden haal die Cacti heeft aangemaakt en ook vult.

Ik hoop dat je hier wat mee kunt Tim.

ErikM
05/11/07, 14:46
Bijgaand de paar regels waarmee ik vanuit PHP het totale dataverkeer in Bytes uit de RRD bestanden haal die Cacti heeft aangemaakt en ook vult.

Ik hoop dat je hier wat mee kunt Tim.

tegenwoordig kan dat met VDEF's allemaal veel makkelijker:


rrdtool graph - DEF:in=$file:$in:AVERAGE DEF:out=$file:$out:AVERAGE VDEFintotal=in,TOTAL VDEF:outtotal=out,TOTAL PRINT:intotal:%.lf PRINT:outtotal:%.lf

voor mensen met versie 1.0.x van rrdtool is er ook een variant met CDEF's ipv VDEF's(welke ik ook gebruik voor http://haas.oezie.org/cgi-bin/traffic.pl?jaar=2007)

xserve
06/11/07, 10:39
tegenwoordig kan dat met VDEF's allemaal veel makkelijker:


rrdtool graph - DEF:in=$file:$in:AVERAGE DEF:out=$file:$out:AVERAGE VDEFintotal=in,TOTAL VDEF:outtotal=out,TOTAL PRINT:intotal:%.lf PRINT:outtotal:%.lf

Maar Erik dit is toch voor een grafiek? Ik heb helemaal geen grafiek nodig maar uitsluitend 1 waarde, namelijk het totale aantal dataverkeer. Dit is voor automatische facturatie van het gebruikte dataverkeer.

ErikM
06/11/07, 11:02
Maar Erik dit is toch voor een grafiek? Ik heb helemaal geen grafiek nodig maar uitsluitend 1 waarde, namelijk het totale aantal dataverkeer. Dit is voor automatische facturatie van het gebruikte dataverkeer.


ja en nee, als je geen locatie opgeeft van een plaatje en PRINT ipv GPRINT gebruikt komen de waardes gewoon op de command line naar de stdout(welke je weer verder kan verwerken). als je een locatie opgeeft van een plaatje en GPRINT gebruikt komt het idd in de grafiek te staan. zoals http://haas.oezie.org/rrd/router/10.0.11.10-103.html.

INEXPro
06/11/07, 13:29
Bijgaand de paar regels waarmee ik vanuit PHP het totale dataverkeer in Bytes uit de RRD bestanden haal die Cacti heeft aangemaakt en ook vult.

Ik hoop dat je hier wat mee kunt Tim.

Bedankt voor het script. ik heb hem al draaien en ga er mogelijk een uitbreiding voor maken, deze stuur ik dan uiteraard naar je op.