Curs: | SeguretatXarxesInformàtiques, LinuxAdministracioAvancada, DissenyXarxesLinux |
Fitxers: | EinesMonitoritzacio.pdf (EinesMonitoritzacio.odp) |
Repositori SVN: | https://[email protected]/svn/iceupc/SeguretatXarxesInformàtiques |
Usuari: | anonymous |
Paraula de pas: | sense paraula de pas |
Autors: | Sergi Tur Badenas |
Multi Router Traffic Grapher (MRTG) és una eina Open Source per monitoritzar i mesurar la càrrega de trànsit d'enllaços de xarxa. Permet als usuaris visualitzar gràfiques de trànsit de xarxa.
Originalment va ser creat per Tobias Oetiker i Dave Rand per monitoritzar el tràfic dels routers, però realment es pot utilitzar per crear gràfiques i estadístiques de gairebé qualsevol cosa.
MRTG està escrit en Perl, és multiplataforma i disponible sota una llicència GNU General Public License.
MRTG utilitza el protocol SNMP per tal de monitoritzar valors OID d'un dispositiu remot. Els dispositius a monitoritzar han de tenir activat el SNMP i han de tenir una base de dades MIB que proporcioni el valor OID que s'està intentant monitoritzar.
MRTG guarda les dades obtingudes en un log on s'emmagatzema el nou valor i els anteriors.
NOTA: Per defecte MRTG no utilitza RRDTool. De fet MRTG és un sistema anterior a RRDTool. Es pot però configurar MRTG per tal que utilitzi RRDTool. Consulteu MRTG i RRDTool
Més endavant es pot crear un document HTML amb aquesta base de dades per tal mostrar les gràfiques de trànsit del dispositiu monitoritzat.
TODO:
In 1994 I was working at a site where we had one 64kbit line to the outside world. Obviously, everybody was interested in knowing how the link was performing. So I wrote a quick hack which created a constantly updated graph on the web that showed the traffic load on our Internet link. This eventually evolved into a rather configurable Perl script called MRTG-1.0 which I released in spring 1995. After a few updates, I left my job at DMU to start work at the Swiss Federal Institute of Technology. Due to lack of time I had to put MRTG aside. One day in January of 1996, I received email from Dave Rand asking if I had any ideas why MRTG was so slow. Actually, I did. MRTG's programming was not very efficient and it was written entirely in Perl. After a week or so, Dave wrote back to me and said he had tried what I had suggested for improving MRTG's speed. Since the changes did not help much, he had decided to rewrite the time-critical sections of MRTG in C. The code was attached to his email. His tool increased the speed of MRTG by a factor of 40! This got me out of my 'MRTG ignorance' and I started to spend my spare time developing of MRTG-2. Soon after MRTG-2 development had begun I started to give beta copies to interested parties. In return I got many feature patches, a lot of user feedback and bug fixes. The product you are getting now wouldn't be in this state if it hadn't been for the great contributions and support I received from of many people. I would like to take this opportunity to thank them all. (See the files CHANGES for a long list of folk people who helped to make MRTG what it is today.)
$ sudo apt-get install mrtg
Debconf ens preguntarà el següent:
L'opció per defecte és la correcta en la majoria de casos.
Un cop instal·lat ens interessen els següents fitxers:
Fitxers de configuració:
$ dpkg -L mrtg | grep etc /etc /etc/cron.d /etc/cron.d/mrtg /etc/logrotate.d /etc/logrotate.d/mrtg /etc/mrtg.cfg
Comandes:
$ dpkg -L mrtg | grep bin /usr/bin /usr/bin/cfgmaker /usr/bin/indexmaker /usr/bin/mrtg /usr/bin/rateup
Fitxers web:
NOTA: Corregit. Abans potser si existien? Ara s'han de crear a mà almenys a una Ubuntu 11.10 no formen part del paquet
$ dpkg -L mrtg | grep www
/var/www /var/www/mrtg /var/www/mrtg/mrtg-l.png /var/www/mrtg/mrtg-m.png /var/www/mrtg/mrtg-r.png /var/www/mrtg/mrtg-ti.png
Aquesta comanda s'utilitza per crear un fitxer mrtg.cfg per a un dispositiu concret. Es connecta via SNMP al dispositiu i configura mrtg.conf per tal que tingui en compte aquell dispositiu. Consulteu l'apartat Configuració.
El fitxer de configuració de mrtg és:
/etc/mrtg.cfg
Normalment s'utilitza l'eina cfgmaker per generar el fitxer de configuració. El que necessitem és un dispositiu amb suport per a SNMP i executar la següent comanda:
$ sudo cfgmaker --community public --output /etc/mrtg.cfg localhost
On l'important és l'últim paràmetre localhost que pot ser substituir per l'adreça IP del dispositiu que voleu monitoritzar. El fitxer:
/etc/mrtg.cfg
Es on es guarda la configuració d'aquest dispositiu.
NOTA: public és la clau típica READ_ONLY de SNMP. Cal que modifiqueu aquest valor si aquesta no és la vostra clau.
NOTA 2: Cada dispositiu ha de tenir un fitxer de configuració diferent
Aquesta comanda crea el fitxer /etc/mrtg.cfg.
Ara tenim dos opcions per aplicar els canvis:
$ sudo env LANG=C /usr/bin/mrtg /etc/mrtg.cfg
Que és el que s'executa cada 5 minuts amb cron:
$ cat /etc/cron.d/mrtg */5 * * * * root if [ -d /var/lock/mrtg ]; then if [ -x /usr/bin/mrtg ] && [ -r /etc/mrtg.cfg ]; then env LANG=C /usr/bin/mrtg /etc/mrtg.cfg >> /var/log/mrtg/mrtg.log 2>&1; fi else mkdir /var/lock/mrtg; fi
Per a crear les imatges i una pàgina html básica podem executar la utilitat indexmaker:
$ sudo indexmaker /etc/mrtg.cfg --output routerADSL.html $ sudo cp routerADSL.html /var/www/mrtg
NOTA: Per cada dispositiu, heu de canviar la pàgina web que utilitzeu (per exemple passar de routerADSL.htm a routerADSL2.htm) i el fitxer de
configuració (per exemple canviar /etc/mrtg.cfg per /etc/mrtg1.cfg)
I ara podem accedir a un resum de les gràfiques del router ADSL accedint a la web
http://localhost/mrtg/routerADSL.html
Com es comportarà la comanda mrtg es control a partir del fitxer de configuració mrtg.conf. Si no s'indica el contrari aquest fitxer de configuració es troba a:
/etc/mrtg/mrtg.conf
Es pot però indicar explícitament un altre fitxer com es fa per exemple amb l'eina snpservices de Guifi.net simplement executant:
/usr/bin/mrtg PATH_FITXER_CONFIGURACIO
Per exemple:
/usr/bin/mrtg /var/lib/snpservices/data/mrtg.cfg
Es poden crear fitxers molt bàsics de configuració utilitzant l'eina cfgmaker però si es vol fer una configuració complexa o a mida cal configurar el fitxer a mà.
NOTA: De fet a snpservices el fitxer de configuració es genera de forma dinàmica a partir de les dades de la web de guifi.net (fitxers XML i el CNML. S'accedeix a aquestes dades a través d'un servei web)
La sintaxi general del fitxer és:
Vegem un exemple de fitxer bàsic creat amb l'ordre:
$ sudo cfgmaker --community public --output /etc/mrtg.cfg 10.139.221.162
El fitxer queda de la següent forma:
NOTA: NO es mostren totes les interfícies de xarxa, només la que està sense comentar.
# Created by # /usr/bin/cfgmaker --community public --output /etc/mrtg.cfg 10.139.221.162 ### Global Config Options # for UNIX # WorkDir: /home/http/mrtg # for Debian WorkDir: /var/www/mrtg # or for NT # WorkDir: c:\mrtgdata ### Global Defaults # to get bits instead of bytes and graphs growing to the right # Options[_]: growright, bits EnableIPv6: no ###################################################################### # System: UBNT # Description: Linux 2.6.15-5.2 #1 Tue Jul 26 11:43:34 EEST 2011 mips # Contact: [email protected] # Location: TortosaCrtaTortosaAlRd1 ###################################################################### ### Interface 1 >> Descr: 'lo' | Name: '' | Ip: '' | Eth: '' ### ### The following interface is commented out because: ### * it is a Software Loopback interface ### * has a speed of 0 which makes no sense # # Target[10.139.221.162_1]: 1:[email protected]: # SetEnv[10.139.221.162_1]: MRTG_INT_IP="" MRTG_INT_DESCR="lo" # MaxBytes[10.139.221.162_1]: 0 # Title[10.139.221.162_1]: Traffic Analysis for 1 -- UBNT # PageTop[10.139.221.162_1]: <h1>Traffic Analysis for 1 -- UBNT</h1> # <div id="sysdetails"> # <table> # <tr> # <td>System:</td> # <td>UBNT in TortosaCrtaTortosaAlRd1</td> # </tr> # <tr> # <td>Maintainer:</td> # <td>[email protected]</td> # </tr> # <tr> # <td>Description:</td> # <td>lo </td> # </tr> # <tr> # <td>ifType:</td> # <td>softwareLoopback (24)</td> # </tr> # <tr> # <td>ifName:</td> # <td></td> # </tr> # <tr> # <td>Max Speed:</td> # <td>0.0 Bytes/s</td> # </tr> # </table> # </div> ... ... ### Interface 7 >> Descr: 'ath0' | Name: '' | Ip: '' | Eth: '' ### Target[10.139.221.162_7]: 7:[email protected]: SetEnv[10.139.221.162_7]: MRTG_INT_IP="" MRTG_INT_DESCR="ath0" MaxBytes[10.139.221.162_7]: 37500000 Title[10.139.221.162_7]: Traffic Analysis for 7 -- UBNT PageTop[10.139.221.162_7]: <h1>Traffic Analysis for 7 -- UBNT</h1> <div id="sysdetails"> <table> <tr> <td>System:</td> <td>UBNT in TortosaCrtaTortosaAlRd1</td> </tr> <tr> <td>Maintainer:</td> <td>[email protected]</td> </tr> <tr> <td>Description:</td> <td>ath0 </td> </tr> <tr> <td>ifType:</td> <td>ethernetCsmacd (6)</td> </tr> <tr> <td>ifName:</td> <td></td> </tr> <tr> <td>Max Speed:</td> <td>37.5 MBytes/s</td> </tr> </table> </div>
Vegem un altre exemple, en aquest cas és una porció del fitxer MRTG generat per snpservices de Guifi.net
# PathAdd: /usr/local/rrdtool-1.2.12/bin # LibAdd: /usr/local/rrdtool-1.2.12/lib/perl/5.8.8/i386-linux-thread-multi HtmlDir: /var/lib/snpservices/rrimg/ ImageDir: /var/lib/snpservices/rrimg/ LogDir: /var/lib/snpservices/rrdb/ LogFormat: rrdtool ThreshDir: /var/lib/snpservices/rrdb/ Forks: 25 Title[30946_ping]: Temps del ping de #Av.stadi5cRd1 PageTop[30946_ping]: <H1>Latència #Av.stadi5cRd1</H1> <TABLE <TR><TD>System:</TD> <TD>#Av.stadi5cRd1</TD></TR> <TR><TD>Maintainer:</TD> <TD>[email protected]</TD></TR> <TR><TD>Description:</TD><TD>ping</TD></TR> <TR><TD>IP:</TD> <TD>10.36.253.201</TD></TR> </TABLE> Target[30946_ping]: `/usr/share/snpservices/common/ping.sh 10.36.253.201` MaxBytes[30946_ping]: 2000 Options[30946_ping]: growright,unknaszero,nopercent,gauge LegendI[30946_ping]: Perduts LegendO[30946_ping]: Temps mig Legend1[30946_ping]: Temps max. en ms Legend2[30946_ping]: Temps min. en ms YLegend[30946_ping]: RTT (ms) Target[30946-0_traf]: \wifi0:[email protected]: SetEnv[30946-0_traf]: MRTG_INT_IP="10.36.253.201" MRTG_INT_DESCR="#Av.stadi5cRd1" MaxBytes[30946-0_traf]: 3000000 Title[30946-0_traf]: Trafic a Tortosavstd5cRd1CPE0 de #Av.stadi5cRd1 PageTop[30946-0_traf]: <H1>Tràfic a Tortosavstd5cRd1CPE0 de #Av.stadi5cRd1</H1> <TABLE> <TR><TD>System:</TD> <TD>#Av.stadi5cRd1</TD></TR> <TR><TD>Maintainer:</TD> <TD>[email protected]</TD></TR> <TR><TD>Description:</TD><TD>Tortosavstd5cRd1CPE0</TD></TR> <TR><TD>Max Speed:</TD> <TD>30.0 Mbits/s</TD></TR> </TABLE> Title[27385_ping]: Temps del ping de #avremolinsRd1 PageTop[27385_ping]: <H1>Latència #avremolinsRd1</H1> <TABLE <TR><TD>System:</TD> <TD>#avremolinsRd1</TD></TR> <TR><TD>Maintainer:</TD> <TD>[email protected]</TD></TR> <TR><TD>Description:</TD><TD>ping</TD></TR> <TR><TD>IP:</TD> <TD>10.36.253.42</TD></TR> </TABLE> Target[27385_ping]: `/usr/share/snpservices/common/ping.sh 10.36.253.42` MaxBytes[27385_ping]: 2000 Options[27385_ping]: growright,unknaszero,nopercent,gauge LegendI[27385_ping]: Perduts LegendO[27385_ping]: Temps mig Legend1[27385_ping]: Temps max. en ms Legend2[27385_ping]: Temps min. en ms YLegend[27385_ping]: RTT (ms) Target[27385-0_traf]: \wifi0:[email protected]:
El fitxer principal és:
$ cat /etc/cron.d/mrtg */5 * * * * root if [ -x /usr/bin/mrtg ] && [ -r /etc/mrtg.cfg ]; then mkdir -p /var/log/mrtg ; env LANG=C /usr/bin/mrtg /etc/mrtg.cfg 2>&1 &> /dev/null | tee -a /var/log/mrtg/mrtg.log ; fi
Com podeu veure s'executa l'ordre mrtg cada 5 minuts. El cron pot semblar llarg i complicat però el que fa és executar:
env LANG=C /usr/bin/mrtg /etc/mrtg.cfg 2>&1 &> /dev/null | tee -a /var/log/mrtg/mrtg.log ;
Això només ho fa si existeixen els fitxers /usr/bin/mrtg i /etc/mrtg.cfg. El resultat d'executar aquesta comanda es guarda al fitxer de log:
/var/log/mrtg/mrtg.log
Vegeu també cron.
Per tal que MRTG utilitzi RRD i no pas el format de fitxers de log cal modificar la configuració:
$ sudo joe /etc/mrtg.cfg ... #LOGFORMAT. Afegir per Sergi Tur LogFormat: rrdtool
Un cop feta la modificació cal tenir en compte que:
El rendiment és bastant més ràpid i les gràfiques només es generen sota demanda (cal cridar a l'ordre RRDTOOL)
IMPORTANT: Noteu que la presentació i creació de les gràfiques no dependrà en absolut de MRTG, sino de com crideu l'eina rrdtool!
Vegeu també Routers2 un frontend web que combina MRTG i RRDTool.