This quickstart guide was written for Debian Lenny (5.0) but probably works with different Linux systems too.
Note | This guide installs Mod-Gearman from source. Use packages whenever possible and only do a source install when there are no packages. |
This guide assumes you have a basic nagios system running.
All commands have to be executed as root.
Build Preparation
We need a couple of packages for building Gearman and Mod-Gearman:
#> apt-get update #> apt-get install autoconf automake make gcc g++ wget tar file netcat uuid-dev libltdl3-dev libncurses5-dev libevent-dev
We will install Gearman in /opt to make later removal easier. For example if there will be a Debian package sometimes. This keeps your base system clean from non-packaged software, but in order to make that work, we have to add /opt/lib to the ld lib path.
#> echo "/opt/lib" > /etc/ld.so.conf.d/opt_lib.conf #> ldconfig
Install Gearman
We need at least Gearman version >= 0.14. Execute the following steps to install Gearman from source.
#> cd /tmp #> wget "http://launchpad.net/gearmand/trunk/0.25/+download/gearmand-0.25.tar.gz" #> tar zxf gearmand-0.25.tar.gz #> cd gearmand-0.25 #> ./configure --prefix=/opt #> make #> make install
Mod-Gearman
Half way done, the next step installs Mod-Gearman.
#> cd /tmp #> wget "/images/2010/09/mod_gearman-1.4.2.tar.gz" #> tar zxf mod_gearman-1.4.2.tar.gz #> cd mod_gearman-1.4.2 #> ./configure --prefix=/opt --with-gearman=/opt --with-user=nagios --with-init-dir=/etc/init.d #> make #> make install #> make install-config #> cp ./extras/gearmand-init /etc/init.d/gearmand
Nagios
We need a nagios installation if not already installed.
#> apt-get install nagios3
Gearman runs as user nagios which needs a valid shell:
#> chsh nagios Changing the login shell for nagios Enter the new value, or press ENTER for the default Login Shell [/bin/false]: /bin/bash
Starting Up
Now we can start the Gearman daemon and our Mod-Gearman worker:
#> /etc/init.d/gearmand start Starting gearmand done #> /etc/init.d/gearmand status gearmand is running with pid 31869 #> /etc/init.d/mod_gearman_worker start Starting mod_gm_worker done #> /etc/init.d/mod_gearman_worker status mod_gm_worker is running with pid 31939
Nagios Configuration
Open your nagios.cfg and enable eventbroker. When using the packaged nagios3 from Debian the file is located at /etc/nagios3/nagios.cfg.
event_broker_options=-1 broker_module=/opt/lib/mod_gearman/mod_gearman.o config=/opt/etc/mod_gearman.conf
and finally restart nagios:
#> /etc/init.d/nagios3 restart Restarting nagios3 monitoring daemon: nagios3
Your nagios.log should contain a line:
#> grep mod_gearman /var/log/nagios3/nagios.log [1295003042] mod_gearman: Version 1.4.2 [1295003042] Event broker module '/opt/lib/mod_gearman/mod_gearman.o' initialized successfully.
Testing
We can perform a few tests to see if everything is up and running.
Gearman-Top
First we have a look at /opt/bin/gearman_top. You should have at least one worker for each queue.
2011-01-07 23:23:24 - localhost:4730 - v0.25 Queue Name | Worker Available | Jobs Waiting | Jobs Running ------------------------------------------------------------------ check_results | 1 | 0 | 0 eventhandler | 1 | 0 | 0 host | 1 | 0 | 0 service | 1 | 0 | 0 worker_debian64 | 1 | 0 | 0 ------------------------------------------------------------------
Check-Gearman
Then we have a look at the shiped check plugin:
#> /opt/bin/check_gearman -H localhost -q worker_`hostname` -t 10 -s check check_gearman OK - debian64 has 1 worker and is working on 0 jobs. Version: 1.4.2|worker=1 jobs=2c
The interesting number is the last one, 2c in our case, which means there have been already 2 jobs executed by this worker.
Troubleshooting
First check if everything is up and running:
#> /etc/init.d/nagios3 status checking /usr/sbin/nagios3...done (running). #> /etc/init.d/gearmand status gearmand is running with pid 31921 #> /etc/init.d/mod_gearman_worker status mod_gm_worker is running with pid 31939
If one of them is not running, try to start it or check the logfiles for possible error messages.
-
Nagios: /var/log/nagios3/nagios.log
-
Gearmand: /opt/var/mod_gearman/gearmand.log
-
Mod-Gearman Worker: /opt/var/mod_gearman/mod_gearman_worker.log