REQUIREMENTS A knowledgeable user. This system is *not* entirely user friendly yet. You have been warned. Use at your own risk. yada yada yada. Get and install: the mysql (http://www.mysql.com) database it may work with other databases, but I haven't tried. Apache (http://www.apache.org) The following perl modules (http://www.cpan.org): mod_perl SNMP (from the net-snmp source tree: SRCTREE/perl/SNMP) CGI DBI DBD::mSQL GD::Graph You may need more modules depending on your perl version, so sorry in advance if I missed some. Building and setting up mysql (a summary of what is needed. See the mysql documentation for further details): ./configure make make install scripts/mysql_install_db start it by running 'safe_mysqld'. To run the sql commands listed in the following text, run 'mysql'. SQL REQUIREMENTS The scripts used by this project automatically create, edit, delete, insert, update, etc everything necessary. Because of this, you'll need to set up a SQL user with the ability to modify the heck out of a database called "snmp" on your mysql server. We'll call this user SQLUSER below, and its password SQLPASSWORD. Replace these with your appropriate information anytime you see them listed below. INSTALLING THE PERL MODULES perl Makefile.PL make make install Copy the red.gif, and green.gif graphics files to your apache HTML-ROOT/graphics/. SETTING UP APACHE (assumes you have mod_perl installed properly from above) Idealy, it should be put behind a user/password database in your web server (something that sets the REMOTE_USER environmental for CGI scripts). This will greatly enhance its operation so that different users can be users of different groups of hosts, etc... If this is not done, everyone will use the user name "guest". At the bottom of your httpd.conf file or in an apporpriate VirtualHost directive put the following lines, appropriately configuring the sql username, etc. I strongly recommend turning on SSL support for this as well.: PerlModule netsnmp::manager # put apache protection stuff here, like a password database etc!!! SetHandler perl-script PerlHandler ucdsnmp::manager PerlSetVar hostname SQLHOST PerlSetVar dbname snmp PerlSetVar user SQLUSER PerlSetVar pass SQLPASSWORD # turn on password protection. see apache htpasswd documentation. # comment these out for unauthenticated access (generally a bad idea) AuthType Basic AuthName "SNMP manager access" AuthUserFile /etc/httpd/conf/manager-passwd require valid-user Restart apache after you've done the above. SETTING UP THE MYSQL UCD-SNMP DATABASES Use the following perl script to set up the mysql database tables required: ./setupdb -u SQLUSER -p SQLPASSWORD -h SQLHOST To display what this will do before you run it: ./setupdb -v -n SETTING UP USERS OF THE SYSTEM Now you need to add yourself as a user. You'll want to use a username that you configured for your apache password file (or whatever), or the user "guest" if you didn't configure apache for authenticated access. The -a in this case grants "administrative" rights to the group of hosts, and thus allows the user to add new hosts to the group, delete hosts, etc. Non-administrative users are mostly "read-only" type users. The interface groups hosts together in "groups", and you put users in these groups to assign responsiblity for them. Groups are created when a user gets assigned to one, so just pick a groupname for now and use it below. Maybe later you can add yourself to a new group using a similar command, and the web interface will change to reflect that you are now in more than one group. Use the same group name for multiple users that all belong to a single "group". If you add an email address to the argument list the system will mail that user every time it finds a problem or finds a problem that has been fixed. *** DO NOT PICK A GROUP WITH THE NAME "default" *** ./setupuser -u SQLUSER -p SQLPASSWORD -h SQLHOST -a GROUPNAME USERNAME [EMAILADDRESS] SETTING UP SNMP AUTHORIZATION INFORMATION Now, you need to add in your default authorization information for how to make SNMP requests to your host. The parameter names you can pick come straight from the SNMP perl module, so see "perldoc SNMP" for all the parameter names you can pick from. Examples: ./setupauth -u SQLUSER -p SQLPASSWORD -h SQLHOST Version 1 Community public ./setupauth -u SQLUSER -p SQLPASSWORD -h SQLHOST Version 3 SecName 'v3user' AuthPass 'myv3passphrase' SecLevel authNoPriv I also recommend adding a large default timeout (30 secs): ./setupauth -u SQLUSER -p SQLPASSWORD -h SQLHOST Timeout 30000000 If you want different parameters for a group, it'll inherit everything from the default parameters specified above plus any more that you set or override: ./setupauth -u SQLUSER -p SQLPASSWORD -h SQLHOST -g agroup Community private Further, hosts can be given specific parameters as well if they're really special: ./setupauth -u SQLUSER -p SQLPASSWORD -h SQLHOST -m host Timeout 60000000 COLLECTING THE DATA The command you need to run to collect data is snmptosql, which will use the information defined above to fill your data base with all sorts of useful information that you've asked it to collect. Something like: snmptosql -H SQLHOST -u SQLUSER -p SQLPASSWORD should be put in cron to update a regular intervals. I run mine every 10 minutes. Note that it will *not* scale to a large number of hosts easily at the moment. Start with no more than 20 or so to begin with. USING THE SYSTEM Most of the things you'll need to do can be done from the web interface that you've just set up as /manager on some system in the step above. Go to this web page to see what you can do. MONITORING HOSTS WITH IT (finally) It's *not* entirely intuitive yet. So, lets give you an example. In your snmpd.conf file, put a line that says "proc sendmail". This will check to see if sendmail is running on your system. Also put "disk / 10%" which will require the disk has at least 10% of free space. Restart the snmpd (or kill -HUP). See the snmpd.conf manual page for some details. Then, go to the above URL and click on the group name you want to add a host to and enter the host name in the dialog box near the bottom of the page (assuming you're logged in as an administrator user setup using the -a flag to setupuser above). Click on the "setup group XXX" link at the bottom of the group's page and click on all the check buttons (you can turn them all on even if you're not really using them all) and hit the submit button. Come back 10 minutes later, reload the group and click on the host name. You should see pretty red/green lights if there is or isn't a problem. It'll show you a few tables with the various bits of data it collected (including how many sendmail processes are running, an how much disk space is actually being used), etc. GRAPHING To be written.