Icinga2 core
+++ THIS SECTION IS STILL UNDER CONSTRUCTION +++ I HAVE TO RE-CHECK IT +++ BUG HITS ME +++
+++ VERIFIED ON A FRESHLY INSTALLED illumos-022bfefbca +++
In this howto I’ll try to cover the aspects to get Icinga2 client core up and running on an Openindiana host. I did not take care about database integration, so if you’re willing to use Icinga2 as a master on Openindiana you’re on your own – it’s probably not that complicated, but who knows?
Build process is based on oi-userland, but unfortunately Icinga2 still isn’t a verified component there; I have to few testers to confirm the resulting package as valid My goal would be to get it in the official oi-userland - meanwhile you
- either have to check out oi-userland and do it on your own or
- you have to checkout my fork with icinga2 branch - your choice
So let’s start building the icinga2 package on Openindiana. Use this Howto on your own risk. I wrote it based on illumos-9b40c3052b
. It’s also tested for illumos-68d7704518
. I’m running it in production since 02/2018 without any issues, so it might be suitable for you, too.
Install some dependencies
You should build your packages as root
as anything else is just annoying.
First install some dependencies.
$ pkg install build-essential boost libyajl2
Preparing Git
Now prepare the environment: you are invited to use my fork on GitHub.
$ mkdir /scratch
$ cd /scratch
$ git clone https://github.com/sysadmama/oi-userland.git
Local package repository
$ cd /scratch/oi-userland/components
$ gmake setup
Creates /scratch/oi-userland/i368/repo
for later package installation use.
Branch icinga2-2.10.2
$ cd /scratch/oi-userland/
$ git branch -a
* oi/hipster
remotes/origin/HEAD -> origin/oi/hipster
remotes/origin/feature_icinga2-2.10.2
remotes/origin/oi/hipster
remotes/origin/unleashed
remotes/origin/upstream
$ git checkout -b icinga2 remotes/origin/feature_icinga2-2.10.2
Branch 'icinga2' set up to track remote branch 'feature_icinga2-2.10.2' from 'origin'.
Switched to a new branch 'icinga2'
Building the package
$ cd /scratch/oi-userland/components/sysutils/icinga2
Cleaning up everything
$ gmake clobber
Installing required packages and preparing the environment
$ gmake env-prep
$ gmake prep
Building the software and creating sample manifest
$ gmake sample-manifest
Now you’re able to vimdiff
and to update the component manifest if needed – usually it isn’t
Generate dependencies
$ gmake REQUIRED_PACKAGES
If not provided at the end of the component Makefile, the list of dependencies should be generated; usually not necessary in our context
Tests
$ gmake test
Pre-publish
Check if the publication of the component can complete without actually publishing the package to the local repository.
$ gmake pre-publish
Publish
Everything was fine? Publish it to your /scratch/oi-userland/i386/repo
– now you can use it!
$ gmake publish
Using this userland repo and installing the package
What are the currently used publishers?
$ pkg publisher
PUBLISHER TYPE STATUS P LOCATION
openindiana.org origin online F http://pkg.openindiana.org/hipster/
So we have to add our own repo:
$ pkg set-publisher -p file:///scratch/oi-userland/i386/repo
## Maybe needed: $ pkg set-publisher --non-sticky openindiana.org
$ pkg publisher
PUBLISHER TYPE STATUS P LOCATION
userland origin online F file:///scratch/oi-userland/i386/repo/
openindiana.org origin online F http://pkg.openindiana.org/hipster/
And when new builded packages are ready, refresh repo:
$ pkgrepo refresh -s /scratch/oi-userland/i386/repo/
$ pkgrepo rebuild -s /scratch/oi-userland/i386/repo/
And now: install the package!
$ pkg search icinga2
$ pkg install icinga2
$ pkg info icinga2
Name: system/monitoring/icinga2
Summary: Icinga 2 - An open source host and network monitoring system
Category: Applications/System Utilities
State: Installed
Publisher: userland
Version: 2.10.2
Branch: 2018.0.0.0
Packaging Date: January 16, 2019 at 08:06:11 AM
Size: 367.47 MB
FMRI: pkg://userland/system/monitoring/icinga2@2.10.2-2018.0.0.0:20190116T080611Z
Project URL: https://github.com/icinga
Source URL: https://github.com/Icinga/icinga2/archive/v2.10.2.tar.gz
With icinga2.xml
I deliver a basic version for SVC. Let’s check ist.
$ svcs icinga2
STATE STIME FMRI
disabled 11:44:29 svc:/application/monitoring/icinga2:default
Disabled means: this service is not running. So let’s enable it.
$ svcadm enable icinga2
$ svcs icinga2
STATE STIME FMRI
online Jan_24 svc:/application/monitoring/icinga2:default
If you encounter issues when starting your daemon, take a look at the logfiles stored in /var/svc/log
– try tail -f application-monitoring-icinga2\:default.log
Building the check plugins
I found no way to get the check plugins into oi-userland
, and I tried several times… spending enough time and with help from the mailing list it probably would be possible, but I didn’t follow this approach. So what I do it to build the nagios-plugins
completely by hand. But as you’ll see: this is not hard at all.
Wait - what? nagios-plugins?
I know the wars of monitoring-plugins
vs. nagios-plugins
, but I’m not interested in that. In fact, it’s not possible to compile monitoring-plugins
on OpenSolaris Hipster without accident. As I am not an developer – I can’t fix the source to get it running and it’s not my job – I decided to use a working alternative. Feel free to do it your way.
Getting source
Obtain latest source tarball, unpack and prepare it.
$ cd /usr/src
$ wget https://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz
$ tar xvfz nagios-plugins-2.2.1.tar.gz
$ cd nagios-plugins-2.2.1
configure and build
Use a prefix
you prefer – in fact there’s no need to have nagios
in that PATH
, but I usually keep it due to historical reasons.
$ ./configure \
--with-nagios-user=icinga \
--with-nagios-group=icinga \
--prefix=/usr/lib/nagios/plugins \
--libexecdir=/usr/lib/nagios/plugins \
--enable-perl-modules
$ gmake
$ gmake install && gmake install-root
And that’s it! The plugins are installed under /usr/lib/nagios/plugins
as known from other systems, and they’re ready to use.