I was recently asked by PACKT Publishing to review
the book Learning NAGIOS 3.0 by Wojciech Kocjan. I agreed to do so so long
as I could state whatever I felt about the book, and PACKT was fine with that.
I’m guessing they were fine with that because they knew the book was pretty
darn good! Click through for a full chapter-by-chapter breakdown of the book.
Title: Learning NAGIOS
3.0 Author: Wojciech Kocjan ISBN:
978-1-84719-518-0 Overall, this is a good book, with material that everyone
except the most seasoned Nagios veterans can appreciate. I myself have been
using Nagios for about the last 10 years, and I’ve been too lazy to upgrade my
2.x install to the latest 3.x install. After reading the book, I think I’ll
make it a priority. The book’s main audience is probably ideally someone who
isn’t new to *nix, but is new to Nagios. They will get the most use out of
this book. That being said, there was quite a bit of new information or tips
that I hadn’t discovered on my own within the book as well. Perhaps what I
liked most about the book is that not only did it tell you how to get things
set up when you have only 10 hosts and 20 services to monitor, it told you how
to set things up so that performance and manageability don’t become an issue
when that same instance of Nagios is monitoring thousands of hosts and
services. Here’s a quick breakdown of content by chapter. Note that Chapter
7 is clickable - you may download a PDF for free of that
Chapter 1: Nagios Overview
The author does a good introduction about the core ideas and conventions in
Nagios, and at the end he offers a “What’s New” section for sysadmins who are
upgrading from 2.x.
Chapter 2: Installation and Configuration
This chapter walks you through installing Nagios from source on Ubuntu ‘Gutsy’
7.10. It also goes through the basic tasks of creating hosts, services,
commands, time periods, contacts, and groups of objects. After getting your
feet wet, the book dives into one of the key features of Nagios, inheritance.
New to Nagios 3.0 is the capability to inherit from more than one parent,
which is a welcome addition. The final section goes into one of the most
important features (and one of the features Nagios implements best):
Chapter 3: Using the Nagios Web Interface
The first precursor to using the web interface is to get it setup properly.
One key point that the book leaves out, and can be a major stumbling block for
new users is that the core of the web interface is compiled C binaries. Most
users expect PHP, Perl, or some other interpreted language, but this is not
the case in Nagios. This severely limits the number of people who can go in
and modify the web UI - everyone knows PHP, not many know C. The rest of the
chapter goes through using the web interface to check status, print reports,
Chapter 4: Overview of the Nagios Plugins
Each Nagios installation is only as good as it’s plugins. In fact, without any
plugins, Nagios is unable to really do anything at all. Nagios' reliance upon
plugins is one of the reasons that it’s been around for so long, and seems to
fit everyone’s setup. Most use the same Nagios core, but you’d be hard pressed
to find two installations using the exact same set of plugins. The majority of
the chapter goes over the core plugins that are included in the Nagios Plugins
Chapter 5: Advanced Configuration
Chapter 5 covers some things that the Nagios docs don’t - mainly how to
organize your definitions into a maintainable file and directory structure. It
also goes into detail about the depth-first inheritance search order, and
multiple inheritance - new to Nagios 3. Also new to Nagios 3, custom
variables, are covered here as well. Chapter 5 also covers the algorithm used
to determine flapping, and does it very well. I’d never comprehended it until
reading the book.
Chapter 6: Notifications and Events
Note: This chapter has two abstracts available on PACKT’s website - you can
read Part 1 here, and Part 2 here. This chapter goes over the ins and
outs of setting up contacts properly. The key here is to not over-notify
contacts about incidents they have no input or control on, because they will
quickly delete or even filter all messages from Nagios. The chapter also goes
into different types of notifications available to Nagios. When fixing a
broken application’s source code is not an option, many times the only
solution is to restart the application when it fails. Nagios can do this for
you as well in what’s referred to as Event Handlers. This chapter walks you
through setting up an event handler that restarts Apache should it die. New to
Nagios 3 is Adaptive Monitoring. Adaptive monitoring gives you the ability to
dynamically change configurations stored in the config files via the named
pipe. The remainder of the chapter walks you through building, installing, and
configuring NSCA to accept passive check results over the network.
Chapter 7 starts the content with the subject of passive
checks. Passive checks are the key to scaling Nagios to thousands of hosts.
The author then goes into the pros and cons of active and passive checks. From
there, you are taken through several examples of passive host and service
Chapter 8: Monitoring Remote Hosts
This chapter introduces the reader to the concept of remote checks, and how
they differ from passive checks. The first part of the chapter goes into
detail about using SSH to execute remote checks. Personally, I have never used
this approach, as it introduces a little more security risk - if someone were
to compromise the nagios user account on the Nagios server, they would likely
get shells on all your other servers as well. The next section of the chapter
goes into setting up NRPE, which I personally recommend and use extensively.
NRPE is has much less overhead than SSH, but still encrypts the connection.
Also, NRPE is not a shell, so if the nagios user is compromised on the server,
the only thing the attacker could do to the remote machines is run the
previously defined service checks on your client hosts. The author walks the
reader through examples of using both approaches.
Chapter 9: SNMP
SNMP is very near and dear to me - I was forced to love it when working with
DOCSIS back in my cable industry days. The author gives a pretty good
introduction to SNMP in the beginning of the chapter. After introducing the
reader to net-snmp utilities and some GUI’s, he goes into detail about
installing and testing the net-snmp agent on the remote hosts. Once SNMP is
set up on the remote hosts, it’s time to start playing with the check_snmp
plugin. check_snmp is not so different from other plugins, and is not bad to
setup at all. One thing that I had tried before, and failed at doing, was
setting up Nagios to be a SNMP trap destination. The author presents a way to
do this, but I would argue that his method wouldn’t scale very well. Either
way, his method works - although it’s important to remember that Nagios is not
a SNMP management package.
Chapter 10: Advanced Monitoring
The first part of the chapter goes into using NSClient++ to monitor Windows
systems. I would argue that this is not necessarily “Advanced Monitoring” -
maybe there should be a small chapter dedicated to monitoring Windows.
However, that’s all semantics - the content itself is accurate and well
stated. The chapter goes into detail about installing NSClient++ and using
check_nt, check_nrpe, and passive checks using NSCA to get data from your
Windows hosts. The remainder of the chapter goes into distributed Nagios
instances. I myself have never had to do this, but in reading through the
content, it certainly looks doable. It appears as though there isn’t too much
to the initial setup, but config file maintenance looks like it could become
cumbersome. I’ll have to noodle on that for a bit!
Chapter 11: Extending Nagios
Yoda might have been quoted as saying “Only after a padawan writes plugins
will the true power of Nagios be unveiled to him” - or maybe not, but it’s
definitely a true statement. That’s what chapter 11 is all about - writing
your own plugins. I can especially appreciate the fact that the author
distinguishes between a working plugin, and a plugin written the right way.
The chapter finishes up with how you might go about writing your own web
interface (only skimming the surface for obvious reasons).
In summary, this book is for anyone who runs, or is thinking about running
Nagios 3.0 for business or pleasure. It’s a pretty quick read, and has quite a
bit of information in it that will have you reaching for it like you would a
reference book. In the interest of full disclosure, all links to PACKT’s
website from this article will result in me receiving
referral dollars should you purchase the book from them. I only participate in
referrals when I have personally used and approve of the product. If you
enjoyed this review and are interested in purchasing the book, I would
appreciate your referral.