Icinga2 Build Console
ONLINE

Icinga 2: Installation unter MacOS X

Ich probiere derzeit viel aus, und heute habe ich Icinga 2 unter MacOS X 10.11.4 (El Capitan) gebaut, denn ich möchte meinen Arbeitsplatzrechner als Test-Node nutzen. Er soll mir kein Webinterface zur Verfügung stellen, er benötigt auch keine Datenbankanbindung. Ich zeige euch mal, wie ich es gemacht habe…

Die Abhängigkeiten

Ich nutze schon seit vielen Jahren The MacPorts, und die benötigten Pakete installiere ich hierüber — aber erst, nachdem ich alles auf den neuesten Stand gebracht habe. Und das kann eine ganze Weile dauern…

$ port selfupdate
$ port upgrade outdated
$ port install wget git ccache boost cmake bison flex yajl openssl nagios-plugins

Mac User GroupAußerdem werden ein User icinga und eine zugehörige Gruppe icinga benötigt; die können unter System Preferences → Users & Groups angelegt werden. Außerdem weisen wir dem User als Login-Shell die /usr/bin/false zu — sicher ist sicher.

$ dscl
list Local/Default/Users
...
read Local/Default/Users/icinga
...
UserShell: /bin/bash
 > change Local/Default/Users/icinga UserShell /bin/bash /usr/bin/false
 > quit
Goodbye

Icinga 2 bauen

Nun wird der Icinga 2-Source benötigt — am besten schnappst du dir den per git. Ich schmeisse ihn auf den Desktop — dann vergesse ich anschließend das Aufräumen nicht — aber das kannst du halten wie der sprichwörtliche Dachdecker 😉

$ cd ~/Desktop/
$ git clone git://git.icinga.org/icinga2.git
$ cd icinga2
$ mkdir debug
$ cd debug
$ export CC='ccache clang'
$ export CXX='ccache clang++'
$ export CCACHE_CPP2=yes
$ cmake -DCMAKE_BUILD_TYPE=Debug -DICINGA2_UNITY_BUILD=OFF -DICINGA2_WITH_MYSQL=OFF -DICINGA2_WITH_PGSQL=OFF -DCMAKE_INSTALL_PREFIX=/usr/local/icinga2 ..
$ cd ..
$ sudo make -j4 install -C debug
$ sudo chown -R icinga:icinga /usr/local/icinga2

Somit wurde ein vollständiges Icinga 2 nach /usr/local/icinga2 installiert; mit dem letzten Aufruf werden die Dateirechte auf User und Gruppe icinga gestellt, und vergiss nicht, /usr/local/icinga/sbin in deine PATH-Variable aufzunehmen — vielleicht durch ein export PATH=/usr/local/icinga2/sbin/:$PATH in deiner .profile oder wo auch immer du das verwaltest. Und nun kannst du schonmal vorsichtig linsen:

$ /usr/local/icinga2/sbin/icinga2 feature list
Disabled features: api command compatlog debuglog gelf graphite ido-pgsql livestatus opentsdb perfdata statusdata syslog
Enabled features: checker mainlog notification
 
$ icinga2 daemon

Da ist der, der Daemon, und er ist für alle Schandtaten bereit; ich habe meinen als Node eingerichtet — und bin dann schnell an die Wand gelaufen, als die nagios-plugins nicht gefunden werden konnten…

Die Nagios-Plugins

Icinga 2 Mac als NodeEingangs hatten wir sie per port install installiert — sie liegen in /opt/local/libexec/nagios/. Erwartet wurden sie von meinem System in /usr/lib/nagios/plugins/. Kein Problem, dachte ich ganz naiv, setz‘ ich halt einen Symlink — nicht die hübscheste Lösung, aber funktioniert halt. Denkste! El Capitan kommt mit der System Integrity Protection, und die erlaubt es nicht, in /usr/lib auch nur irgendwas zu machen; so erhält auch root ein lapidares Permission denied beim Versuch, einen Ordner anzulegen oder einen Symlink zu setzen.

Ich für meinen Teil habe den radikalen Weg beschritten und die System Integrity Protection gänzlich abgeschaltet (ob du das für dich so löst oder anders sei dir überlassen):

  • Den Mac herunterfahren und im Recovery-Modus starten, dazu beim Start ⌘+R gedrückt halten.
  • Ein Terminal-Fenster öffnen und die folgenden beiden Befehle eingeben:
    1. csrutil disable
    2. → Es folgt der Hinweis Successfully disabled System Integrity Protection. Please restart the machine for the changes to take effect.

    3. reboot

UnterschriftMit dieser Krücke ist es mir nun möglich, meinen Symlink zu setzen, und mein Mac wandert als Node in die Überwachung — sehr sexy und zumindest nicht schmerzhafter als dieses Rumgefrickel mit NRPE, wenn ihr mich fragt 😀

  1. Henning Kessler

    Hallo Marianne,

    vielen Dank für diesen sehr hilfreichen Artikel. Aber anstatt SIP zu deaktiveren wäre es doch vielleicht besser icinga2 mit -DICINGA2_PLUGINDIR=/opt/local/libexec/nagios zu kompilieren, oder?

    Grüsse Henning

    • Ganz bestimmt sogar! Ich werde allerdings wahnsinnig, wenn ich auch als root Dinge einfach nicht machen darf 😀 (Außerdem hab ich auf diese Art auf meinem Blog vermerkt, wie sich SIP abschalten läßt, und sowas kann man immer mal wieder brauchen…)

      😉

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.