=head1 NAME

mrtg-nw-guide - MRTG for NetWare

=head1 SYNOPSIS

This guide is intended to aid in the installation and configuration of MRTG on a NetWare server.

=head1 OVERVIEW

MRTG is a relative newcomer to the NetWare platform. Earlier versions of NetWare could not run MRTG natively for
several reasons:

=over

=item *

Absence of NetWare OS support in the MRTG package.

=item *

A NetWare server commandline length limitation.

=item *

Absence of the Rateup executable (Rateup.nlm).

=item *

A standard installation method.

=item *

Problems with NetWare's implementation of Perl.

=back

Support for the NetWare OS has now been fully added into MRTG, beginning with MRTG release 2.11.2.

Liberallly minded operating systems support a commandline length approaching 1000 characters. In such environments it
was an easy matter to pass the sometimes high number of parameters used by MRTG's Rateup executable directly on the
commandline. Until NetWare 6.5, NetWare had a commandline limit of 512 characters. This limitation was also removed
for NetWare 6.0 by Service Pack 5. For other NetWare versions and earlier Service Packs, this limitation remains. To
permit a 'standard' interface for NetWare, the Rateup executable has been modified to also read its parameters from
a file, and the MRTG script has been modified to support this method on a NetWare platform.  (See L</"New Rateup Switch">)

A Rateup NLM is now available, along with the necessary scripts to build it if required. See the  L</"NetWare Support">
section of this document for further details. Additionally, mrtg.pl has been revised because of the unique (to NetWare)
name of executables (NLM).

The absence of a specific installation procedure has caused MRTG to fail in the past because the Perl script could
not find or load the Rateup executable. The installation method supplied here will solve this problem for now.

The MRTG.pl script in the 2.11.2 (or later) version of MRTG has been configured to suit all likely versions of
NetWare able to use Perl5, and bypasses all of the known problems with NetWare Perl running MRTG.

=head1 PREREQUISITES

You will need the following:

=over

=item *

Perl 5.8.0 for NetWare with latest Perl Updates (February, 2005 or later; previous versions MAY work)

=item *

NetWare 5.1 w/ SP8, NetWare 6.0 w/ SP5 or NetWare 6.5 w/ SP2.

=item *

A copy of the MRTG Package (v2.11.2 at time of writting)

=item *

Three .ncf files to execute the Perl scripts at the NetWare server console.

=item *

A copy of the Rateup NLM (Pre-built or compiled)

=item *

Optionally, any NetWare supported Web Server (Netscape, Apache 1.3 or 2.0)

=back

For copies of the .ncf files and Rateup NLM, see L</"NetWare Support"> in this document.

=head1 INSTALLING MRTG

=over

=item 1.

Install the latest Perl 5.8.x release on your server. See the Perl documentation for details.

=item 2.

Create the following directories:

         SYS:/Mrtg
         SYS:/Mrtg/bin
         SYS:/Mrtg/contrib    (Optional for this document)
         SYS:/Mrtg/doc        (Optional for this document)
         SYS:/Mrtg/html
         SYS:/Mrtg/html/images
         SYS:/Mrtg/html/work
         SYS:/Mrtg/logs
         SYS:/Mrtg/translate

=item 3.

Copy from the MRTG package the following files:

         \bin\*        to  SYS:/Mrtg/bin              All files. See Note 1.

    Note 1: Add a .pl extension to the mrtg, cfgmaker and indexmaker files.
            The rateup.exe will NOT be needed on the NetWare server.

         \contrib\*    to  SYS:/Mrtg/contrib/         Include sub-directories
         \doc\*        to  SYS:/Mrtg/doc/             All files
         \images\*     to  SYS:/Mrtg/html/images/     All files
         \translate\*  to  SYS:/Mrtg/translate/       All files. See Note 2.

    Note 2: For English-only language support, all \translate files EXCEPT Locales_mrtg may be deleted.

         \lib\*        to  SYS:/Perl/lib              Include sub-directories. See Note 3.

    Note 3: This will create the SYS:/Perl/lib/mrtg2 and ./pod directories.

=item 4.

Create copies of the three .ncf files and install them:

         *.ncf         to  SYS:/Mrtg/bin

See L</"NetWare Support"> in this document for details on how to create copies of these files.

=item 5.

See L</"Compiling Rateup.nlm"> in this document for details on compiling the Rateup NLM yourself if desired.
A prebuit verion is available in the .\mrtg\bin directory where it must remain.

=back

=head1 CONFIGURING MRTG

=over

=item *

Refer to Novell documentation on configuring and loading SNMP support on your server if this is the device to
be monitored.

=item *

Edit sys:/mrtg/bin/MakeMrtgCfg.ncf:

          - replace ccccc with the GET community name for the SNMP device (typically 'public'),
          - replace ddddd with the DNS name or IP address of the device to be monitored.

          e.g    public@www.myserver.com, public@10.202.65.180

          Note 1: These are NOT mail addresses, they just look like one!
          Note 2: If multiple devices are to be monitored, add their entries to the same line:

          e.g  perl cfgmaker.pl public@www.myserver.com public@10.202.65.180 > sys:/mrtg/bin/mrtg.cfg

In this "Getting Started", it is 'suggested' to only monitor a single device.

=item *

At the server console, run:

         sys:/mrtg/bin/MakeMrtgCfg.ncf

This will create Mrtg.cfg in sys:/mrtg/bin.

=item *

Edit the Mrtg.cfg configuration file created in the previous step. Note the following:

It was found, when testing MRTG on a NetWare 6.5 server using a NIC Interface, that mrtg.cfg contained
the following message:

   ### Interface 1 >> Descr: 'Intel(R)-8255x-based-Network-Connection'...
   ### The following interface is commented out because:
   ### * has a speed of 0 which makes no sense
   # 
   ...

If this occurs, edit MakeMrtgCfg.ncf and add the following parameter as shown:

  perl sys:\mrtg\bin\cfgmaker.pl B<--zero-speed=nnn> public@10.202.65.180 > sys:\mrtg\bin\Mrtg.cfg

where B<nnn> is the interface speed in bits per second. For a 100 Megabit LAN NIC, nnn = 10000000. It will be
necessary to re-execute the MakeMrtgCfg.ncf script before continuing with this section.

Below line 16 (*** Global Defaults), add:

         HtmlDir:  <a path>  e.g  HtmlDir:  sys:/mrtg/html
         ImageDir: <a path>  e.g  ImageDir: sys:/mrtg/html/work
         LogDir:   <a path>  e.g  LogDir:   sys:/mrtg/logs
         IconDir:  <a path>  e.g  IconDir:  ./images

         Note 1: The HtmlDir entry specifies where MRTG will create its HTML pages.
         Note 2: The ImageDir entry specifies where the created graphic icons are placed.
         Note 3: The IconDir entry specifies where the supplied MRTG icons are located.
                 It MUST be a relative path from HtmlDir or absolute URL. The value shown
                 is recommended.

=item *

At the server console run:

         sys:/mrtg/bin/RunMrtg.ncf

several times. By the third time it should run without showing error messages on the console screen.
This should create:

        - A HTML page in the (HtmlDir) directory for each monitored device,
        - A .dat file in the (ImageDir) directory for each monitored device,
        - Several .png icons in the (ImageDir) directory,
        - Some log file entries in the (LogDir) directory.

         Note: If you experience a "Use of uninitialised value in split" error, it will be necessary to
               create a 'Path' environment variable at the server console; use the following example:

               env path="SYS:\"  (The actual value is immaterial, as long as the var itself exists.)

=item *

Edit sys:/mrtg/bin/MakeMrtgIndex.ncf. Change the indicated E<lt>pathE<gt> shown in the following example to
match the value entered for (HtmlDir).

         perl --noscreen sys:/mrtg/bin/indexmaker.pl sys:/mrtg/bin/Mrtg.cfg > <path>/index.html

=item *

Create an index.html page linking the seperate device HTML page(s). At the server console, run:

         sys:/mrtg/bin/MakeMrtgIndex.ncf

This will create index.html in the (HtmlDir) directory.

=item *

Optionally, configure a Web Server to permit access to the directory specified in (HtmlDir) to view the MRTG
graphs remotely, at, for example:

         http://ip_or_dns/mrtg/index.html

A sample configuration for an Apache Webserver is shown:

         Alias /mrtg/ "SYS:/mrtg/html/"

         <Directory "SYS:/mrtg/html">
             AllowOverride None
             Order allow,deny
             Allow from all
         </Directory>

=item *

Set the property of the directory pointed to by (ImageDir), to 'Purge Immediate'.

=item *

Finally, read the MRTG documentation for much more detailed configuration/usage information.

=back

Welcome to MRTG!!

=head1 MAKE MRTG RUN ALL THE TIME

MRTG can be made to run periodically by at least two means:

=over

=item *

Using CRON Scheduling

=item *

Running MRTG in Daemon Mode

=back

=head2 CRON Scheduling

To use CRON scheduling, create a CRON Scheduler entry to execute the RunMrtg.ncf file on a frequency appropriate for
the server environment and information desired. The following entry in the sys:\etc\crontab file will execute MRTG
every five minutes:

         0,5,10,15,20,25,30,35,40,45,50,55 * * * * sys:\mrtg\bin\runmrtg.ncf

The CRON Scheduler (cron.nlm) can be started automatically by adding it in AUTOEXEC.ncf or, manually loading it at
the server console.

=head2 MRTG in Daemon Mode

Refer to the MRTG-Reference document for information about the 'RunAsDaemon' option. Its use is outside the scope
of this document.

=head1 TROUBLESHOOTING

Read the MRTG documents, Perl documents or, finally, submit questions to the MRTG User forums.

For NetWare specific issues, submit questions to the Perl forum at 
     L<news://developer-forums.novell.com/novell.devsup.perl> (Novell Developer Forums).

=head1 COMPILING RATEUP.NLM

In addition to the rateup.c and Makefile.Netware supplied with the MRTG release, you will also need:

=over

=item *

Metrowerks CodeWarrior with NetWare Support OR GCC Compiler (v3.0.3 or later) with NlmConv Utility

=item *

Novell LibC NDK (February 2004 or later)

=item *

GD Graphics Library (v2.0.33 or later)

=item *

LibPNG Graphics Library (v1.2.8 or later)

=item *

ZLib Library (v1.2.2 or later)

=item *

A copy of the get_ver.awk script. (See L</"Appendix">)

=item *

A copy of the GNU build tools.    (See L<http://sourceforge.net/projects/gnuwin32/>)

=back

The auxiliary libraries can be obtained from:

     GD Graphics Library.   (See L<http://www.boutell.com/gd/>)

     PNG Graphics Library.   (See L<http://libpng.sourceforge.net/>)

     zLib Compression Library.   (See L<http://www.gzip.org/zlib/>)

Edit the Makefile.Netware file as required to match your installation paths; search
the file for the key word 'Edit'.

=head1 NETWARE SUPPORT

For copies of the NCF and get_ver.awk scripts, see L</"Appendix">.

For NetWare specific issues, submit questions to the Perl forum at 
     L<news://developer-forums.novell.com/novell.devsup.perl> (Novell Developer Forums).

To move the MRTG application to a volume other than SYS: you will need to edit the NCF
scripts provided plus the MRTG[.pl] script itself in two places.

=head1 NEW RATEUP SWITCH

The MRTG[.pl] script, when used on a NetWare platform, uses Rateup[.nlm] with the new
commandline switch:

     RATEUP -f filename

where the filename parameter can include a leading path element.

The file format is exactly the same as that used on the commandline by other operating
systems, including the leading path and name of the Rateup NLM.

=head1 APPENDIX

The Appendix includes 'copies' of the following files:

=over

=item *

The NCF files used during MRTG configuration,

=item *

The AWK script used when 'building' the Rateup NLM.

=back

To create copies of these files, simply 'cut and paste' into your favourite 'B<text editor>' and save
under their respective names. You should remove the leading space from each line.

=head3  MakeMrtgCfg.NCF

 # MakeMrtgCfg.NCF
 # Purpose : Create the MRTG Configuration File
 # Changed :  5/05/2005  New
 # Located : SYS:MRTG\BIN
 # Set For : 
 # Params  : 

 # Edit this file and:

 # Replace ccccc with your device GET SNMP Community Name - If unsure try 'public'.
 # Replace ddddd with your device IP (n.n.n.n) or domain name.

 perl --noscreen sys:\mrtg\bin\cfgmaker.pl ccccc@ddddd > sys:\mrtg\bin\Mrtg.cfg

 #
 # End of MakeMrtgCfg.NCF

=head3  RunMrtg.NCF

 # RunMrtg.NCF
 # Purpose : Run the MRTG Application
 # Changed :  5/05/2005  New
 # Located : SYS:MRTG\BIN
 # Set For : 
 # Params  : 

 # The paths are as per the examples recommended in "Getting Started".

 perl --noscreen sys:\mrtg\bin\mrtg.pl sys:\mrtg\bin\mrtg.cfg

 #
 # End of RunMrtg.NCF

=head3  MakeMrtgIndex.NCF

 # MakeMrtgIndex.NCF
 # Purpose : Create the HTML Index File for MRTG HTML data pages
 # Changed :  5/05/2005  New
 # Located : SYS:MRTG\BIN
 # Set For : 
 # Params  : 

 # Note: Edit this file and change the redirected output to the location specified for HtmlDir or WorkDir.
 #       The sys:\apache2\htdocs\mrtg\index.html is based on the examples in "Getting Started".

 perl --noscreen sys:\mrtg\bin\indexmaker.pl sys:\mrtg\bin\Mrtg.cfg > sys:\mrtg\html\index.html

 #
 # End of MakeMrtgIndex.NCF

=head3  get_ver.awk

 # get_ver.awk
 # fetch rateup version number from input file and write them to STDOUT
 BEGIN {
   while ((getline < ARGV[1]) > 0) {
     if (match ($0, /VERSION = "[^"]+"/)) {
       rateup_ver_str = substr($4, 2, length($4) - 3);
       split(rateup_ver_str, v, ".");
       rateup_ver = v[1] "," v[2] "," v[3];
     }
   }
   print "RATEUP_VERSION = " rateup_ver "";
   print "RATEUP_VERSION_STR = " rateup_ver_str "";
 )
 #
 # End of get_ver.awk

=head1 LICENSE

GNU General Public License

=head1 CREDITS

The MRTG for NetWare exists largely through the efforts of Guenter Knauf and feedback from beta testers.

=head1 AUTHOR

Norm W..

=cut
