Neither one nor Many
Software engineering blog about my projects, geometry, visualization and music.
Setting up Nagios + Nagvis + Nagiosgraph on Ubuntu (14.04) can be a pain in the neck.
Default Ubuntu (14.04) ships with Nagios3, which is plain ugly and old, also the Nagvis is pretty old and less user friendly. So I created a Docker image with that install the—at the time of writing—newest versions of Nagios, Nagvis, Nagios plugins and Nagios graph. (Along with Apache2.4 + PHP 5.5 for the Web interfaces.)
I'm new to Docker, so leaving comments/rants/improvements is appreciated
docker run -P -t -i -v /your/path/to/rrd-data:/usr/local/nagiosgraph/var/rrd rayburgemeestre/nagiosnagvis
docker ps # to discover port
boot2docker ip # to discover host other than localhost (if you are using boot2docker on OSX)
open http://host:port # you will get a webinterface pointing to nagios/nagvis or nagiosgraph
For Nagvis you need a different broker called livestatus, where both Nagios and Nagvis need to change their configs for, and you must specifically configure it to support Nagios Version 4, otherwise you will get an error starting Nagios. Specifically this one:
Error: Could not load module '/usr/local/lib/mk-livestatus/livestatus.o' -> /usr/local/lib/mk-livestatus/livestatus.o: cannot open shared object file: No such file or directory
Error: Failed to load module '/usr/local/lib/mk-livestatus/livestatus.o'.
Which is fixed by this instruction from the Dockerfile:
WORKDIR /usr/local/src/check-mk-raw-${livestatusversion}.cre.demo
RUN ./configure --with-nagios4 && \
make && \
### specifically make mk-livestatus package /again/ with the --with-nagios4 flag, by default it's build for nagios3 which doesn't work.. \
cd ./packages/mk-livestatus/mk-livestatus-${livestatusversion} && \
make clean && \
./configure --with-nagios4 && \
make && \
make install
In the source root the --with-nagios4
flag is not propagated to it's
sub-packages. So I just make everything and then specifically clean the
mk-livestatus-xx package and re-configure with --with-nagios4
, make
, make install
.
If I had to guess the livestatus configure script probably by default tries to detect the Linux distrubition, and as Ubuntu 14.04 ships with Nagios 3 by default it probably assumes to use version 3.
After the (re)configure, this is the normal output:
Event broker module '/usr/local/lib/mk-livestatus/livestatus.o' initialized successfully.
You can use the Dockerfile on Github to build the image yourself. It contains in one file all the commands you would need to execute to do everything manually.
Build with: docker build -t rayburgemeestre/nagiosnagvis .
.
You can also use the image rayburgemeestre/nagiosnagvis
as a base for your
own projects using Docker Hub.
You can also run the base image with: docker run -P -t -i rayburgemeestre/nagiosnagvis
.
The -P auto-portforwards the port for Apache that runs inside (use docker ps
to detect the port).
[Snoop around on the container with: docker run -P -t -i --entrypoint /bin/bash rayburgemeestre/nagiosnagvis
.]
Nagios, Nagvis and Nagiosgraph are all installed in subdirectories of /usr/local
.
You are likely to want /your/own/rrd-data
directory mounted as /usr/local/nagiosgraph/var/rrd
inside the container,
so the RRD databases are not stored inside the container and retained after rebuilding/upgrading the container.
This is possible with the -v
flag: docker run -P -t -i -v /your/own/rrd-data:/usr/local/nagiosgraph/var/rrd rayburgemeestre/nagiosnagvis
Don't forget that the docker
user (uid 1000) has the appropriate read-write permissions on that rrd directory.