HOWTO SNMP and MRTG Made Easy
From Gentoo Linux Wiki
| Installation • Kernel & Hardware • Networks • Portage • Software • System • X Server • Gaming • Non-x86 • Emulators • Misc |
Please format this article according to the guidelines and Wikification suggestions, then remove this notice {{Wikify}} from the article
Contents |
[edit] Required & Optional Packages
Required:
Optional:
[edit] 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:
mkdir /etc/mrtg mkdir /etc/cron.mrtg 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> |
Edit /etc/conf.d/snmpd file, and in SNMPD_FLAGS line have:
| File: /etc/conf.d/snmpd |
|
-C -c /etc/snmp/snmpd.conf |
This makes sure SNMPD uses the above /etc/snmp/snmpd.conf, and _only_ that file.
Now the daemon:
/etc/init.d/snmpd start /sbin/rc-update add snmpd default
[edit] Configuration
[edit] 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
[edit] 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 |
[edit] CPU-Temp
| File: /etc/mrtg/cpu-temp.cfg |
LoadMIBs: /usr/share/snmp/mibs/LM-SENSORS-MIB.txt Target[localhost.cpu-temp]: .1.3.6.1.4.1.2021.13.16.2.1.3.1&.1.3.6.1.4.1.2021.13.16.2.1.3.1:public@localhost PageTop[localhost.cpu-temp]: <H1>CPU Temperature</H1> WorkDir: /var/www/localhost/htdocs/mrtg Options[localhost.cpu-temp]: nopercent,growright,gauge,noinfo,pngdate,nobanner Factor[localhost.cpu-temp]: 0.001 PNGTitle[localhost.cpu-temp]: CPU Temperature Title[localhost.cpu-temp]: CPU Temperature kMG[localhost.cpu-temp]: C MaxBytes[localhost.cpu-temp]: 100000 YLegend[localhost.cpu-temp]: Temperature (c) ShortLegend[localhost.cpu-temp]: C LegendI[localhost.cpu-temp]: CPU Temperature: LegendO[localhost.cpu-temp]: Legend1[localhost.cpu-temp]: CPU Temperature Legend2[localhost.cpu-temp]: #Unscaled[localhost.cpu-temp]: ymwd #WithPeak[localhost.cpu-temp]: ymwd XSize[localhost.cpu-temp]: 360 YSize[localhost.cpu-temp]: 75 #YTics[localhost.cpu-temp]: 10 Colours[localhost.cpu-temp]: DKBLUE#61A0DF,DKBLUE#0000DD,DARKGREEN#006600,VIOLET#FF00FF |
To get working CPU-Temp you must emerge net-analyzer/net-snmp with lm_sensors USE flag.
[edit] Memory
| File: /etc/mrtg/mem.cfg |
LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt Target[localhost.mem]: memAvailReal.0&memAvailReal.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 |
[edit] 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
[edit] 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) |
[edit] Making Jobs
[edit] Traffic
| File: /etc/cron.mrtg/traffic |
#!/bin/sh /usr/bin/mrtg /etc/mrtg/traffic.cfg |
[edit] CPU
| File: /etc/cron.mrtg/cpu |
#!/bin/sh /usr/bin/mrtg /etc/mrtg/cpu.cfg |
[edit] CPU-Temp
| File: /etc/cron.mrtg/cpu-temp |
#!/bin/sh /usr/bin/mrtg /etc/mrtg/cpu-temp.cfg |
[edit] Memory
| File: /etc/cron.mrtg/mem |
#!/bin/sh /usr/bin/mrtg /etc/mrtg/mem.cfg |
[edit] Swap
| File: /etc/cron.mrtg/swap |
#!/bin/sh /usr/bin/mrtg /etc/mrtg/swap.cfg |
[edit] Ping
| File: /etc/cron.mrtg/ping |
#!/bin/sh /usr/bin/mrtg /etc/mrtg/ping.cfg |
[edit] 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/cpu-temp /etc/cron.mrtg/mem /etc/cron.mrtg/swap /etc/cron.mrtg/ping
[edit] 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/cpu-temp.cfg \ /etc/mrtg/mem.cfg \ /etc/mrtg/swap.cfg \ /etc/mrtg/ping.cfg
[edit] Make the mrtg.cfg
cfgmaker --global "WorkDir: /var/www/localhost/htdocs/mrtg/" \ --global "Options[_]: growright,bits" \ --ifref=ip \ public@localhost > /etc/mrtg/mrtg.cfg
[edit] Cronjob
/bin/cat >> /var/spool/cron/crontabs/root */5 * * * * /bin/run-parts /etc/cron.mrtg >/dev/null 2>&1
Now just press [ctrl+d]
or
/usr/bin/crontab -e
[edit] 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
[edit] 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
[edit] Advanced Users
For other targets (and other stat), try with other object identifier (OID)
[edit] Polling
roberto@moira mrtg $ snmpwalk -v 1 -c public localhost mgmt.1.2.2.1.10.2 IF-MIB::ifInOctets.2 = Counter32: 140021440
[edit] 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 }
[edit] Most Important Files
/usr/share/doc/net-snmp /usr/share/doc/mrtg-*/contrib
- man mrtg
- man snmpd
- man snmpwalk
- man crontab
- man cat
[edit] Discussion
Original forum discussion can be found here
[edit] 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
- /etc/cron.mrtg/cpu
- /etc/cron.mrtg/cpu-temp
- /etc/cron.mrtg/mem
- /etc/cron.mrtg/swap
- /etc/cron.mrtg/ping
