Let's Begin
NOTE: This guide suggests using
an mrtg config per target, this is rather inefficient as mrtg can do them all
in 1 job itself SU Into root before continuing forward. Start by:
/usr/bin/mkdir /etc/mrtg
/usr/bin/mkdir /etc/cron.mrtg
/usr/bin/mkdir -p /var/www/localhost/htdocs/mrtg
Now let's edit /etc/snmp/snmpd.conf NOTE: Ignore the warning not to edit this
file.
File: /etc/snmp/snmpd.conf
|
com2sec local 127.0.0.1/32 public
com2sec local 10.10.10.0/24 public
group MyROGroup v1 local
group MyROGroup v2c local
group MyROGroup usm local
view all included .1 80
access MyROGroup "" any noauth exact all none none
syslocation MyLocation
syscontact Me <me@somewhere.org>
|
File: /etc/conf.d/snmpd
|
-C -c /etc/snmp/snmpd.conf
|
Now the daemon:
/etc/init.d/snmpd start
/sbin/rc-update add snmpd default
Configuration
Traffic
/usr/bin/cfgmaker \
--output=/etc/mrtg/traffic.cfg \
--ifdesc=ip \
--ifref=descr \
--global "WorkDir: /var/www/localhost/htdocs/mrtg" \
--global "Options[_]: bits,growright" \
public@localhost
CPU
Now set up some files:
File: /etc/mrtg/cpu.cfg
|
WorkDir: /var/www/localhost/htdocs/mrtg
LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt
Target[localhost.cpu]:ssCpuRawUser.0&ssCpuRawUser.0:public@127.0.0.1+ ssCpuRawSystem.0&ssCpuRawSystem.0:public@127.0.0.1+ ssCpuRawNice.0&ssCpuRawNice.0:public@127.0.0.1
RouterUptime[localhost.cpu]: public@127.0.0.1
MaxBytes[localhost.cpu]: 100
Title[localhost.cpu]: CPU Load
PageTop[localhost.cpu]: <H1>Active CPU Load %</H1>
Unscaled[localhost.cpu]: ymwd
ShortLegend[localhost.cpu]: %
YLegend[localhost.cpu]: CPU Utilization
Legend1[localhost.cpu]: Active CPU in % (Load)
Legend2[localhost.cpu]:
Legend3[localhost.cpu]:
Legend4[localhost.cpu]:
LegendI[localhost.cpu]: Active
LegendO[localhost.cpu]:
Options[localhost.cpu]: growright,nopercent,gauge
|
Memory
File: /etc/mrtg/mem.cfg
|
LoadMIBs: /usr/share/snmp/mibs/HOST-RESOURCES-MIB.txt
Target[localhost.mem]: .1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.6.0:public@localhost
PageTop[localhost.mem]: <H1>Free Memory</H1>
WorkDir: /var/www/localhost/htdocs/mrtg
Options[localhost.mem]: nopercent,growright,gauge,noinfo
Title[localhost.mem]: Free Memory
MaxBytes[localhost.mem]: 1000000
kMG[localhost.mem]: k,M,G,T,P,X
YLegend[localhost.mem]: bytes
ShortLegend[localhost.mem]: bytes
LegendI[localhost.mem]: Free Memory:
LegendO[localhost.mem]:
Legend1[localhost.mem]: Free memory, not including swap, in bytes
|
Swap
File: /etc/mrtg/swap.cfg
|
LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt
Target[localhost.swap]: memAvailSwap.0&memAvailSwap.0:public@localhost
PageTop[localhost.swap]: <H1>Swap Memory</H1>
WorkDir: /var/www/localhost/htdocs/mrtg
Options[localhost.swap]: nopercent,growright,gauge,noinfo
Title[localhost.swap]: Free Memory
MaxBytes[localhost.swap]: 1000000
kMG[localhost.swap]: k,M,G,T,P,X
YLegend[localhost.swap]: bytes
ShortLegend[localhost.swap]: bytes
LegendI[localhost.swap]: Free Memory:
LegendO[localhost.swap]:
Legend1[localhost.swap]: Swap memory avail, in bytes
|
- we're almost there
Ping
File: /etc/mrtg/ping.cfg
|
WorkDir: /var/www/localhost/htdocs/mrtg
Title[localhost.ping]: Round Trip Time
PageTop[localhost.ping]: <H1>Round Trip Time</H1>
Target[localhost.ping]: `/etc/mrtg/ping.sh`
MaxBytes[localhost.ping]: 2000
Options[localhost.ping]: growright,unknaszero,nopercent,gauge
LegendI[localhost.ping]: Pkt loss %
LegendO[localhost.ping]: Avg RTT
YLegend[localhost.ping]: RTT (ms)
|
Making
Jobs
Traffic
File: /etc/cron.mrtg/traffic
|
#!/bin/sh
/usr/bin/mrtg /etc/mrtg/traffic.cfg
|
CPU
File: /etc/cron.mrtg/cpu
|
#!/bin/sh
/usr/bin/mrtg /etc/mrtg/cpu.cfg
|
Memory
File: /etc/cron.mrtg/mem
|
#!/bin/sh
/usr/bin/mrtg /etc/mrtg/mem.cfg
|
Swap
File: /etc/cron.mrtg/swap
|
#!/bin/sh
/usr/bin/mrtg /etc/mrtg/swap.cfg
|
Ping
File: /etc/cron.mrtg/ping
|
#!/bin/sh
/usr/bin/mrtg /etc/mrtg/ping.cfg
|
Ping.sh
File: /etc/mrtg/ping.sh
|
#!/bin/sh
PING="/bin/ping"
# Google, for example
ADDR="google.com"
DATA=`$PING -c10 -s500 $ADDR -q `
LOSS=`echo $DATA | awk '{print $18 }' | tr -d %`
echo $LOSS
if [ $LOSS = 100 ];
then
echo 0
else
echo $DATA | awk -F/ '{print $5 }'
fi
|
/bin/chmod +x /etc/cron.mrtg/*
/bin/chmod +x /etc/mrtg/ping.sh
Run each script 3 times
(disregard the warnings) /etc/cron.mrtg/traffic
/etc/cron.mrtg/cpu
/etc/cron.mrtg/mem
/etc/cron.mrtg/swap
/etc/cron.mrtg/ping
Make
the Index
/usr/bin/indexmaker --output=/var/www/localhost/htdocs/mrtg/index.html \
--title="Power Under Control :)" \
--sort=name \
--enumerate \
/etc/mrtg/traffic.cfg \
/etc/mrtg/cpu.cfg \
/etc/mrtg/mem.cfg \
/etc/mrtg/swap.cfg \
/etc/mrtg/ping.cfg
Make the mrtg.cfg
cfgmaker --global "WorkDir: /var/www/localhost/htdocs/mrtg/" \
--global "Options[_]: growright,bits" \
--ifref=ip \
public@localhost > /etc/mrtg/mrtg.cfg
Cronjob
/bin/cat >> /var/spool/cron/crontabs/root
*/5 * * * * /bin/run-parts /etc/cron.mrtg 1> /dev/null
Now just press [ctrl+d]or
/usr/bin/crontab -e
Additional CronJob Options
In your *.cfg file, add the lines
- RunAsDaemon: Yes
Interval: <Choose your interval, 5 is minimum>
This option works well if you
choose not to create a cron job
Power Under Control
Open Mozilla or your browser of
choice and browse: /var/www/localhost/htdocs/mrtg/index.html
or use your httpd server http://localhost/mrtg
Advanced
Users
For other targets (and other
stat), try with other object identifier (OID)
Polling
roberto@moira mrtg $ snmpwalk -v 1 -c public localhost mgmt.1.2.2.1.10.2
IF-MIB::ifInOctets.2 = Counter32: 140021440
Translating
roberto@moria mrtg $ snmptranslate -IR -Td mgmt.1.2.2.1.10.2
IF-MIB::ifInOctets.2
ifInOctets OBJECT-TYPE
-- FROM IF-MIB, RFC1213-MIB
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION "The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of
ifCounterDiscontinuityTime."
::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) interfaces(2) ifTable(2) ifEntry(1) ifInOctets(10) 2 }
Most Important Files
/usr/share/doc/net-snmp
/usr/share/doc/mrtg-*/contrib
- man mrtg
- man snmpd
- man snmpwalk
- man crontab
- man cat
Discussion
Original forum discussion can be
found here
UTF-8
IF your system is using UTF-8,
you will get this: -----------------------------------------------------------------------
ERROR: Mrtg will most likely not work properly when the environment
variable LANG is set to UTF-8. Please run mrtg in an environment
where this is not the case. Try the following command to start:
env LANG=C /usr/bin/mrtg /etc/mrtg/mem.cfg
-----------------------------------------------------------------------
So, just do as you're told for
all files in /etc/cron.mrtg/: - /etc/cron.mrtg/traffic.sh
- /etc/cron.mrtg/cpu.sh
- /etc/cron.mrtg/mem.sh
- /etc/cron.mrtg/swap.sh
- /etc/cron.mrtg/ping.sh