At work we have been looking for tools to monitor MySQL and at
the same time provide as much diagnosis information as possible
upfront when an alarm is triggered. After looking around at
different options, I decided to test MONyog from Webyog, the makers of
the better known SQLyog. Before we go on, the customary
disclaimer: This review reflects my own opinion and in
no way represents any decision that my current employer may or
may not make in regards of this product.
First ImpressionYou know what they say about the first
impression, and in this where MONyog started with the right foot.
Since it is an agent-less system, it only requires to install the
RPM or untar the tarball in the server where you're going to run
the monitor and launch the daemon to get started. How much faster
or simpler can it be? But in order to start monitoring a server
you need to do some preparations on it. Create a MONyog user for
both the OS and the database. I used the following
commands:
For the OS user run the following command as root (thank
you Tom):
groupadd -g 250 monyog && useradd -c 'MONyog User' -g 250 -G
mysql -u 250 monyog && echo 'your_os_password' | passwd
--stdin monyogFor the MySQL user run:
GRANT SELECT, RELOAD, PROCESS, SUPER on *.* to
'adm_monyog'@'10.%' IDENTIFIED BY 'your_db_password';Keep in mind
that passwords are stored in the clear in the MONyog
configuration database, defining a MONyog user helps to minimize
security breaches. Although for testing purposes I decided to go
with a username/password combination to SSH into the servers, it
is possible to use a key which would be my preferred setting in
production.
The User InterfaceThe system UI is web driven using Ajax and Flash which makes it really thin and portable. I
was able to test it without any issues using IE 8 and Firefox in
Windows and Linux. Chrome presented some minor challenges but I
didn't dig any deeper since I don't consider it stable enough and
didn't want to get distracted with what could've been browser
specific issues.
In order to access MONyog you just point your browser the server
where it was installed with an URL equivalent to:
http://monyog-test.domain.com:5555 or
http://localhost:5555You will always land in the List of Servers tab. At the bottom of this
page there is a Register a New Server link that you follow
and start adding servers at will. The process is straight forward
and at any point you can trace your steps back to make any
corrections as needed (see screenshot). Once you enter the server
information with the credentials defined in the previous section,
you are set. Once I went through the motions, the first
limitation became obvious: You have to repeat the process for
every server, although there is an option to copy from
previously defined servers, it can become a very tedious
process.
Once you have the servers defined, to navigate into the actual
system you need to check which servers you want to review, select
the proper screen from a drop down box at the bottom of the
screen and hit Go. This method seems straight forward, but
at the beginning it is a little bit confusing and it takes some
time to get used to it.
FeaturesMONyog has plenty of features that make it worth trying
if you're looking for a monitoring software for MySQL. Hopefully
by now you have it installed and ready to go, so I'll comment
from a big picture point of view and let you reach your own
conclusions.
The first feature that jumps right at me is its architecture, in
particular the scripting support. All the variables it picks up
from the servers it monitors are abstracted in JavaScript like
objects and all the monitors, graphics and screens are based on
these scripts. One the plus side, it adds a a lot of flexibility
to how you can customize the alerts, monitors, rules and
Dashboard display. On the other hand, this flexibility present
some management challenges: customize thresholds, alerts and
rules by servers or group of servers and backup of customized
rules. None of these challenges are a showstopper and I'm sure
MONyog will come up with solutions in future releases. Since
everything is stored in SQLite databases and the repositories are
documented, any SQLite client and some simple scripting is enough
to get backups and workaround the limitations.
The agent-less architecture requires the definition of users to
log into the database and the OS in order to gather the
information it needs. The weak point here is that the
credentials, including passwords, are stored in the clear in the
SQLite databases. A way to secure this is to properly limit the
GRANTs for the MySQL users and ssh using a DSA key instead
of password. Again, no showstopper for most installations, but it
needs some work from Webyog's side to increase the overall system
security.
During our tests we ran against a bug in the SSH library used by
MONyog. I engaged their Technical Support looking forward to
evaluate their overall responsiveness. I have to say it was
flawless, at no point they treated me in a condescending manner,
made the most of the information I provided upfront and never
wasted my time with scripted useless diagnostic routines. They
had to provide me with a couple of binary builds, which they did
in a very reasonably time frame. All in all, a great
experience.
My ConclusionMONyog doesn't provide any silver bullet or obscure
best practice advice. It gathers all the environment variables
effectively and presents it in an attractive and easy to read
format. It's a closed source commercial software, the
architecture is quite open through scripting and with well
documented repositories which provides a lot of flexibility to
allow for customizations and expansions to fit any installations
needs. For installations with over 100 servers it might be more
challenging to manage the servers configurations and the clear
credentials may not be viable for some organizations. If these 2
issues are not an impediment, I definitively recommend any MySQL
DBA to download the binaries and take it for a spin. It might be
the solution you were looking for to keep an eye on your set of
servers while freeing some time for other tasks.
Let me know what do you think and if you plan to be at the MySQL
UC, look me up to chat. Maybe we can invite Rohit Nadhani from
Webyog to join us.
Mar
26
2010