=head1 NAME

mrtg - What is MRTG ?

=head1 DESCRIPTION

The Multi Router Traffic Grapher (MRTG) is a tool to monitor
the traffic load on network links.  MRTG generates HTML pages
containing PNG images which provide a LIVE visual representation of
this traffic.

Go to http://oss.oetiker.ch/mrtg for all the details about mrtg.


=head1 HIGHLIGHTS

=over

=item Portable

MRTG works on most UNIX platforms and Windows NT.

=item Perl

MRTG is written in Perl and comes with full source.

=item Portable SNMP

MRTG Uses a highly portable SNMP implementation written entirely in
Perl (thanks to Simon Leinen). There is no need to install any
external SNMP package.

=item SNMPv2c support

MRTG can read the new SNMPv2c 64bit counters. No more counter wrapping.


=item Reliable Interface Identification

Router interfaces can be identified by IP address, description and
ethernet address in addition to the normal interface number.

=item Constant size Logfiles

MRTG's logfiles do NOT grow thanks to the use of a unique data
consolidation algorithm.

=item Automatic Configuration

MRTG comes with a set of configuration tools which make configuration and
setup very simple.

=item Performance

Time critical routines are written in C (thanks to the initiative
of Dave Rand my Co-Author).

=item GIF free Graphics

Graphics are generated directly in PNG format using the
GD library by Thomas Boutell.

=item Customizability

The look of the webpages produced by MRTG is highly configurable.

=item RRDtool

MRTG has built-in hooks for using RRDtool. If you are strapped for
performance this may help.

=back

=head1 DETAILS

MRTG consists of a Perl script which uses SNMP to read the traffic
counters of your routers and a fast C program which logs the traffic
data and creates beautiful graphs representing the traffic on the
monitored network connection. These graphs are embedded into webpages
which can be viewed from any modern Web-browser.

In addition to a detailed daily view, MRTG also creates visual
representations of the traffic seen during the last seven days, the
last five weeks and the last twelve months. This is possible because
MRTG keeps a log of all the data it has pulled from the router. This
log is automatically consolidated so that it does not grow over time,
but still contains all the relevant data for all the traffic seen over
the last two years.  This is all performed in an efficient manner.
Therefore you can monitor 200 or more network links from any halfway
decent UNIX box.

MRTG is not limited to monitoring traffic, though.  It is possible to
monitor any SNMP variable you choose. You can even use an
external program to gather the data which should be monitored via
MRTG. People are using MRTG, to monitor things such as System Load,
Login Sessions, Modem availability and more. MRTG even allows you to
accumulate two or more data sources into a single graph.


=head1 HISTORY

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.)

=head1 Command-line

Mrtg is also the name of the script you have to run to poll data and
generate the graphs. Most configuration is set through the configuration
file; some command-line options exist all the same.

=over

=item B<--user> I<username>  and B<--group> I<groupname>

Run as the given user and/or group. (Unix Only)

=item B<--lock-file> I<filename>

Use an alternate lock-file (the default is to use the configuration-file
appended with C<_l>).

=item B<--confcache-file> I<filename>

Use an alternate confcache-file (the default is to use the configuration-file appended with C<.ok>)

=item B<--logging> I<filename>|B<eventlog>

If this is set to writable filename, all output from mrtg (warnings, debug messages, errors)
will go to I<filename>. If you are running on Win32 you can specify B<eventlog> instead of a filename
which will send all error to the windows event log.

B<NOTE:>Note, there is no Message DLL for mrtg. This has the side effect
that the windows event logger will display a nice message with every entry
in the event log, complaining about the fact that mrtg has no message dll. If
any of the Windows folks want to contribute one, they are welcome.

=item B<--daemon>

Put MRTG into the background, running as a daemon. This works the same way as
the config file option, but the switch is required for proper FHS operation  
(because /var/run is writable only by root)

=item B<--fhs>

Configure all mrtg paths to conform to the FHS specification
L<http://www.pathname.com/fhs/>. The following default values are assumed:

 confcachefile - /var/lib/mrtg/mrtg.ok
 pid-file      - /run/mrtg/mrtg.pid
 lock-file     - /var/lock/mrtg/mrtg.lck
 log-file      - /var/log/mrtg/mrtg.log
 


=item B<--check>

Only check the cfg file for errors. Do not do anything.

=item B<--pid-file=s>

Define the name and path of the pid file for mrtg running as a daemon

=item B<--log-only>

Only update the logfile, do not produce graphics or html pages

=item B<--debug=s>

Enable debug options. The argument of the debug option is a comma separated list of debug values:

 cfg  - watch the config file reading
 dir  - directory mangeling
 base - basic program flow 
 tarp - target parser
 snpo - snmp polling 
 fork - forking view 
 time - some timing info
 log  - logging of data via rateup or rrdtool

Example:

 --debug="cfg,snpo"

=back

=head1 READ ON

Learn more about MRTG by going to the mrtg home page on:
http://oss.oetiker.ch/mrtg

=head1 AUTHOR

Tobias Oetiker E<lt>tobi@oetiker.chE<gt> and many contributors
