Az MRTG telepítése


v1.0 Kedd Július 31 9:17:16 2001

Írta: Micskó Gábor [ trey trey@debian.szintezis.hu ]


Ez a dokumentum leírja, hogyan telepítsük fel az MRTG -t Debian GNU/LiNUX -ra


Tartalom :

1.0 Mi is az az MRTG ?

2.0 A licensz

3.0 A telepítés

4.0 Az MRTG beállítása

5.0 Hogyan futtassuk az MRTG -t ?

6.0 Minták

7.0 Kapcsolódó linkek

8.0 Végszó


1.0 Mi is az az MRTG ?

A Multi Router Traffic Grapher (MRTG) egy olyan program, amellyel monitorozni tudjuk egy hálózati eszközön átmenõ forgalmat. Az MRTG a hálózati forgalomból különbözõ szempontok alapján HTML oldalakat készít, amelyekben GIF képekre rajzolja a forgalmat. Az MRTG -t perl -ben és C -ben írták, fut minden UN*X rendszeren. Én eddig Solaris 8 -on és Linux -on teszteltem minden gond nélkül. Az MRTG a müködéshez egy jól portolható perlben írt SNMP implementációt használ, ezért nem szükséges semmilyen külsö SNMP csomag. Az MRTG támogatja az új SNMPv2c 64bit -es számlálókat. Könnyen konfigurálható a hozzá adott konfigurácós eszközökkel. Kellõen gyors, mert a kritikus rutinokat átírták perl -bõl C -re. A képeket .png formátumúra készíti, ehhez a GD library -t használja.

Az MRTG -vel készíthetünk grafikont az elmúlt 5 perc átlagából (daily view) , az elmúlt 30 perc átlagából (weekly view), az elmúlt 2 óra átlagából (monthly view), és az elmúlt 1 nap átlagából (yearly view). Az MRTG nem kizárólag a Network Load -ot tudja analizálni, hanem az összes SNMP eseményt. Ha írsz hozzá külsõ modult, akkor szinte bármit monitorozhatsz : System Load, Login Session, Modem állapot, CPU terhelés, Irc szerver kihasználtság, HDD kapacitás, és még ezer dolog. A modulokat perl -ben célszerû megírni, és amint látni fogjuk nagyon egyszerûen lehet ilyen modulokat fejleszteni.

 

2.0 A lincensz

Az MRTG szabadon felhasználható a GNU General Public License feltételei mellett.


3.0 A telepítés

Az MRTG

A legfrissebb verziót innen töltheted le : http://ee-staff.ethz.ch/~oetiker/webtools/mrtg/pub/

Az MRTG forráskódban tölthetõ le, tehát használat elõtt le kell fordítani. Hogy ezt megtehessük szükség van egy C fordítóra (gcc) és a gépen installált perl -re.

Mivel Debian -t használunk =] szerencsénk van. A Debian tartalmaz minden eszközt a telepítéshez. Mégis ha a legújabb MRTG -re van szükséged, akkor töltsd le a fennti link -rõl.

Tehát az installálás a következõképpen történik. A megfelelõ sources.list beállítása mellett :

apt-get install mrtg

Amikre dependel:

debconf (>= 0.4.07), libsnmp-session-perl (>= 0.83), perl-modules (>= 5.6.0), perl, libc6 (>= 2.2.1-2), libgd1 (>= 1.8.3-3), libpng2, zlib1g (>= 1:1.1.3)


Ajánlott még: mrtg-contrib, httpd | www-browser


Ezeket kell nekünk még telepíteni. A web browser meg arra kell, hogy a mûvünket meg is tudjuk nézni. Ha a grafikonunkat a webre is ki szeretnénk helyezni, akkor telepítsünk egy httpd -t is (apache).

 

Az SNMP(d)

Ahhoz hogy használjuk kell egy SNMP daemon is. Az MRTG ugyan tartalmaz egy SNMP implementációt, én mégis azt javaslom, hogy telepítsünk egyet.

apt-get install snmpd

Amikre dependel:

libc6 (>= 2.2.2-2), libsnmp4.2 (=4.2.1-1), libwrap0


ez a parancs feltelepíti az SNMP daemont a gépünkre. Mivel a daemon biztosági szempontból nincs beállítva - amire fel is hivja a figyelmünket - konfigurálnunk kell. Ezt megtehetjük a /etc/snmp/snmpd.conf szerkesztésével.

Keressük meg ezt a részt:

###############################################################################
# Access Control
###############################################################################
....
....

####
# First, map the community name (COMMUNITY) into a security name
# (local and mynetwork, depending on where the request is coming
# from):

# sec.name source community


com2sec paranoid default public
#com2sec readonly default public
#com2sec readwrite default private


Amint látjuk a security alapbeállítása 'paranoid', azaz ezzel sokmindent nem tudunk így kezdeni. Ahhoz, hogy az MRTG le tudja kérdezni, át kell kissé írnunk:

# sec.name source community


#com2sec paranoid default public
com2sec readonly default public
#com2sec readwrite default private


Tehát a default a 'com2sec readonly default public' legyen. Több jogot felesleges adnunk. Ha átírtuk, mentsük el a config -ot, majd /etc/init.d/snmpd restart parancsot adjuk ki bátran. Ez azért kell, hogy az új beállítások érvényesüljenek.

Ha ez megvan minden olyan összetevõt telepítettünk amely az MRTG futtatásához, használatához kell.

 

4.0 Az MRTG beállítása

Az MRTG konfigurálása kicsit nehezebb dolog. Ez mindíg az adott konfigurációtól függ. Én most egy standalone gép ppp0, eth0, vmnet1 csatolóját fogom monitorozni. Természetesen az MRTG képes a ppp0, ippp0, stb. interface -ket is monitorozni. A beállítások nem sokban térnek el egymástól.

Ahhoz hogy az MRTG mûködni tudjon, szükség van egy mrtg.cfg file -ra (lehet más is a neve). Ezt általában a /etc/mrtg.cfg helyen találod. De ez az installálás utan még nem létezik, neked kell legyártani. Ehhez a 'cfgmaker' nevû programot fogjuk használni, amelyet az MRTG -vel szállítanak. Az elsõ dolog a router -ünk (server -ünk) Target -jét meghatározzuk. A Target mondja meg az MRTG -nek mit is kell monitorozni. Pl:

Target[valamigep.valahol.hu]: 2:public@valamigep.valahol.hu

Tehát:

cfgmaker 2:public@195.56.26.224 >> mrtg.cfg

ezzel a configfile jó esetben el is készült. Itt az IP cím a ppp0 interface IP -je.

Egy példa az mrtg.cg -re:

 

---------------------------------X----X-----------------------------------

WorkDir: /var/www/mrtg
WriteExpires: Yes

######################################################################
# System: sunshine
# Description: Linux sunshine 2.4.6 #2 Sun Jul 8 13:46:40 CEST 2001 i686
# Contact: Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
# Location: Unknown (configure /etc/snmp/snmp.local.conf)
######################################################################


### Interface 1 >> Descr: 'lo' | Name: '' | Ip: '127.0.0.1' | Eth: '' ###
### The following interface is commented out because:
### * it is a Software Loopback interface
#
# Target[195.56.26.224_1]: 1:public@195.56.26.224:
# SetEnv[195.56.26.224_1]: MRTG_INT_IP="127.0.0.1" MRTG_INT_DESCR="lo"
# MaxBytes[195.56.26.224_1]: 1250000
# Title[195.56.26.224_1]: Traffic Analysis for 1 -- sunshine
# PageTop[195.56.26.224_1]: <H1>Traffic Analysis for 1 -- sunshine</H1>
# <TABLE>
# <TR><TD>System:</TD> <TD>sunshine in Unknown (configure /etc/snmp/snmp.local.conf)</TD></TR>
# <TR><TD>Maintainer:</TD> <TD>Root <root@localhost> (configure /etc/snmp/snmp.local.conf)</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>1250.0 kBytes/s</TD></TR>
# <TR><TD>Ip:</TD> <TD>127.0.0.1 (trey.hu)</TD></TR>
# </TABLE>


### Interface 2 >> Descr: 'eth0' | Name: '' | Ip: '10.0.0.1' | Eth: '00-08-c7-ea-7a-4b' ###

Target[195.56.26.224_2]: 2:public@195.56.26.224:
SetEnv[195.56.26.224_2]: MRTG_INT_IP="10.0.0.1" MRTG_INT_DESCR="eth0"
MaxBytes[195.56.26.224_2]: 1250000
Title[195.56.26.224_2]: Traffic Analysis for 2 -- sunshine
PageTop[195.56.26.224_2]: <H1>Traffic Analysis for 2 -- sunshine</H1>
<TABLE>
<TR><TD>System:</TD> <TD>sunshine in Unknown (configure /etc/snmp/snmp.local.conf)</TD></TR>
<TR><TD>Maintainer:</TD> <TD>Root <root@localhost> (configure /etc/snmp/snmp.local.conf)</TD></TR>
<TR><TD>Description:</TD><TD>eth0 </TD></TR>
<TR><TD>ifType:</TD> <TD>ethernetCsmacd (6)</TD></TR>
<TR><TD>ifName:</TD> <TD></TD></TR>
<TR><TD>Max Speed:</TD> <TD>1250.0 kBytes/s</TD></TR>
<TR><TD>Ip:</TD> <TD>10.0.0.1 (sunshine.trey.hu)</TD></TR>
</TABLE>

### Interface 3 >> Descr: 'vmnet1' | Name: '' | Ip: '10.0.0.2' | Eth: '00-50-56-01-00-00' ###

Target[195.56.26.224_3]: 3:public@195.56.26.224:
SetEnv[195.56.26.224_3]: MRTG_INT_IP="10.0.0.2" MRTG_INT_DESCR="vmnet1"
MaxBytes[195.56.26.224_3]: 1250000
Title[195.56.26.224_3]: Traffic Analysis for 3 -- sunshine
PageTop[195.56.26.224_3]: <H1>Traffic Analysis for 3 -- sunshine</H1>
<TABLE>
<TR><TD>System:</TD> <TD>sunshine in Unknown (configure /etc/snmp/snmp.local.conf)</TD></TR>
<TR><TD>Maintainer:</TD> <TD>Root <root@localhost> (configure /etc/snmp/snmp.local.conf)</TD></TR>
<TR><TD>Description:</TD><TD>vmnet1 </TD></TR>
<TR><TD>ifType:</TD> <TD>ethernetCsmacd (6)</TD></TR>
<TR><TD>ifName:</TD> <TD></TD></TR>
<TR><TD>Max Speed:</TD> <TD>1250.0 kBytes/s</TD></TR>
<TR><TD>Ip:</TD> <TD>10.0.0.2 ()</TD></TR>
</TABLE>


### Interface 4 >> Descr: 'ppp0' | Name: '' | Ip: '195.56.26.224' | Eth: '' ###
### The following interface is commented out because:
### * has a speed of 0 which makes no sense
#
# Target[195.56.26.224_4]: 4:public@195.56.26.224:
# SetEnv[195.56.26.224_4]: MRTG_INT_IP="195.56.26.224" MRTG_INT_DESCR="ppp0"
# MaxBytes[195.56.26.224_4]: 0
# Title[195.56.26.224_4]: Traffic Analysis for 4 -- sunshine
# PageTop[195.56.26.224_4]: <H1>Traffic Analysis for 4 -- sunshine</H1>
# <TABLE>
# <TR><TD>System:</TD> <TD>sunshine in Unknown (configure /etc/snmp/snmp.local.conf)</TD></TR>
# <TR><TD>Maintainer:</TD> <TD>Root <root@localhost> (configure #/etc/snmp/snmp.local.conf)</TD></TR>
# <TR><TD>Description:</TD><TD>ppp0 </TD></TR>
# <TR><TD>ifType:</TD> <TD>ppp (23)</TD></TR>
# <TR><TD>ifName:</TD> <TD></TD></TR>
# <TR><TD>Max Speed:</TD> <TD>0.0 Bytes/s</TD></TR>
# <TR><TD>Ip:</TD> <TD>195.56.26.224 (gyor-1.dialin.datanet.hu)</TD></TR>
# </TABLE>


Target[localhost.cpu]: `/home/trey/cpuinfo.pl`
MaxBytes[localhost.cpu]: 100
Options[localhost.cpu]: gauge, nopercent
Unscaled[localhost.cpu]: dwym
YLegend[localhost.cpu]: % of CPU used
ShortLegend[localhost.cpu]: %
LegendO[localhost.cpu]: &nbsp;CPU System:
LegendI[localhost.cpu]: &nbsp;CPU User:
Title[localhost.cpu]: localhost.cpu name
PageTop[localhost.cpu]: <H1>CPU usage for localhost.cpu name</H1>
<TABLE>
<TR><TD>System:</TD> <TD>Debian GNU/LiNUX 2.2</TD></TR>
<TR><TD>Maintainer:</TD> <TD>System administrator</TD></TR>
<TR><TD>Description:</TD><TD>Intel Pentium III</TD></TR>
<TR><TD>Ip:</TD> <TD>localhost (debian)</TD></TR>
</TABLE>


---------------------------------X----X-----------------------------------

 

Ahol a 'WorkDir: /var/www/mrtg' ahova az MRTG dolgozik. A configfile elsõ szakaszában a 'lo' azaz localhost -ot monitorozza, aztán az 'eth0' , vmnet1, ppp0, és vépül egy külsõ modul segítségével a gép CPU terhelését. Itt jól látható, hogy miként tudunk egy általunk írt modult futtatni. A `/home/trey/cpuinfo.pl` egy perl script amit nekünk kell megírni, vagy beszerezni.

 

---------------------------------X----X-----------------------------------

#!/usr/bin/perl

# Script modified by trey
# Succesfully tested on this systems:
# Solaris8 x86
# Debian GNU/Linux 2.2potato, 2.3 Woody unstable

#========================================================
# CPU Usage script for mrtg
#
# File: cpuinfo.pl
# Author: Matthew Schumacher | schu@7x.com
# Version: 1.0
#
# Date: 10/15/1999
# Purpose: This script reports CPU usage for user
# and system to mrtg, along with uptime
# and the machine's hostname.
#
# Usage: ./cpuinfo.pl {machine} {os}
#
# For now {os} can only be "sun" or "linux"
#
# If you would like to hard code defaults
# then enter them below.
#
# Info: Designed on RedHat linux 6.0 with perl
# version 5.004_04. The script itself has
# only been tested on Linux, however, it
# has been tested to connect to, and graph
# CPU usage on sun (solaris 7) and linux.
#
# This script requires both sar and rsh to
# be installed and working. Because linux
# does not come with sar (mine didn't) it
# may be necessary to download and install
# it. Get it here:
#
# ftp://metalab.unc.edu/pub/Linux/system/status/sysstat-2.0.tar.gz
#
#
# How it works:
#
# The script uses rsh to run sar on the the
# remote machine. Sar samples the cpu time
# for both user and system once per second
# for 10 seconds. It then reports an average
# to the script, which parses out the information
# and formats it in a way mrtg can understand.
# The script also runs uptime to get the machine's
# uptime and passes it to mrtg.
#
# [Note to User]
#
# If anyone has comments or suggestions, email me at
# schu@7x.com and I'll try to get back to you :)
#
# -------------------------------------------------------------
#

# Sample cfg:
#
# Target[machine]: `./cpuinfo.pl`
# MaxBytes[machine]: 100
# Options[machine]: gauge, nopercent
# Unscaled[machine]: dwym
# YLegend[machine]: % of CPU used
# ShortLegend[machine]: %
# LegendO[machine]: &nbsp;CPU System:
# LegendI[machine]: &nbsp;CPU User:
# Title[machine]: Machine name
# PageTop[machine]: <H1>CPU usage for Machine name
# </H1>
# <TABLE>
# <TR><TD>System:</TD><TD>Machine name</TD></TR>
# </TABLE>
#
# --------------------------------------------------------------
#
# Ok, we are now done with the notes :)
#
#========================================================
# setup local vars

my($machine, $os);

#=======================================================
# == Enter your default machine name and os here ==

$machine = "195.56.253.245"; # Enter machine to monitor here
$os = "sun"; # Currently there is only linux and sun

# == You shouldn't need to edit anything below this line ==
#========================================================

# This allows command args to override defaults listed above


if (scalar(@ARGV) > 2)
{
print("USAGE: cpuinfo.pl {machine} {os}\n");
exit(-1);
}

if ($ARGV[0] ne '' && $ARGV[0] ne '#')
{
$machine = $ARGV[0];
}

if ($ARGV[1] ne '' && $ARGV[1] ne '#')
{
$os = $ARGV[1];
}

# Validate the os

SWITCH:
{
if ($os =~ /^sun$/){last SWITCH;}
if ($os =~ /^linux$/){last SWITCH;}

# DEFAULT: Die if we can't figure out what the os is
die "Can't figure out which OS the machine is.\n";
}


# Execute the appropriate subroutine based on the os
&$os;

exit(0);

#=======================================================
# Subroutines: names of subroutines are supported OSs.
#========================================================

sub sun
{

# Run commands
# $getcpu = `rsh $machine "sar -u 1 10" | grep Average`;
# $getuptime = `rsh $machine "uptime"`;


$getcpu = `sar -u 1 40 | grep Average`;
$getuptime = `uptime`;

# Parse though getcpu and get data
$getcpu =~ /^Average\s+(\d+)\s+(\d+)\s+/;
$outputusr = $1;
$outputsys = $2;

# Print getcpu data for mrtg
print $outputusr."\n";
print $outputsys."\n";

# Parse though getuptime and get data
$getuptime =~ /^\s+(\d{1,2}:\d{2}..)\s+up\s+(\d+)\s+(......),/;

# Print getuptime data for mrtg
print $2." ".$3."\n";

# Print machine name for mrtg
print $machine."\n";

}


sub linux
{

# Run commands
# $getcpu = `rsh $machine "/usr/local/bin/sar -u 1 10 | grep "Average:""`;
# $getuptime = `rsh $machine "/usr/bin/uptime"`;

$getcpu = `/usr/local/bin/sar -u 1 10 | grep "Average:"`;
$getuptime = `/usr/bin/uptime`;

# Parse though getcpu and get data
$getcpu =~ /^Average:\s+(\d+).(\d+)%\s+(\d+).(\d+)%\s+(\d+).(\d+)%\s+(\d+).(\d+)%/;
$getcpuusr = $1;
$getcpusys = $5;

# Print getcpu data for mrtg
print $getcpuusr."\n";
print $getcpusys."\n";

# Parse though getuptime and get data
$getuptime =~ /^\s+(\d{1,2}:\d{2}..)\s+up\s+(\d+)\s+(\w+),/;

# Print getuptime data for mrtg
print $2." ".$3."\n";

# Print machine name for mrtg
print $machine."\n";

}

---------------------------------X----X-----------------------------------

 

5.0 Hogyan futtassuk az MRTG -t ?

Mivel szeretnénk ha a Network Load -ot, CPU terhelést, stb. folyamatosan nyomon követhetnénk (csak ennek van értelme), szükséges az MRTG -t crontab - ba tenni (lehet daemon -ként is futtatni ehhez olvasd el a /usr/doc/mrtg könyvtárban levõ dokumentációt. Meg amúgyis : RTFM).

editáljuk a /etc/crontab file -t, és irjuk bele az alábbi sort:

5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/bin/mrtg /etc/mrtg.cfg > /dev/null 2>&1

Ez azt teszi hogy minden nap, minden ötödik percben lefuttatja az MRTG -t, és elkészíti a grafikonokat.

 

6.0 Minták

Itt két mintát láthatsz az MRTG kimenetébõl. Mielõtt valaki összefüggést keresne a fennti configfile, és az itt látható képek között, elmondom, hogy ezek a képek nem a fennti configfile alapján készültek =).

Traffic Analysis debian.szintezis.hu

System:SunOS 5.8 aka. Solaris 8
Maintainer:System administrator
Description:iprb0
ifType:ethernetCsmacd (6)
ifName:Intel 100pro/Compaq Netelligent
Max Speed:17.0 kBytes/s
Ip:195.56.253.245 (debian)


The statistics were last updated Tuesday, 31 July 2001 at 11:20,
at which time 'debian' had been up for 93 days, 2:55:43.
`Daily' Graph (5 Minute Average)
day
Max  In:5675.0 B/s (33.4%) Average  In:205.0 B/s (1.2%) Current  In:360.0 B/s (2.1%)
Max  Out:10.5 kB/s (61.9%) Average  Out:1024.0 B/s (6.0%) Current  Out:7691.0 B/s (45.2%)

`Weekly' Graph (30 Minute Average)
week
Max  In:8898.0 B/s (52.3%) Average  In:471.0 B/s (2.8%) Current  In:61.0 B/s (0.4%)
Max  Out:14.7 kB/s (86.2%) Average  Out:1769.0 B/s (10.4%) Current  Out:390.0 B/s (2.3%)

`Monthly' Graph (2 Hour Average)
month
Max  In:4997.0 B/s (29.4%) Average  In:318.0 B/s (1.9%) Current  In:69.0 B/s (0.4%)
Max  Out:14.2 kB/s (83.7%) Average  Out:1596.0 B/s (9.4%) Current  Out:209.0 B/s (1.2%)

`Yearly' Graph (1 Day Average)
year
Max  In:31.4 kB/s (184.5%) Average  In:846.0 B/s (5.0%) Current  In:246.0 B/s (1.4%)
Max  Out:30.6 kB/s (180.2%) Average  Out:2277.0 B/s (13.4%) Current  Out:1194.0 B/s (7.0%)


GREEN ###Incoming Traffic in Bytes per Second
BLUE ###Outgoing Traffic in Bytes per Second



MRTGMulti Router Traffic Grapher
version 2.9.10 Tobias Oetiker <oetiker@ee.ethz.ch> and   Dave Rand  <dlr@bungi.com>

 

CPU usage for debian.szintezis.hu name

System:SunOS 5.8 aka. Solaris 8
Maintainer:System administrator
Description:Intel Pentium Pro 200 dual
Ip:195.56.253.245 (debian)


The statistics were last updated Tuesday, 31 July 2001 at 11:20,
at which time '195.56.253.245' had been up for 93 day(s).
`Daily' Graph (5 Minute Average)
day
Max  CPU User:29.0 % Average  CPU User:3.0 % Current  CPU User:1.0 %
Max  CPU System:5.0 % Average  CPU System:1.0 % Current  CPU System:1.0 %

`Weekly' Graph (30 Minute Average)
week
Max  CPU User:8.0 % Average  CPU User:1.0 % Current  CPU User:2.0 %
Max  CPU System:4.0 % Average  CPU System:0.0 % Current  CPU System:1.0 %

`Monthly' Graph (2 Hour Average)
month
Max  CPU User:8.0 % Average  CPU User:1.0 % Current  CPU User:2.0 %
Max  CPU System:2.0 % Average  CPU System:0.0 % Current  CPU System:1.0 %

`Yearly' Graph (1 Day Average)
year
Max  CPU User:2.0 % Average  CPU User:1.0 % Current  CPU User:2.0 %
Max  CPU System:0.0 % Average  CPU System:0.0 % Current  CPU System:0.0 %


GREEN ###Incoming Traffic in Bytes per Second
BLUE ###Outgoing Traffic in Bytes per Second



MRTGMulti Router Traffic Grapher
version 2.9.10 Tobias Oetiker <oetiker@ee.ethz.ch> and   Dave Rand  <dlr@bungi.com>

 

7.0 Kapcsolódó linkek

Az MRTG hivatalos honlapja: http://ee-staff.ethz.ch/~oetiker/webtools/mrtg/mrtg.html

Az MRTG FAQ oldalát itt találod: http://faq.mrtg.org/

Hogyan mûködik az SNMP? A választ itt találod: http://www.develnet.es/~david/papers/snmp/

 

8.0 Végszó

Ennyit röviden az MRTG telepítésérõl, természetesen ez a leírás a minimális lehetõségeket ismerteti. Amennyiben extra kívnánságod van, látogass el az MRTG oldalára, és olvasd el a dokumentációt. A weboldalon nagyon jól dokumentálva van minden.

Ha valami kérdésed, vagy építõ jellegû kritikád van : trey@debian.szintezis.hu

Sok szerencsét.