blob: 27d74368c2446a316121f6e10ebd120cc20fadba [file] [log] [blame]
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
<Location /manage>
# 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
</Location>
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.