Masterzen's Blog

Journey in a software world…

Mysql-snmp - Monitor 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://

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 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 to your OpenNMS and then add the report list to the global report list of the same file. Then restart your computer.