Je eigen stats maken met een leuk grafiekje?
We weten allemaal dat het met cacti en nagios ook kan, maar die zijn niet altijd even geschikt om op je eigen site te integreren en de benodigde templates zijn ook niet altijd even gemakkelijk te maken, toch?
Ik post dit dus alleen maar omdat ik regelmatig de vraag krijg van beheerders en programmeurs om grafiekjes te maken van de gekste dingen, maar het uitleggen ervan kost meer tijd dan het daadwerkelijk toepassen:
Als eerste dien je rrdtool en snmpd te installeren (in FreeBSD gewoon even vanuit de PORTS doen, de rest kan yum'men en apt-get'ten)
Pas je snmpd.conf aan ivm, eventuele accessrechten e/o je communitystring en start de snmpd daemon.
Nu kun je (eventueel op een remote server) je stats gaan bijhouden via een RRD database:
Als voorbeeld het in/out traffic van de eerste netwerkkaart:
1. maak een rrd database aan ( 300 sec interval, 200 records lang, in/out counter en avarge en voor de rest van de params gebruik je 'man' maar
2. Knutsel jezelf een scriptje dat je servers periodiek uitleest. Onderstaande is een zeer ingekort voorbeeld om een lijst servers uit te lezen en het in/out traffic te totaliseren.Code:$ rrdtool create /data/bandwidth.rrd --step=300 --start N DS:in:COUNTER:300:U:U DS:out:COUNTER:300:U:U RRA:AVERAGE:0.5:1:200
cron.php:
Wijzig 'IF-MIB::ifOutOctets.1' om een ander mib via snmp te gebruiken (andere NIC, aantal spammails etc...)Code:<? $ser = array ( "server1.domein.nl", "server2.domein.nl", "server3.domein.nl", "serverN.domein.nl" ); $totIn['tot'] = 0; $totOut['tot'] = 0; for ($i=0; $i<count($ser);$i++) { $retIn = NULL; $retOut = NULL; $trafIn = "/usr/local/bin/snmpget -v 1 -c JouwCommunityString -Oqv ".$ser[$i]." IF-MIB::ifInOctets.1"; $trafOut = "/usr/local/bin/snmpget -v 1 -c JouwCommunityString-Oqv ".$ser[$i]." IF-MIB::ifOutOctets.1"; exec($trafIn, $retIn ); exec($trafOut, $retOut ); $totIn['tot'] += (8*$retIn[0]); // octets->bits->mbits in graph $totOut['tot'] += (8*$retOut[0]); } $cmd = "/usr/local/bin/rrdtool update /data/bandwidth.rrd N:".$totIn['tot'].":".$totOut['tot'].""; exec($cmd, $ret2); ?>
3. Maak een grafiek van het hele verhaal en dump het image ergens waar je webserver het kan lezen (in Mbit):
Ik hoop dat de statistiekfreaks er iets aan hebbenCode:/usr/local/bin/rrdtool graph /www/data/bandwidth.png -a PNG -h 125 -s -129600 -v "Data Throughput" 'DEF:in=/data/bandwidth.rrd:in:AVERAGE' 'DEF:out=/data/bandwidth.rrd:out:AVERAGE' 'CDEF:kbin=in,1048576,/' 'CDEF:kbout=out,1048576,/' 'AREA:in#00FF00:Bandwidth In' 'LINE1:out#0000FF:Bandwidth Out\j' 'GPRINT:kbin:LAST:Last In\: %3.2lf MB' 'GPRINT:kbout:LAST:Last Out\: %3.2lf MB\j' 'GPRINT:kbin:AVERAGE:Average In\: %3.2lf MB' 'GPRINT:kbout:AVERAGE:Average Out\:%3.2lf MB\j'
(Onder voorbehoud van typo's en bevattingsvermogen van lezer...)

Likes:




)
Quote