Chinaunix首页 | 论坛 | 博客
  • 博客访问: 41190
  • 博文数量: 5
  • 博客积分: 1502
  • 博客等级: 上尉
  • 技术积分: 60
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-26 11:36
文章分类

全部博文(5)

文章存档

2008年(5)

我的朋友

分类: LINUX

2008-03-21 09:15:37

用cacti监控dns


摘自:

This is a pass-through script for SNMP that gives
all the Bind9 statistics that can be (is) retreived
with 'rndc stats'.

There's a lot of scripts that can retreive Bind9 stats
via SNMP but what's making this one special is that
it's indexed and 'tablified'.


Current release is: 1.6
Tarball:           
Tarball 2:         
ZIPfile:           


SNMP Setup files (Paths depend on where your SNMP/Cacti is installed!)
=================
* BAYOUR-COM-MIB.txt
  This is the MIB declaration.
  Copy to /usr/share/snmp/mibs/

* BayourCOM_SNMP.pm
  This is the Perl API library needed
  by the bind9-snmp-stats.pl perl script.
  Copy to /usr/local/lib/site_perl/

* bind9-snmp-stats.pl
  This is the stat retreival script.
  Copy to /etc/snmp/

* snmp.conf.stub
  This is part of the snmp.conf file.
  Add to the end of /etc/snmp/snmp.conf

* snmpd.conf.stub
  This is part of the snmpd.conf file.
  Add to the end of /etc/snmp/snmpd.conf


Cacti setup files
=================
* bind9-stats_domains.xml    Domain vise statistics
* bind9-stats_totals.xml    Total statistic numbers
  These are the XML declaration for cacti.
  Copy to /usr/share/cacti/resource/snmp_queries/

* cacti_host_template_bind9_snmp_machine.xml
  This is the template to import into cacti to add Bind9 statistic
  graphs to your SNMP hosts.

  This file will create a new host template named 'Bind9 SNMP
  Machine'. See below how to create the graphs..

Adding Bind9 SNMP statistic graphs for your host(s):
=================
To add the Bind9 SNMP graphs and data queries etc to you host(s), got
to 'Devices->[host(s)]->Host Template' and select the 'Bind9 SNMP
Machine' template. It will NOT delete/remove any of your existing
graph template(s) or data queries. Just add the Bind9 SNMP stuff you
need.

1. Click on the 'Create Graphs for this Host' and in the 'Data Query
   [SNMP - Local - Bind9 Statistics - domains - QUERY]' section,
   tick/select all the domains you want statistics for.

2. In the 'Data Query [SNMP - Local - Bind9 Statistics - totals -
   QUERY]' section, tick/select all summaries you want statistics for.

After those two points, click the 'create' button at the bottom left.


Mailinglists
=================
If you're interested in all the CVS commits and changes, you can subscribe
to the 'cvs-snmp-modules@lists.bayour.com' mailinglist. It contain ALL my
SNMP modules, not just the Bind9 SNMP Subagent changes. It's not that
much traffic on the list, so don't worry about 'drowning' :).

For support and other discussions about the module, please subscribe
to the 'snmp-modules@lists.bayour.com' mailinglist.

To subscribe: Send an empty mail to the request-@lists.bayour.com
address.


NOTE (1):
=================
Some people have had problems getting statistics in previous versions.
This is/was because of a number of problems which should be fixed in
version 1.3 (this version).

IF you've had problems before, got to 'Graph Management', search for
'Any' host and with the search string 'bind9'. Make sure you delete
(!) all entries found. Also make sure to delete all RRD files in the
'' directory - the command 'rm /*_bind9_*.rrd'
should do that. Be sure to replace '' with the full path
to your RRD files (you can find that in the 'Configuration->Settings->Paths'
section...


NOTE (2):
=================
The latest version of these files can be found via anonymous cvs
(just press the ENTER key when asked for a password):

cvs -d :pserver:anonymous@cvs.bayour.com:/var/cvs login
cvs -d :pserver:anonymous@cvs.bayour.com:/var/cvs co bind9-snmp

There's a web to cvs gateway at the URL:



NOTE (3):
=================
As of version 1.4, there a config file you need to create.
This is (by default) '/etc/bind/.bindsnmp'.

It have the following format (my values as example):

----- s n i p -----
DEBUG=4
DEBUG_FILE=/var/log/bind9-snmp-stats.log
STATS_FILE=/var/log/dns-stats.log
STATS_FILE_OWNER_GROUP=bind9.bind9
RNDC=/usr/sbin/rndc
DELTA_DIR=/var/tmp/
----- s n i p -----


Setting up Bind9 to log statistics
=================
In the named.conf (or wherever you have
your 'options' options), add the following
two lines:

        // Statistics
        zone-statistics yes;
        statistics-file "/var/log/dns-stats.log";

Note the 'statistics-file' and the 'STATS_FILE'
options in named.conf and .bindsnmp respectively!

+ In newer Bind9 (unknown version, but I'm quite
  sure it didn't exist in 9.1 and earlier - it
  DO work in 9.4), it's possible to put the
  'zone-statistics' option within the actual
  zone instead so that statistics is only gathered
  for specified zones instead of all...


Testing
=================
1. First thing to test is if bind actually creates
   the statistics file.
   Execute the command 'rndc stats' and look at the
   file specified with the statistics-file option.

2. Make sure that snmpd actually loads the MIB file
   by executing the command:

     snmpd -f -DALL 2>&1 | grep BAYOUR-COM-MIB

   This will return something like this:

     parse-mibs:   Module 56 BAYOUR-COM-MIB is in /usr/share/snmp/mibs/BAYOUR-COM-MIB.txt
     parse-file: Parsing file:  /usr/share/snmp/mibs/BAYOUR-COM-MIB.txt...
     parse-mibs: Parsing MIB: 56 BAYOUR-COM-MIB
     parse-mibs: Processing IMPORTS for module 56 BAYOUR-COM-MIB
     parse-file: End of file (/usr/share/snmp/mibs/BAYOUR-COM-MIB.txt)
     handler::register: Registering pass_persist (::old_api) at BAYOUR-COM-MIB::bind9Stats
     register_mib: registering "pass_persist" at BAYOUR-COM-MIB::bind9Stats with context ""

3. Test that the script can read the statistics file
   and output information and not have any errors.
   Do this by executing the following command:

     bind9-snmp-stats.pl --all > /dev/null

   You should NOT get any output. Any output here
   is errors!

   Next see if it output the correct values. This
   is done with the same command, but without the
   redirect:

     bind9-snmp-stats.pl --all

   The output depends on number of domains and the
   actual statistics gathered, so I can't show you
   how it should look like.

4. Check that the script works in a SNMP environment.
   Start the script without parameters

     bind9-snmp-stats.pl

   a. Then on the 'command line' that is given, enter the
      word 'PING' and a newline. The script should reply
      with a simple 'PONG'.

   b. Try to get the number of total domains by entering the
      the two following lines:

        get
        .1.3.6.1.4.1.8767.2.1.1.0

      The script should reply with the following lines:

        .1.3.6.1.4.1.8767.2.1.1.0
        integer
        6

      Last line (the number '6') depends on number of domains
      in your Bind9 server.

5. Check that you can retreive values with 'snmpget'
   and 'snmptable' something like this:

   a. snmpget -v1 -c private localhost .1.3.6.1.4.1.8767.2.1.1.0
   b. snmpget -v1 -c private localhost b9stNumberTotals.0

   Both of these commands should return the number of
   domains in your Bind9 server.

   c. snmptable -v1 -c private localhost .1.3.6.1.4.1.8767.2.1.3
   d. snmptable -v1 -c private localhost b9stTotalsTable

   On my laptop, this doesn't give any good data (because it's
   basically not used - only for testing this script etc), but
   it DO give the correct ones:

      b9stCounterName b9stCounterTotal b9stCounterForward b9stCounterReverse
              success                0                  0                  0
             referral                0                  0                  0
              nxrrset                0                  0                  0
             nxdomain                0                  0                  0
            recursion                0                  0                  0
              failure                0                  0                  0

   e. snmptable -v1 -c private localhost .1.3.6.1.4.1.8767.2.1.4
   f. snmptable -v1 -c private localhost b9stDomainsTable

   This command is the most interesting. It will give the actual
   zone statistics data.
   Instead of 'snmptable', you can use 'snmpwalk' (same options)
   to get the data in a slightly different view on the data.

Test Notes
=================
I have not used this script in a long time (my cacti server
had crashed, and I had not time fixing it), I set up this
script on my laptop. All points up (but not including) point
five worked flawlessly. But point five 'a' did not work! I got
the following message:

  Error in packet
  Reason: (noSuchName) There is no such variable name in this MIB.
  Failed object: BAYOUR-COM-MIB::b9stNumberTotals.0

In my case, this was because the logfile (DEBUG_FILE in the
.bindsnmp config file) could not be written to.
阅读(2805) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~