Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

What tools do you use to monitor the health of your MySQL server instance? Are they for free or commercial?

share|improve this question

18 Answers 18

up vote 10 down vote accepted

Try MySQL Cacti Templates.

share|improve this answer
Upvote for this. I have been using these a while, thanks to Percona and Xarpb. –  Dan Carley Jun 10 '09 at 11:13
These templates are very good - I use them to monitor all our MySQL boxes. –  mlambie Jun 20 '09 at 6:26

mytop provides some handy CLI info, it's free (*unix only).

share|improve this answer

Mysql has a free one called Mysql Administrator which is part of the mysql GUI tools package.

Mysql Administrator connection documentation.

There is also the Mysql Enterprise Monitor which has many more monitoring features. You can monitor Mysql on other servers see faq question 7.

share|improve this answer
But MySQL Monitor is just able to monitor local MySQL instances, right? So I wouldn't be able to monitor a MySQL server on a linux machine. –  Sebastian Hoitz Apr 30 '09 at 20:36
Sorry, I meant to say MySQL Administrator only can monitor local instances. –  Sebastian Hoitz Apr 30 '09 at 21:15
No, you can monitor Mysql instances on non-local servers on any OS mysql supports. –  Mark Robinson Apr 30 '09 at 21:18
Yes, Mysql Admin can also monitor an MySql instance on another server. I'll post link in answer. –  Mark Robinson May 1 '09 at 0:50

I like SQLyog for remote administration of mySQL. Nice GUI environment, and there is a free community edition.

This company also makes MONyog, a mySQL monitoring solution, but it's not free and I haven't played with it.

share|improve this answer

I have a custom Zabbix configuration for extracting useful data points from MySQL. I should get around to opening these scripts up to the community.

share|improve this answer

Apart from running cacti to graph the mysql performance over time, we have mysqltuner.com setup to send us a daily report of any variables on the server we should be keeping an eye on.

share|improve this answer

innotop has been fantastic for monitoring. i believe its recommended in both editions of high performance mysql.

share|improve this answer

As basic as it is, I've used:

$ watch -n1 "mysqladmin processlist -u root -pYouWillNeverGuessThis"

This provides me with a list of connections, users, hosts, databases, commands etc, updated every second. It's a real-time "who's doing what right now?" solution.

Very simple, but also useful.

share|improve this answer

I use a cronjob running every 5 minutes with mysqladmin processlist. See also this question .

In addition, phpMyAdmin has some monitoring features.

share|improve this answer

We use hyperic, it is an open source application, but there is a commercial product as well if you want. It also monitors the operating system, web servers etc.

share|improve this answer

Don't forget to monitor the underlying platform. I would monitor

  • IOPS on the log, data and tmp devices (you do have those on three seperate LUNs don't you ?)
  • Swapping (more than a few pages / second is bad for mysql, google "mysql swappiness" to find out why)
  • Memory statistics for the host OS. A general rule of thumb I follow is to allocate no more than 80% to the mysql process to leave some room for the OS and the buffer cache

You can use SNMP and Cacti to monitor all of these things

share|improve this answer

mtop is great for monitoring current running queries and system variables.

share|improve this answer

Cacti, as mentioned above. Also mytop sometimes to monitor current activity.

share|improve this answer

Basic monitoring via the nagios nagios_mysql plugin, added a small custom script to monitor slaves status and slavelag.

share|improve this answer

It's not strictly monitoring but you can use mysqlreport to have a good overview of how well your mysql server is performing and if it is properly configured.


share|improve this answer

Actually it depends on the database(s) that is running on the sever.

I usually check for the

  • number of queries
    • depending on database
  • indexes
  • slow query log
  • mysqlping
  • mysql connection from a remote host to a certain database
    • check that it works from the right hosts
    • check that it fails from the right hosts
  • select the current time to be sure it's correct
  • select for collations/encodings
  • connected users

on the framework side I'm using munin for everything that could give me metrics and nagios (soon to be icinga) for everything that gives me status information.

share|improve this answer

For more comprehensive monitoring of MySQL (but commercial, so only if your database is worth it) check out www.LogicMonitor.com. No configuration required (detects storage engine types, replication status, etc); provides tuning recommendations; full historical graphing and alerting in one system; very extensible, and will monitor the rest of your datacenter infrastructure.

share|improve this answer

MONyog-MySQL Monitor is a powerful monitoring tool for MySQL server it has lot of useful features.

Also latest v5.5 has Real-Time feature which tells you what’s happening on your MySQL server RIGHT NOW. It details key metrics like top 200 queries, slow queries, databases, locked queries, locking queries, tables, users, hosts and thread states, all of this in real-time as it happens. Information is retrieved from the server every one second. And the best part is that you can get started with real-time with just a click of a button without the overhead of enabling logs. enter image description here

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.