A look at innotop's new features

I just made a snapshot of the development branch of the innotop MySQL and InnoDB monitor, and released it as version 1.3.0. This code will eventually become version 1.4. Here’s what’s new.

Version number policy

Odd-numbered releases, such as 1.3.0, contain the code that will eventually become a stable release – in this case 1.4. Not all the features are there, and not all of them work perfectly, but it’s a development snapshot for community review and feedback. That said, there’s no dangerous code here, just the possibility of crashes.

Major new features

The development branch of innotop is geared towards the eventual goal of monitoring a large number of servers at once. While there is much work to be done, the new features are a significant step towards the goal, in my opinion. With innotop 1.3.0 you can monitor multiple servers, organize them into groups, and switch between groups easily. If you don’t have that many servers to monitor, and don’t need to group them together, just press @ to define and choose among server connections. If you’re interested in grouping servers together, take a look at what the # and TAB keys do.

Monitoring lots of servers at once makes life much easier if you manage a lot of machines that are involved in replication. To that end, I’ve also added a new mode to monitor master and replica status. You can see master and replica status in the same view; by default the data is grouped into replica SQL status, replica I/O status, and master status. This gives you a quick glance at whether the replicas are running, how far they lag the master, and so forth. Press M to enter this mode.

As always, you can press ? at any time for context-sensitive help on these and other features.

You can use innotop in command-line scripting now. The command-line options are limited at this time, but I hope to get more feedback on the best way to do things before putting a lot more work into it. Right now, you can specify a config file from which innotop will determine what output to create. The output is tab-separated, and can be piped into awk or other command-line utilities for further processing.

I’ve also put a lot of work into making it easier to use innotop. There’s readline support to help you type the right thing (I recommend installing Term::ReadLine::Gnu for best performance). There’s a new “table editor” which allows you to determine which columns you want in the output. Press ^ to start the table editor.

While I’ve done a lot towards usability, some of the new features are still a bit rough. For example, user-defined expressions can now be the source of a column in the output, much like a spreadsheet. Suppose you want a column that shows the queries per second in the output; you can divide the queries by the uptime to get this. However, these expressions are basically Perl subroutines, so they’re probably not that useful to you at the moment, unless you know Perl. Likewise, you can do more complex filtering on the output, but you’re in Perl-land again. Over time I plan to make this more friendly.

I am trying to strike a balance between usability and learnability (yep, I’ve been reading Joel Spolsky’s book on user-interface design). I primarily intend for innotop to be a power-user tool. If you’re not a power-user, you probably don’t need it. However, I do want to make sure it is learnable, and I don’t want to ignore users who just have one server to monitor. You can help by telling me what you think.

What’s next

I plan to finish fixing the things I’ve broken, polish off the new features, and finish the documentation before I slap a 1.4 label on the code and release it again. In the meantime I may make more incremental releases. This process will take me a little while, as I have several other projects I need to finish before I spend another large chunk of my spare time on innotop (I have spent a lot of time on it over the holidays).

You can download the new releases from sourceforge when they’re made. Initially a tar.gz and a zip file will always be made available; hopefully Debian and Ubuntu packages will follow soon after.

Stay tuned!

See Also

I'm Baron Schwartz, the founder and CEO of VividCortex. I am the author of High Performance MySQL and lots of open-source software for performance analysis, monitoring, and system administration. I contribute to various database communities such as Oracle, PostgreSQL, Redis and MongoDB. More about me.