Skip to content

Monitoring MySQL with Munin on a DirectAdmin platform

Today I’ll be showing you how to monitor MySQL with Munin on a DirectAdmin platform. I’ve tested this setup for a customer on a CentOS box. It should be fairly easy to adapt this to Debian. You probably won’t even need to change credentials at all on a Debian box given the fact that it has an /etc/mysql/debian.cnf file by default. Although I’m not sure DirectAdmin puts it to good use. Any Debian/DirectAdmin users out there? Feel free to comment.

Let’s start off by checking the proper MySQL login credentials on our CentOS/RHEL box:

# cat /usr/local/directadmin/conf/mysql.conf
user=da_admin
passwd=removed

Easy enough. Let’s move on to installing munin and applying the credentials to the MySQL monitoring plugin. Munin isn’t available in the default repository. Not to worry, it’s in the Fedora Project’s EPEL repository for CentOS/RHEL. If you don’t have EPEL enabled yet be sure to check the excellent FAQ on the subject.

Or you could just move on to installing the repository.
For i386/i686:

 
# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/
epel-release-5-3.noarch.rpm

For x86_64:

For x86_64: 
# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/
epel-release-5-3.noarch.rpm

Now we can go on installing munin:

# yum install munin munin-node

Sadly this doesn’t install pull all the necessary dependencies. Not sure why the package maintainer missed out on this but it’s rather easy to fix it:

# yum install perl-Cache perl-Cache-Cache 
# yum install perl-IPC-ShareLite perl-DBD-MySQL

On to the credentials part. Edit the mysql plugin on line 132:

# vim +132 /usr/share/munin/plugins/mysql_

You should see something like this with the credentials left blank:

my %config = (
    'dsn'        => $ENV{'mysqlconnection'} || 'DBI:mysql:mysql',
    'user'       => $ENV{'mysqluser'}       || 'da_admin',
    'password'   => $ENV{'mysqlpassword'}   || 'removed',
);

As you can see I’ve already filled in the blanks.

Once the plugin has been configured we’re able to apply it. Before applying I’d suggest you take a look at what graphs are available:

# /usr/share/munin/plugins/mysql_ suggest
mysql_bin_relay_log
mysql_commands
mysql_connections
mysql_files_tables
mysql_innodb_bpool
mysql_innodb_bpool_act
mysql_innodb_insert_buf
mysql_innodb_io
mysql_innodb_io_pend
mysql_innodb_log
mysql_innodb_rows
mysql_innodb_semaphores
mysql_innodb_tnx
mysql_myisam_indexes
mysql_network_traffic
mysql_qcache
mysql_qcache_mem
mysql_replication
mysql_select_types
mysql_slow
mysql_sorts
mysql_table_locks
mysql_tmp_tables

To apply all of them simply run the following:

# cd /etc/munin/plugins
# ln -sf /usr/share/munin/plugins/mysql_ mysql_
# for i in `./mysql_ suggest`; \
do ln -sf /usr/share/munin/plugins/mysql_ $i; done

If you only need a few of them you can apply them this way:

# cd /etc/munin/plugins
# ln -sf /usr/share/munin/plugins/mysql_ mysql_
# ln -sf /usr/share/munin/plugins/mysql_ mysql_bin_relay_log
# ln -sf /usr/share/munin/plugins/mysql_ mysql_commands
# ln -sf /usr/share/munin/plugins/mysql_ mysql_connections
# ln -sf /usr/share/munin/plugins/mysql_ $any_other_graph

Be sure to reload munin-node:

# /etc/init.d/munin-node restart

And that’s it. Enjoy your graphs at http://127.0.0.1/munin. 🙂

Munin MySQL InnoDB graph

Published inHowto'sLinuxMonitoring

11 Comments

  1. Jan Van Buggenhout Jan Van Buggenhout

    Big WTF! Changing /usr/share/munin/plugins/mysql_ ??? You realize that this change will be gone once you upgrade the package?

    I don’t know the specifics on RedHat, but on debian you change /etc/munin/plugin-conf.d/munin-node :

    [mysql*]
    user someuser
    env.mysqlopts –defaults-extra-file=/etc/mysql/debian.cnf

    I’m pretty sure this is not something debian-specific and it will work on RH too…

  2. Tom Tom

    I’ve looked into it and you’d still need to edit /usr/share/munin/plugins/mysql_ to apply it.
    Which renders your “big wtf” pretty much useless.

  3. Its giving Segmentation Fault error.

  4. Tom Tom

    Which part is giving the segfault?

  5. I’m having consistently this error even installing perl-Cache and perl-Cache-Cache.
    # /usr/share/munin/plugins/mysql_ suggest
    Missing dependency Cache::Cache at /usr/share/munin/plugins/mysql_ line 703.

    I read the same message in several forums, but nobody has a good answer on that.

    Could you please give me a clue?
    Thanks in advance.

  6. dude dude

    I had to install the following on Centos 5.5
    yum install perl-IPC-ShareLite

    You could use the following instead of editing the mysql_ plugin:

    [mysql*]
    user root
    env.mysqluser da_admin
    env.mysqlpassword removed

    (For my charts the da_admin user needed SUPER privileges on the mysql server)

  7. Tom Tom

    @dude: Thanks for sharing! I’ll update my post asap.
    @Bruno: Have you tried to install the perl-IPC-ShareLite package?

  8. karthik v karthik v

    It is working.
    Nice thankyou

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.