Masterzen’s Blog

Journey in a software world…

mysql-snmp – monitoring MySQL with SNMP

What’s that?

mysql-snmp is a Net-SNMP Perl subagent that connects to a MySQL server and reports its statistics through SNMP. Additionally this project contains material to graph MySQL variables/counters in OpenNMS.

The graphs are based on the excellent MySQL Cacti Templates by Baron Schwartz.

What’s this stuff is doing?

This is a small perl daemon that:

  • connects locally to Net-SNMP snmpd to report statistics
  • connects remotely or locally to a MySQL server to fetch statistics

The daemon ships with a MIB file I crafted, and OpenNMS configuration snippets to start monitor your MySQL servers without hassles.

Here are two OpenNMS graphs:

InnoDB transactions

InnoDB Buffer Pool

You sold me, where do I get it?

This software is only available in my MySQL-SNMP github repository.

To install the software on a server:

1. clone the repository:

$ git clone git://github.com/masterzen/mysql-snmp.git

2. install

If you run a debian server, build the debian package (the easiest way):

$ cd mysql-snmp
$ dpkg-buildpackage -rfakeroot -uc -b

If you don’t, modify the Makefile and install manually

$ cd mysql-snmp
$ sudo make install

You’ll have to craft your own startup init.d script, or grab the one I did for the debian package (have a look into the debian/ sub-directory).

3. Configure

First configure the local net-snmp by allowing AgentX:

add to /etc/snmp/snmpd.conf

master agentx

and restart snmpd.

Configuration of the mysql-agent.pl daemon is done with command line options. You’ll have to tell it how to connect to your MySQL Server with the -u, -p and -h options.

Then start the daemon, monitor your /var/log/syslog file to see if it works

Then try it:

$ snmpwalk -m MYSQL-SERVER-MIB -v 2c -c public localhost enterprises.20267
MYSQL-SERVER-MIB::myKeyReadRequests.0 = Counter32: 514350
MYSQL-SERVER-MIB::myKeyReads.0 = Counter32: 1379
MYSQL-SERVER-MIB::myKeyWriteRequests.0 = Counter32: 75717
MYSQL-SERVER-MIB::myKeyWrites.0 = Counter32: 300
MYSQL-SERVER-MIB::myHistoryList.0 = Gauge32: 147
MYSQL-SERVER-MIB::myInnodbTransactions.0 = Counter64: 4188320597
MYSQL-SERVER-MIB::myReadViews.0 = Gauge32: 2
MYSQL-SERVER-MIB::myCurrentTransactions.0 = Gauge32: 9
MYSQL-SERVER-MIB::myLockedTransactions.0 = Gauge32: 0
MYSQL-SERVER-MIB::myActiveTransactions.0 = Gauge32: 2

If you see an ouput as the one above, then it worked fine.

4. OpenNMS

To start monitoring your MySQL servers with OpenNMS, you have to:

  • augment datacollection-config.xml with the mysql-server mib information
  • declare the various graphs

Have a look to the opennms/ directory in the source archive, then paste the <group> content of mysql.datacollection-config.xml to the datacollection-config.xml file.

Then add the mysql group to the hostdef part you’re using.

Then copy the various reports from mysql.snmp-graph.properties to your OpenNMS snmp-graph.properties and then add the report list to the global report list of the same file.

Then restart your computer.

Share and Enjoy:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • Technorati
  • TwitThis

Masterzen's Pictures

Participants
Ticket to Ride World Championship 2010

Participants Ticket to Ride World Championship 2010

masterzen's photo

masterzen's photo

Ticket to Ride World Championship 2010

Ticket to Ride World Championship 2010

Ticket to Ride World Championship 2010

Ticket to Ride World Championship 2010

Rémi (FR) during Qualification Round
Ticket to Ride World Championship 2010

Rémi (FR) during Qualification Round Ticket to Ride World Championship...

Qualification Round
Ticket to Ride World Championship 2010

Qualification Round Ticket to Ride World Championship 2010

masterzen's photo

masterzen's photo

Ticket to Ride World Championship 2010

Ticket to Ride World Championship 2010