MRTG-NT-GUIDE(1)

πŸ“¦
version 2.17.10 Β· 2 versions
  • 2.17.10 Β· alpine 3.22, alpine 3.23, alpine 3.24, centos-stream 10, fedora 43, fedora 44, nixos 26.05, nixpkgs unstable (latest)
  • 2.17.7 Β· centos-stream 9
, in alpine 3.22, alpine 3.23, alpine 3.24, centos-stream 10, fedora 43, fedora 44, nixos 26.05, nixpkgs unstable

🌸 MRTG-NT-GUIDE(1) β€” the mrtg-nt-guide era πŸ’…

okay bestie, sit DOWN because we're about to install MRTG 2.17.10 on Windows and honestly? it's giving "project" energy but it's so doable. this is the manual page for mrtg-nt-guide, aka The MRTG 2.17.10 Windows Installation Guide. grab a snack. let's go 🫢


✨ SYNOPSIS ✨

Installing MRTG on a Windows box is not quite as "click and point" as some might want it to be. But then again, it is not all that difficult if you follow the instructions below.

ngl bestie, it's not literally a wizard, but it's also not scary. just follow along and you'll be fine πŸ’–

πŸŽ€ PREREQUISITES πŸŽ€

To get MRTG to work on Windows you need the following:

like... two things. two. that's it. periodt 🧚


πŸ’– INSTALLING πŸ’–

I suggest you do the following from the machine that will be running MRTG, which, in this case, is also a web server. All examples are for doing things to a LOCAL machine.

First

Unzip MRTG to C:\mrtg-2.17.10 on the Windows machine of your choice.

Next

Install Perl on the same Windows machine. You might want to make sure that the Perl binary directory is listed in your system path.

C:\Perl\bin;%SystemRoot%\system32;%SystemRoot%;...

You can manually check this by going to [Control Panel]->[System]->[Environment]

To see if everything is installed properly you can open a Command Shell and go into c:\mrtg-2.17.10\bin. Type:

perl mrtg

This should give you a friendly error message complaining about the missing MRTG configuration file. Now, you have successfully installed MRTG and Perl.

πŸ’€ getting an error and being told that means it worked?? yes bestie. the error is the vibe check passing. no config file = no complaints = something's wrong fr fr.

🌈 CONFIGURING MRTG 🌈

Now it is time to create a configuration for MRTG. But before we begin you need to know a few things. Take an opportunity to gather the following information:

  • The IP address or hostname and the SNMP port number, (if non standard), of the device you want to monitor.
  • If you want to monitor something other than bytes in and out, you must also know the SNMPOID of what you want to monitor.
  • Finally you need to know the read-only SNMP community string for your device. If you don't know it, try public, that is the default.

For the rest of this document we will be using device 10.10.10.1 ( a CISCO Catalyst 5000) with Community string public. We are interested in monitoring traffic, and the CPU load. Let's begin.

The first thing we do in setting up MRTG is making a default config file. Get to a cmd prompt and change to the c:\mrtg-2.17.10\bin directory. Type the following command:

perl cfgmaker public@10.10.10.1 --global "WorkDir: c:\www\mrtg" --output mrtg.cfg

This creates an initial MRTG config file for you. Note that in this file all interfaces of your router will be stored by number. Unfortunately, these numbers are likely to change whenever you reconfigure your router. In order to work around this you can get cfgmaker to produce a configuration which is based on Ip numbers, or even Interface Descriptions. Check cfgmaker

If you get an error message complaining about no such name or no response, your community name is probably wrong.

Now, let's take a look at the mrtg.cfg file that was created.

In Perl, a "#" is a comment, synonymous with "REM" in DOS.

Add the following to the top of the mrtg.cfg file:

WorkDir: c:\www\mrtg

This is where the web pages are created, usually a web root.

######################################################################
# Description: LCP SUWGB
# Contact: Administrator
# System Name: LC-Bridge
# Location: Here
#.....................................................................

TargetDevice's IP Address:Interface Number:Community:IP Address

Target[10.10.10.1.1]: 1:public@10.10.10.1

This is the interface speed (Default is 10 megabits; for 100Mbit devices use 12500000 and so on...)

MaxBytes[10.10.10.1.1]: 1250000

Title[10.10.10.1.1]: LC-Bridge (sample.device): ether0

This section determines how the web page headers will look

PageTop[10.10.10.1.1]: <H1>Traffic Analysis for ether0</H1>
 <TABLE>
 <TR><TD>System:</TD><TD>LC-Bridge inAndover</TD></TR>
 <TR><TD>Maintainer:</TD><TD>Administrator</TD></TR>
 <TR><TD>Interface:</TD><TD>ether0(1)</TD></TR>
 <TR><TD>IP:</TD><TD>sample.device(10.10.10.1)</TD></TR>
 <TR><TD>Max Speed:</TD>
 <TD>1250.0 kBytes/s (ethernetCsmacd)</TD></TR>
 </TABLE>

 Target[10.10.10.1.2]: 2:public@10.10.10.1
 MaxBytes[10.10.10.1.2]: 1250000
 Title[10.10.10.1.2]: LC-Bridge (): ulink0
 PageTop[10.10.10.1.2]: <H1>Traffic Analysis for ulink0</H1>
  <TABLE>
  <TR><TD>System:</TD><TD>LC-Bridge inAndover</TD></TR>
  <TR><TD>Maintainer:</TD><TD>Administrator</TD></TR>
  <TR><TD>Interface:</TD><TD>ulink0(2)</TD></TR>
  <TR><TD>IP:</TD><TD>()</TD></TR>
  <TR><TD>Max Speed:</TD>
  <TD>1250.0 kBytes/s (ethernetCsmacd)</TD></TR>
  </TABLE>

 #---------------------------------------------------------------

And that's a very basic MRTG config file. You can run this and see your results by going into the c:\mrtg-2.17.10\bin directory and typing:

perl mrtg mrtg.cfg

It is normal to get errors for the first two times you run this command. The errors will alert you about the fact that there have not been any log files in existence before.

If you take a look at those web pages they are not very exciting (yet). You need to have the MRTG files run every five minutes to produce the desired results. Just run it again after a few minutes. You should now be able to see the first lines in your graphs.

the way that "it errors the first two times, that's normal" is just so real 😭 don't panic, bestie. it's literally the expected behaviour. run it again. the graphs will show up and you'll be obsessed ✨

πŸ”₯ MAKE MRTG RUN ALL THE TIME πŸ”₯

Starting MRTG by hand every time you want to run it is not going to make you happy I guess.

There is a special option you can set in the MRTG configuration file so so that MRTG will not terminate after it was started. Instead it will wait for 5 minutes and then run again.

Add the option

RunAsDaemon: yes

to your mrtg.cfg file and start it with:

start /Dc:\mrtg-2.17.10\bin wperl mrtg --logging=eventlog mrtg.cfg

If you use wperl instead of perl, no console window will show. MRTG is now running in the background. If it runs into problems it will tell you so over the EventLog. To stop MRTG, open the Task Manager and terminate the wperl.exe process. If mrtg has anything to tell you these messages can be found in the event log.

If you put a shortcut with

Target:    wperl mrtg --logging=eventlog mrtg.cfg
Start in:  c:\mrtg-2.17.10\bin

into your start-up folder, MRTG will now start whenever you login to your NT box.

If you do not want to log into your box just to start MRTG. Have a look at http://www.firedaemon.com/mrtg-howto.html which describes a free tool to start any program as a Service. The pages gives specific instructions for MRTG users.


πŸ‘‘ HOW TO SETUP MRTG AS A WINDOWS SERVICE πŸ‘‘

πŸ’œ Additional Prerequisites

⚠️ both executables, bestie. BOTH. not one. both. and yes, admin rights are non-negotiable. πŸ’…

🌸 Preparation

Please complete the following steps before starting the installation:

  • Copy srvany.exe and instsrv.exe to c:\mrtg-2.17.10\bin\ (your MRTG bin directory).
  • Create a file called mrtg.reg anywhere on your system and paste the following content into it:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MRTG\Parameters]
"Application"="c:\\perl\\bin\\wperl.exe"
"AppParameters"="c:\\mrtg-2.17.10\\bin\\mrtg --logging=eventlog c:\\mrtg-2.17.10\\bin\\mrtg.cfg"
"AppDirectory"="c:\\mrtg-2.17.10\\bin\\"

πŸ¦‹ Service Installation

Once again, assuming that MRTG is already fully installed and configured on the target system under c:\mrtg\ the following steps are necessary to setup MRTG as a service.

Using the command prompt go into the temporary directory where you unzipped the package. When there type the following command to create a service named "MRTG" in the Windows Services management console:

instsrv MRTG c:\mrtg\bin\srvany.exe

Now you need to create the App* entries required for the new service. You can do this by either right-clicking on the mrtg.reg file and selecting 'merge' or by running the following command:

regedit /s mrtg.reg

After setting up the registry entry it is time to point it to your MRTG installation. If you have installed MRTG under c:\mrtg\, you can skip this step. Open your registry editor (Start -> Run -> regedt32), and locate the [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MRTG] key. Make sure that the ImagePath variable is correctly pointing to srvany.exe located in your MRTG bin directory (for example c:\mrtg\bin\srvany.exe). Next you have to expand the MRTG tree, and go to the [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MRTG\Parameters] key. Under Parameters make sure that all the Application variables are setup properly.

At this point you are ready to run the service. The only thing left to do is to start the MRTG service in the Services management console. After you do this, you should see two new processes running on your system: srvany.exe and wperl.exe. Make sure to stop any previously running MRTG processes to avoid conflict.

🚨 Note that it is imperative to set the RunAsDaemon: yes option or the service will stop after just one single run! 🚨

like, do not skip that one. it's the whole plot. if you forget it your service runs once and then just... dies. gone. πŸ’€

✨ EXAMPLE ✨

okay bestie, this is the moment we've all been waiting for: an actual config file πŸ’–. The page walks us through monitoring our mythical Cisco Cat 5000 β€” we want utilization on ports 3, 5, 10, and 24, plus the CPU Load. And the reason this example ate is that it shows off nonstandard mrtg configurations and a whole pile of extra options at the same time, so you get the full vibe in one place ✨

Here's the config, exactly as it is, no cap:

WorkDir: c:\www\mrtg
RunAsDaemon: yes

######################################################################
# Description: LCP SUWGB
# Contact: Administrator
# System Name: LC-Bridge
# Location: Here
#.....................................................................

Target[10.10.10.1.1]: 3:public@10.10.10.1
MaxBytes[10.10.10.1.1]: 1250000
Title[10.10.10.1.1]: LC-Bridge (sample-device): ether0
PageTop[10.10.10.1.1]: <H1>Traffic Analysis for ether0</H1>
 <TABLE>
<TR><TD>System:</TD><TD>LC-Bridge inAndover</TD></TR>
<TR><TD>Maintainer:</TD><TD>Administrator</TD></TR>
<TR><TD>Interface:</TD><TD>ether0(3)</TD></TR>
<TR><TD>IP:</TD><TD>sample-device(10.10.10.1)</TD></TR>
<TR><TD>Max Speed:</TD>
<TD>1250.0 kBytes/s (ethernetCsmacd)</TD></TR>
</TABLE>

#---------------------------------------------------------------

Target[10.10.10.1.2]: 5:public@10.10.10.1
MaxBytes[10.10.10.1.2]: 1250000
Title[10.10.10.1.2]: LC-Bridge (): ulink0
PageTop[10.10.10.1.2]: <H1>Traffic Analysis for ulink0</H1>
 <TABLE>
 <TR><TD>System:</TD><TD>LC-Bridge inAndover</TD></TR>
 <TR><TD>Maintainer:</TD><TD>Administrator</TD></TR>
 <TR><TD>Interface:</TD><TD>ulink0(5)</TD></TR>
 <TR><TD>IP:</TD><TD>()</TD></TR>
 <TR><TD>Max Speed:</TD>
 <TD>1250.0 kBytes/s (ethernetCsmacd)</TD></TR>
 </TABLE>

#---------------------------------------------------------------

Target[10.10.10.1.1]: 10:public@10.10.10.1
MaxBytes[10.10.10.1.1]: 1250000
Title[10.10.10.1.1]: LC-Bridge (sample-device): ether0
PageTop[10.10.10.1.1]: <H1>Traffic Analysis for ether0</H1>
 <TABLE>
 <TR><TD>System:</TD><TD>LC-Bridge inAndover</TD></TR>
 <TR><TD>Maintainer:</TD><TD>Administrator</TD></TR>
 <TR><TD>Interface:</TD><TD>ether0(10)</TD></TR>
 <TR><TD>IP:</TD><TD>sample-device(10.10.10.1)</TD></TR>
 <TR><TD>Max Speed:</TD>
 <TD>1250.0 kBytes/s (ethernetCsmacd)</TD></TR>
 </TABLE>

#---------------------------------------------------------------

Target[10.10.10.1.2]: 24:public@10.10.10.1
MaxBytes[10.10.10.1.2]: 1250000
Title[10.10.10.1.2]: LC-Bridge (): ulink0
PageTop[10.10.10.1.2]: <H1>Traffic Analysis for ulink0</H1>
 <TABLE>
 <TR><TD>System:</TD><TD>LC-Bridge inAndover</TD></TR>
 <TR><TD>Maintainer:</TD><TD>Administrator</TD></TR>
 <TR><TD>Interface:</TD><TD>ulink0(24)</TD></TR>
 <TR><TD>IP:</TD><TD>()</TD></TR>
 <TR><TD>Max Speed:</TD>
 <TD>1250.0 kBytes/s (ethernetCsmacd)</TD></TR>
 </TABLE>

#---------------------------------------------------------------

# Router CPU load %
Target[cpu.1]:1.3.6.1.4.1.9.2.1.58.0&1.3.6.1.4.1.9.2.1.58.0:public@10.10.10.1
RouterUptime[cpu.1]: public@10.10.10.1
MaxBytes[cpu.1]: 100
Title[cpu.1]: CPU LOAD
PageTop[cpu.1]: <H1>CPU Load %</H1>
Unscaled[cpu.1]: ymwd
ShortLegend[cpu.1]: %
XSize[cpu.1]: 380
YSize[cpu.1]: 100
YLegend[cpu.1]: CPU Utilization
Legend1[cpu.1]: CPU Utilization in % (Load)
Legend2[cpu.1]: CPU Utilization in % (Load)
Legend3[cpu.1]:
Legend4[cpu.1]:
LegendI[cpu.1]:
LegendO[cpu.1]: &nbsp;Usage
Options[cpu.1]: gauge

quick tour, bestie 🌸: it kicks off with WorkDir and RunAsDaemon, then that comment banner up top (# Description: LCP SUWGB, # Contact: Administrator, # System Name: LC-Bridge, # Location: Here β€” the whole header set), and after that it's one block per port, each with its own Target, MaxBytes, Title and PageTop, split apart by those #---...--- divider lines. Then at the bottom it pivots to the router CPU load block, and that one is doing something different β€” instead of an interface index, Target[cpu.1] is pointing straight at a raw OID: 1.3.6.1.4.1.9.2.1.58.0&1.3.6.1.4.1.9.2.1.58.0:public@10.10.10.1, with RouterUptime, MaxBytes of 100, and all the legend/size/unscaled tuning that goes with it. Every single option is spelled out right there in the file, so nothing is hiding from you πŸ’…

And fr fr, this is the blueprint for how to monitor any SNMP device β€” the only thing you actually need to bring is knowing which OID you want to hit πŸ‘‘. Once again: if you want the deep lore on the more advanced features of mrtg, go read the rest of the documentation. That's where it all lives πŸ¦‹


πŸ‘‘ AUTHORS πŸ‘‘

These are the absolute icons who made this page happen, and we're giving them their flowers 🌸:

  • Tobi Oetiker β€” <tobi@oetiker.ch>
  • David S. Divins β€” <ddivins@moon.jic.com>
  • Steve Pierce β€” <MRTG@HDL.com>
  • Artyom Adjemov β€” <one.bofh@gmail.com>
  • Ilja Ivanov β€” <ivanov@bseu.by>
  • Karel Fajkus β€” <http://fajkus.cz/>

and that's the whole page, bestie πŸ’– This was MRTG-NT-GUIDE(1), sitting pretty at version 2.17.10 and dated 2022-01-19. Go forth, graph your ports, watch your CPU load, and stay hydrated πŸ“πŸ’… periodt.