IT Infrastruktur und System Monitoring mit Icinga 2 unter CentOS 7.x

Bild: ICINGA Logo Mit Icinga kann man sehr leicht und einfach umfangreiche und komplexe IT-Infrastrukturen und Dienste überwachen. Icinga bietet umfassende Überwachungs- und Alarmfunktionen für Server, Switches, Anwendungen und Dienste, so dass also Störungen im Betrieb frühestmöglich erkannt und Abhilfe geschaffen werden kann. Icinga wurde im Mai 2009 von einer Gruppe von Nagios-Entwicklern als ein Fork von Nagios ins Leben gerufen und seit dem rasant weiterentwickelt.

Tiefer gehende Informationen zu Icinga selbst findet man auf der Icinga 2 - Features Seite im WWW. Eine detaillierte Installations- und Konfigurationsbeschreibung, die bei der Erstellung dieser Installationsdokumentation wertvolle Hilfe geleistet hat, ist dort ebenfalls zu finden!

Die Installation von ICINGA selbst gestaltet sich relativ einfach, da von den Entwicklern unter anderem für CentOS 7 ein eigenes Repository vorgehalten wird.

Als Vorbereitung vor der Installation von icinga2 müssen wir erst einmal das benötigte Repository einbinden. Hierzu holen wir uns die Konfigurationsdatei erst einmal auf unseren Server.

 # wget http://packages.icinga.org/epel/ICINGA-release.repo -O /etc/yum.repos.d/ICINGA-release.repo

Anschließend tragen wir noch die Priorität in der Konfigurationsdatei nach; in unserer Installationsumgebung wählen wir dazu einen nachrangigen wert, z.B. 15

 # vim /etc/yum.repos.d/ICINGA-release.repo
/etc/yum.repos.d/ICINGA-release.repo
[icinga-stable-release]
name=ICINGA (stable release for epel)
baseurl=http://packages.icinga.org/epel/$releasever/release/
enabled=1
# Django : 2015-03-07 Priorität 15 nachgetragen
# default: unset
priority=15
gpgcheck=1
gpgkey=http://packages.icinga.org/icinga.key

Anschließend weisen wir yum an, alle Metadaten des neuen Repositorys zu laden.

 # yum makecache

Zu guter Letzt holen wir uns noch den PGP-Schlüssel des ICINGA-Repositorys, damit später bei der Installation der einzelnen Pakete diese überprüft werden können.

 # rpm --import http://packages.icinga.org/icinga.key

Nachdem die Vorbereitungen abgeschlossen sind, können wir nun mit der Installation von ICINGA2 starten, indem wir den Befehl yum bemühen.

 # yum install icinga2 -y

Neben dem Paket icinga2, werden auch noch die Pakete icinga2-common, icinga2-bin und icinga2-libs installiert.

Am Monitoring-Server installieren wir uns auch noch die Nagios Plugins, damit wir für spätere Tests- und Monitoring-Aktionen darauf zurück greifen können.

 # yum install nagios-plugins-all -y

Welche Verzeichnisse und Dateien das Paket installierte, erfahren wir mit dem nachfolgendem Aufruf.

 # rpm -qil icinga2
Name        : icinga2
Version     : 2.6.2
Release     : 1.el7.centos
Architecture: x86_64
Install Date: Mon 20 Feb 2017 05:56:16 PM CET
Group       : Applications/System
Size        : 17986
License     : GPL-2.0+
Signature   : DSA/SHA1, Mon 13 Feb 2017 01:42:27 PM CET, Key ID c6e319c334410682
Source RPM  : icinga2-2.6.2-1.el7.centos.src.rpm
Build Date  : Mon 13 Feb 2017 01:42:07 PM CET
Build Host  : 90c74ef910b1
Relocations : (not relocatable)
URL         : https://www.icinga.com/
Summary     : Network monitoring application
Description :
Meta package for Icinga 2 Core, DB IDO and Web.
/usr/share/doc/icinga2-2.6.2
/usr/share/doc/icinga2-2.6.2/COPYING

Wie schon zuvor prüfen wir, welchen Inhalt das RPM mitbrachte.

 # rpm -qil icinga2-common
Name        : icinga2-common
Version     : 2.6.2
Release     : 1.el7.centos
Architecture: x86_64
Install Date: Mon 20 Feb 2017 05:56:15 PM CET
Group       : Applications/System
Size        : 400604
License     : GPL-2.0+
Signature   : DSA/SHA1, Mon 13 Feb 2017 01:42:27 PM CET, Key ID c6e319c334410682
Source RPM  : icinga2-2.6.2-1.el7.centos.src.rpm
Build Date  : Mon 13 Feb 2017 01:42:07 PM CET
Build Host  : 90c74ef910b1
Relocations : (not relocatable)
URL         : https://www.icinga.com/
Summary     : Common Icinga 2 configuration
Description :
Provides common directories, uid and gid among Icinga 2 related
packages.
/etc/bash_completion.d/icinga2
/etc/icinga2
/etc/icinga2/conf.d
/etc/icinga2/conf.d/app.conf
/etc/icinga2/conf.d/commands.conf
/etc/icinga2/conf.d/downtimes.conf
/etc/icinga2/conf.d/groups.conf
/etc/icinga2/conf.d/hosts.conf
/etc/icinga2/conf.d/notifications.conf
/etc/icinga2/conf.d/satellite.conf
/etc/icinga2/conf.d/services.conf
/etc/icinga2/conf.d/templates.conf
/etc/icinga2/conf.d/timeperiods.conf
/etc/icinga2/conf.d/users.conf
/etc/icinga2/constants.conf
/etc/icinga2/features-available
/etc/icinga2/features-available/api.conf
/etc/icinga2/features-available/checker.conf
/etc/icinga2/features-available/command.conf
/etc/icinga2/features-available/compatlog.conf
/etc/icinga2/features-available/debuglog.conf
/etc/icinga2/features-available/gelf.conf
/etc/icinga2/features-available/graphite.conf
/etc/icinga2/features-available/influxdb.conf
/etc/icinga2/features-available/livestatus.conf
/etc/icinga2/features-available/mainlog.conf
/etc/icinga2/features-available/notification.conf
/etc/icinga2/features-available/opentsdb.conf
/etc/icinga2/features-available/perfdata.conf
/etc/icinga2/features-available/statusdata.conf
/etc/icinga2/features-available/syslog.conf
/etc/icinga2/features-enabled
/etc/icinga2/icinga2.conf
/etc/icinga2/init.conf
/etc/icinga2/repository.d
/etc/icinga2/repository.d/README
/etc/icinga2/scripts
/etc/icinga2/scripts/mail-host-notification.sh
/etc/icinga2/scripts/mail-service-notification.sh
/etc/icinga2/zones.conf
/etc/icinga2/zones.d
/etc/icinga2/zones.d/README
/etc/logrotate.d/icinga2
/etc/sysconfig/icinga2
/usr/lib/icinga2
/usr/lib/icinga2/prepare-dirs
/usr/lib/icinga2/safe-reload
/usr/lib/systemd/system/icinga2.service
/usr/share/doc/icinga2-common-2.6.2
/usr/share/doc/icinga2-common-2.6.2/AUTHORS
/usr/share/doc/icinga2-common-2.6.2/COPYING
/usr/share/doc/icinga2-common-2.6.2/COPYING.Exceptions
/usr/share/doc/icinga2-common-2.6.2/ChangeLog
/usr/share/doc/icinga2-common-2.6.2/NEWS
/usr/share/doc/icinga2-common-2.6.2/README.md
/usr/share/doc/icinga2-common-2.6.2/syntax
/usr/share/doc/icinga2-common-2.6.2/syntax/nano
/usr/share/doc/icinga2-common-2.6.2/syntax/nano/icinga2.nanorc
/usr/share/doc/icinga2-common-2.6.2/syntax/vim
/usr/share/doc/icinga2-common-2.6.2/syntax/vim/ftdetect
/usr/share/doc/icinga2-common-2.6.2/syntax/vim/ftdetect/icinga2.vim
/usr/share/doc/icinga2-common-2.6.2/syntax/vim/syntax
/usr/share/doc/icinga2-common-2.6.2/syntax/vim/syntax/icinga2.vim
/usr/share/icinga2/include
/usr/share/icinga2/include/command-icinga.conf
/usr/share/icinga2/include/command-nscp-local.conf
/usr/share/icinga2/include/command-plugins-manubulon.conf
/usr/share/icinga2/include/command-plugins-windows.conf
/usr/share/icinga2/include/command-plugins.conf
/usr/share/icinga2/include/hangman
/usr/share/icinga2/include/itl
/usr/share/icinga2/include/manubulon
/usr/share/icinga2/include/nscp
/usr/share/icinga2/include/plugins
/usr/share/icinga2/include/plugins-contrib
/usr/share/icinga2/include/plugins-contrib.d
/usr/share/icinga2/include/plugins-contrib.d/databases.conf
/usr/share/icinga2/include/plugins-contrib.d/hardware.conf
/usr/share/icinga2/include/plugins-contrib.d/icingacli.conf
/usr/share/icinga2/include/plugins-contrib.d/ipmi.conf
/usr/share/icinga2/include/plugins-contrib.d/logmanagement.conf
/usr/share/icinga2/include/plugins-contrib.d/metrics.conf
/usr/share/icinga2/include/plugins-contrib.d/network-components.conf
/usr/share/icinga2/include/plugins-contrib.d/network-services.conf
/usr/share/icinga2/include/plugins-contrib.d/operating-system.conf
/usr/share/icinga2/include/plugins-contrib.d/storage.conf
/usr/share/icinga2/include/plugins-contrib.d/virtualization.conf
/usr/share/icinga2/include/plugins-contrib.d/vmware.conf
/usr/share/icinga2/include/plugins-contrib.d/web.conf
/usr/share/icinga2/include/windows-plugins
/var/log/icinga2
/var/spool/icinga2
/var/spool/icinga2/perfdata
/var/spool/icinga2/tmp

Als Paketabhängigkeit wurden die icinga2-Bibliotheken icinga2-libs installiert.

 # rpm -qil icinga2-libs
Name        : icinga2-libs
Version     : 2.6.2
Release     : 1.el7.centos
Architecture: x86_64
Install Date: Mon 20 Feb 2017 05:56:16 PM CET
Group       : Applications/System
Size        : 11042903
License     : GPL-2.0+
Signature   : DSA/SHA1, Mon 13 Feb 2017 01:42:28 PM CET, Key ID c6e319c334410682
Source RPM  : icinga2-2.6.2-1.el7.centos.src.rpm
Build Date  : Mon 13 Feb 2017 01:42:07 PM CET
Build Host  : 90c74ef910b1
Relocations : (not relocatable)
URL         : https://www.icinga.com/
Summary     : Libraries for Icinga 2
Description :
Provides internal libraries for the daemon or studio.
/usr/lib64/icinga2
/usr/lib64/icinga2/libbase.so
/usr/lib64/icinga2/libbase.so.2.6.2
/usr/lib64/icinga2/libchecker.so
/usr/lib64/icinga2/libchecker.so.2.6.2
/usr/lib64/icinga2/libcli.so
/usr/lib64/icinga2/libcli.so.2.6.2
/usr/lib64/icinga2/libcompat.so
/usr/lib64/icinga2/libcompat.so.2.6.2
/usr/lib64/icinga2/libconfig.so
/usr/lib64/icinga2/libconfig.so.2.6.2
/usr/lib64/icinga2/libdb_ido.so
/usr/lib64/icinga2/libdb_ido.so.2.6.2
/usr/lib64/icinga2/libexecvpe.so
/usr/lib64/icinga2/libexecvpe.so.2.6.2
/usr/lib64/icinga2/libicinga.so
/usr/lib64/icinga2/libicinga.so.2.6.2
/usr/lib64/icinga2/liblivestatus.so
/usr/lib64/icinga2/liblivestatus.so.2.6.2
/usr/lib64/icinga2/libmethods.so
/usr/lib64/icinga2/libmethods.so.2.6.2
/usr/lib64/icinga2/libmmatch.so
/usr/lib64/icinga2/libmmatch.so.2.6.2
/usr/lib64/icinga2/libnotification.so
/usr/lib64/icinga2/libnotification.so.2.6.2
/usr/lib64/icinga2/libperfdata.so
/usr/lib64/icinga2/libperfdata.so.2.6.2
/usr/lib64/icinga2/libremote.so
/usr/lib64/icinga2/libremote.so.2.6.2
/usr/lib64/icinga2/libsocketpair.so
/usr/lib64/icinga2/libsocketpair.so.2.6.2
/usr/share/doc/icinga2-libs-2.6.2
/usr/share/doc/icinga2-libs-2.6.2/AUTHORS
/usr/share/doc/icinga2-libs-2.6.2/COPYING
/usr/share/doc/icinga2-libs-2.6.2/COPYING.Exceptions
/usr/share/doc/icinga2-libs-2.6.2/ChangeLog
/usr/share/doc/icinga2-libs-2.6.2/NEWS
/usr/share/doc/icinga2-libs-2.6.2/README.md

Zum Schluß werfen wir dann noch einen Blick in das Paket icinga2-bin.

 # rpm -qil icinga2-bin
Version     : 2.6.2
Release     : 1.el7.centos
Architecture: x86_64
Install Date: Mon 20 Feb 2017 05:56:16 PM CET
Group       : Applications/System
Size        : 284451
License     : GPL-2.0+
Signature   : DSA/SHA1, Mon 13 Feb 2017 01:42:27 PM CET, Key ID c6e319c334410682
Source RPM  : icinga2-2.6.2-1.el7.centos.src.rpm
Build Date  : Mon 13 Feb 2017 01:42:07 PM CET
Build Host  : 90c74ef910b1
Relocations : (not relocatable)
URL         : https://www.icinga.com/
Summary     : Icinga 2 binaries and libraries
Description :
Icinga 2 is a general-purpose network monitoring application.
Provides binaries for Icinga 2 Core.
/run/icinga2
/run/icinga2/cmd
/usr/lib64/icinga2/sbin
/usr/lib64/icinga2/sbin/icinga2
/usr/sbin/icinga2
/usr/share/doc/icinga2-bin-2.6.2
/usr/share/doc/icinga2-bin-2.6.2/AUTHORS
/usr/share/doc/icinga2-bin-2.6.2/COPYING
/usr/share/doc/icinga2-bin-2.6.2/COPYING.Exceptions
/usr/share/doc/icinga2-bin-2.6.2/ChangeLog
/usr/share/doc/icinga2-bin-2.6.2/NEWS
/usr/share/doc/icinga2-bin-2.6.2/README.md
/usr/share/icinga2
/usr/share/man/man8/icinga2.8.gz
/var/cache/icinga2
/var/lib/icinga2
/var/lib/icinga2/api
/var/lib/icinga2/api/log
/var/lib/icinga2/api/repository
/var/lib/icinga2/api/zones
/var/log/icinga2
/var/log/icinga2/compat
/var/log/icinga2/compat/archives
/var/log/icinga2/crash

Nun können wir den Icinga2-Daemon das erste mal starten.

 # systemctl start icinga2.service

Im Syslog wird der Start entsprechend dokumentiert.

 # less /var/log/messages
Feb 20 18:04:27 vml000117 systemd: Starting Icinga host/service/network monitoring system...
Feb 20 18:04:27 vml000117 systemd: Started Icinga host/service/network monitoring system.

Wollen wir den Daemon beim Hochfahren des Systems automatisch starten, greifen wir auf den Befehl systemctl zurück.

 # systemctl enable icinga2.service
 # ln -s '/usr/lib/systemd/system/icinga2.service' '/etc/systemd/system/multi-user.target.wants/icinga2.service'
 

Möchten wir uns vergewissern, ob der Daemon beim Systemstart gestartet wird oder nicht, erfahren wir ebenfalls mit dem Befehl systemctl.

 # systemctl is-enabled icinga2.service
 enabled

Startet der Server nicht automatisch, wird uns ein „disabled“ zurückgemeldet.

Wollen wir den Status eines gerade laufenden Icinga2-Daemon abfragen, verwenden wir folgenden Aufruf.

 # systemctl status icinga2.service

icinga2.service - Icinga host/service/network monitoring system
   Loaded: loaded (/usr/lib/systemd/system/icinga2.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2017-02-20 18:04:27 CET; 2min 0s ago
 Main PID: 2179 (icinga2)
   CGroup: /system.slice/icinga2.service
           ├─2176 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon -d -e /var/log/icinga2/error.log
           └─2179 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon -d -e /var/log/icinga2/error.log

Feb 20 18:04:27 vml000117.dmz.nausch.org systemd[1]: Starting Icinga host/service/network monitoring system...
Feb 20 18:04:27 vml000117.dmz.nausch.org systemd[1]: Started Icinga host/service/network monitoring system.

Bevor wir uns nun mit der Konfiguration von Icinga beschäftigen werfen wir noch kurz einen Blick in unser Dateisystem auf unserem Monitoring-Host.

Pfad/Datei 	                         Beschreibung
/etc/icinga2 	                         Icinga 2 Konfigurationsverzeichnisse und -Dateien
/usr/sbin/icinga2  	                 Icinga 2 binary.
/usr/lib/systemd/system/icinga2.service  Systemd Startdatei von Icinga 2
/usr/share/doc/icinga2 	                 ausführliche Programm und Installations- und 
                                         Konfigurationsdokumentation von Icinga 2. 
                                         (aus dem Paket icinga2-doc)
/usr/share/icinga2/include               Icinga Vorlagen sowie plugin command Konfigurationsmuster.
/var/run/icinga2 	                 PID Datei des laufenden Icinga 2 Daemon
/var/run/icinga2/cmd 	                 Command Pipe und Livestatus Socket.
/var/cache/icinga2 	                 Verzeichnis für status.dat, objects.cache und Icinga2.debug 
                                         Dateien.
/var/spool/icinga2 	                 Spooling-Verzeichnis für die Performance Daten.
/var/lib/icinga2 	                 Icinga 2 Stausdatei, Cluster Log und Dateien der Lokalen CA.
/var/log/icinga2 	                 Logverzeichnis für Icinga 12 und dem CompatLogger.

Im Verzeichnis /etc/icinga2/ finden wir auch schon die Basiskonfigurationsdatein, mit denen wir zuvor den Icinga2-Daemon angestartet haben.

/etc/icinga2/
├── conf.d
│   ├── app.conf
│   ├── commands.conf
│   ├── downtimes.conf
│   ├── groups.conf
│   ├── hosts.conf
│   ├── notifications.conf
│   ├── satellite.conf
│   ├── services.conf
│   ├── templates.conf
│   ├── timeperiods.conf
│   └── users.conf
├── constants.conf
├── features-available
│   ├── api.conf
│   ├── checker.conf
│   ├── command.conf
│   ├── compatlog.conf
│   ├── debuglog.conf
│   ├── gelf.conf
│   ├── graphite.conf
│   ├── influxdb.conf
│   ├── livestatus.conf
│   ├── mainlog.conf
│   ├── notification.conf
│   ├── opentsdb.conf
│   ├── perfdata.conf
│   ├── statusdata.conf
│   └── syslog.conf
├── features-enabled
│   ├── checker.conf -> ../features-available/checker.conf
│   ├── mainlog.conf -> ../features-available/mainlog.conf
│   └── notification.conf -> ../features-available/notification.conf
├── icinga2.conf
├── init.conf
├── repository.d
│   └── README
├── scripts
│   ├── mail-host-notification.sh
│   └── mail-service-notification.sh
├── zones.conf
└── zones.d
    └── README

Mit welchen Funktionen unser laufender Icinga-Daemon ausgestattet ist und welche bereits aktiviert wurden, zeigt nachfolgender Aufruf.

 # icinga2 feature list

Disabled features: api command compatlog debuglog gelf graphite icingastatus ido-mysql ido-pgsql livestatus perfdata statusdata syslog
Enabled features: checker mainlog notification

Bei der Bearbeitung der Icinga2 Konfigurationsdateien, ist es ungemein hilfreich, wenn schon bei der Bearbeitung Fehler erkannt und berichtigt werden können.

Eine dieser hilfreichen Optionen ist das Syntax-Highlighting. Im Paket icinga2-common wurden dazu die benötigten Dateien mitgeliefert. Diese werden wir nun dem Nutzer zur Verfügung stellen, der mit der Bearbeitung der Dateien betraut sein wird.

Als erstes legen wir uns im Homeverzeichnis unseres Users die benötigten Verzeichnisse an.

 # PREFIX=~/.vim
 # mkdir -p $PREFIX/{syntax,ftdetect}

Anschliessend kopieren wir die beiden Vorlagen aus dem RPM-Paket an Ort und Stelle.

 # cp /usr/share/doc/icinga2-common*/syntax/vim/syntax/icinga2.vim $PREFIX/syntax/
 # cp /usr/share/doc/icinga2-common*/syntax/vim/ftdetect/icinga2.vim $PREFIX/ftdetect/

Rufen wir nun mit unserem Editor der Wahl - eben vim - eine ICINGA-Konfigurationsdatei auf, so wird der SYNTAX in der Datei farbig dargestellt, was die Lesbarkeit doch erheblich steigert und somit sollten Fehler nicht mehr so häufig passieren, als bei einem durchgehenden Fließtext.

 # vim /etc/icinga2/conf.d/templates.conf

Bild: ICINGA Konfigurationstext mit syntax-highlighting

Bei der Installation des RPM_Paketes icinga2-common wurde für die CLI Bash Autocompletion bereits die passende Konfigurationsdatei an Ort und Stelle kopiert. Damit die Funktion auch genutzt werden kann, muss das Paket bash-completion installiert sein. Sollte das Paket nicht bei der Installation des ICINGA-Hosts bereits installiert worden sein, können wir dies nun nachholen.

 # yum install bash-completion

Haben wir einen lauffähigen Icinga2-Host im Produktionsbetrieb und müssen an der Konfiguration des Daemon Hand anlegen, wäre es äusserst hinderlich, wenn bedingt durch syntaktische Fehler der Daemon bei einem reload bzw. Start seinen Dienst quittieren würde.

An Hand zweier Ergebnisse testen wir nun, wie die Überprüfung der Icinga 2 Dateien erfolgen kann. Zuerst betrachten wir einen Test mit positivem Ergebnis und anschliessend einen mit negativem Ergebnis.

positives Ergebnis

 # /usr/sbin/icinga2 daemon -c /etc/icinga2/icinga2.conf -C

information/cli: Icinga application loader (version: v2.2.4)
information/cli: Loading application type: icinga/IcingaApplication
information/Utility: Loading library 'libicinga.so'
information/ConfigCompiler: Compiling config file: /etc/icinga2/icinga2.conf
information/ConfigCompiler: Compiling config file: /etc/icinga2/constants.conf
information/ConfigCompiler: Compiling config file: /etc/icinga2/zones.conf
information/ConfigCompiler: Compiling config file: /usr/share/icinga2/include/itl
information/ConfigCompiler: Compiling config file: /usr/share/icinga2/include/command.conf
information/Utility: Loading library 'libmethods.so'
information/ConfigCompiler: Compiling config file: /usr/share/icinga2/include/command-icinga.conf
information/ConfigCompiler: Compiling config file: /usr/share/icinga2/include/timeperiod.conf
information/ConfigCompiler: Compiling config file: /usr/share/icinga2/include/plugins
information/ConfigCompiler: Compiling config file: /usr/share/icinga2/include/command-plugins.conf
information/ConfigCompiler: Compiling config file: /etc/icinga2/features-enabled/checker.conf
information/Utility: Loading library 'libchecker.so'
information/ConfigCompiler: Compiling config file: /etc/icinga2/features-enabled/mainlog.conf
information/ConfigCompiler: Compiling config file: /etc/icinga2/features-enabled/notification.conf
information/Utility: Loading library 'libnotification.so'
information/ConfigCompiler: Compiling config file: /etc/icinga2/conf.d/commands.conf
information/ConfigCompiler: Compiling config file: /etc/icinga2/conf.d/downtimes.conf
information/ConfigCompiler: Compiling config file: /etc/icinga2/conf.d/groups.conf
information/ConfigCompiler: Compiling config file: /etc/icinga2/conf.d/hosts.conf
information/ConfigCompiler: Compiling config file: /etc/icinga2/conf.d/notifications.conf
information/ConfigCompiler: Compiling config file: /etc/icinga2/conf.d/satellite.conf
information/ConfigCompiler: Compiling config file: /etc/icinga2/conf.d/services.conf
information/ConfigCompiler: Compiling config file: /etc/icinga2/conf.d/templates.conf
information/ConfigCompiler: Compiling config file: /etc/icinga2/conf.d/timeperiods.conf
information/ConfigCompiler: Compiling config file: /etc/icinga2/conf.d/users.conf
information/ConfigItem: Committing config items
information/ConfigItem: Evaluating 'object' rules (step 1)...
information/ConfigItem: Evaluating 'apply' rules...
warning/Dependency: Apply rule 'satellite-host' for host does not match anywhere!
information/ConfigItem: Evaluating 'object' rules (step 2)...
information/ConfigItem: Checked 1 Endpoint(s).
information/ConfigItem: Checked 1 Zone(s).
information/ConfigItem: Checked 40 CheckCommand(s).
information/ConfigItem: Checked 2 NotificationCommand(s).
information/ConfigItem: Checked 3 TimePeriod(s).
information/ConfigItem: Checked 1 CheckerComponent(s).
information/ConfigItem: Checked 1 FileLogger(s).
information/ConfigItem: Checked 1 NotificationComponent(s).
information/ConfigItem: Checked 2 HostGroup(s).
information/ConfigItem: Checked 3 ServiceGroup(s).
information/ConfigItem: Checked 1 Host(s).
information/ConfigItem: Checked 11 Service(s).
information/ConfigItem: Checked 1 User(s).
information/ConfigItem: Checked 12 Notification(s).
information/ConfigItem: Checked 1 UserGroup(s).
information/ConfigItem: Checked 1 IcingaApplication(s).
information/ConfigItem: Checked 1 ScheduledDowntime(s).
information/ScriptVariable: Dumping variables to file '/var/cache/icinga2/icinga2.vars'
information/cli: Finished validating the configuration file(s).

negatives Ergebnis

Im folgendem Beispiel haben wir einmal bewußt einen Fehler in der Konfigurationsdatei /etc/icinga2/conf.d/downtimes.conf eingetragen, indem wir die Zeile mit dem assign Kommando auskommentiert haben.

 # vim  /etc/icinga2/conf.d/downtimes.conf
/etc/icinga2/conf.d/downtimes.conf
/**
 * The example downtime apply rule.
 */
 
apply ScheduledDowntime "backup-downtime" to Service {
  author = "icingaadmin"
  comment = "Scheduled downtime for backup"
 
  ranges = {
    monday = service.vars.backup_downtime
    tuesday = service.vars.backup_downtime
    wednesday = service.vars.backup_downtime
    thursday = service.vars.backup_downtime
    friday = service.vars.backup_downtime
    saturday = service.vars.backup_downtime
    sunday = service.vars.backup_downtime
  }
 
//  assign where service.vars.backup_downtime != ""
}

Führen wir nun erneut eine Überprüfung der Konfiguration durch, wird uns gezeigt, wo genau „der Hase im Pfeffer begraben ist“.

 # /usr/sbin/icinga2 daemon -c /etc/icinga2/icinga2.conf -C

Die Pfadangabe /etc/icinga2/ können wir auch weglassen, so dass sich der Aufruf zur Übrprüfung der Konfiguration lediglich auf icinga2 daemon -C beschränkt!

 # icinga2 daemon -C

information/cli: Icinga application loader (version: v2.2.4)
information/cli: Loading application type: icinga/IcingaApplication
information/Utility: Loading library 'libicinga.so'
information/ConfigCompiler: Compiling config file: /etc/icinga2/icinga2.conf
information/ConfigCompiler: Compiling config file: /etc/icinga2/constants.conf
information/ConfigCompiler: Compiling config file: /etc/icinga2/zones.conf
information/ConfigCompiler: Compiling config file: /usr/share/icinga2/include/itl
information/ConfigCompiler: Compiling config file: /usr/share/icinga2/include/command.conf
information/Utility: Loading library 'libmethods.so'
information/ConfigCompiler: Compiling config file: /usr/share/icinga2/include/command-icinga.conf
information/ConfigCompiler: Compiling config file: /usr/share/icinga2/include/timeperiod.conf
information/ConfigCompiler: Compiling config file: /usr/share/icinga2/include/plugins
information/ConfigCompiler: Compiling config file: /usr/share/icinga2/include/command-plugins.conf
information/ConfigCompiler: Compiling config file: /etc/icinga2/features-enabled/checker.conf
information/Utility: Loading library 'libchecker.so'
information/ConfigCompiler: Compiling config file: /etc/icinga2/features-enabled/mainlog.conf
information/ConfigCompiler: Compiling config file: /etc/icinga2/features-enabled/notification.conf
information/Utility: Loading library 'libnotification.so'
information/ConfigCompiler: Compiling config file: /etc/icinga2/conf.d/commands.conf
information/ConfigCompiler: Compiling config file: /etc/icinga2/conf.d/downtimes.conf
information/ConfigCompiler: Compiling config file: /etc/icinga2/conf.d/groups.conf
information/ConfigCompiler: Compiling config file: /etc/icinga2/conf.d/hosts.conf
information/ConfigCompiler: Compiling config file: /etc/icinga2/conf.d/notifications.conf
information/ConfigCompiler: Compiling config file: /etc/icinga2/conf.d/satellite.conf
information/ConfigCompiler: Compiling config file: /etc/icinga2/conf.d/services.conf
information/ConfigCompiler: Compiling config file: /etc/icinga2/conf.d/templates.conf
information/ConfigCompiler: Compiling config file: /etc/icinga2/conf.d/timeperiods.conf
information/ConfigCompiler: Compiling config file: /etc/icinga2/conf.d/users.conf
critical/config: Location:
/etc/icinga2/conf.d/downtimes.conf(3):  */
/etc/icinga2/conf.d/downtimes.conf(4): 
/etc/icinga2/conf.d/downtimes.conf(5): apply ScheduledDowntime "backup-downtime" to Service {
                                       ^^^^^^^^^^^^^^^^^^^^^^^
/etc/icinga2/conf.d/downtimes.conf(6):   author = "icingaadmin"
/etc/icinga2/conf.d/downtimes.conf(7):   comment = "Scheduled downtime for backup"

Config error: 'apply' is missing 'assign'
critical/config: 1 errors, 0 warnings.

Links

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
  • centos/web_c7/icinga/info.txt
  • Zuletzt geändert: 30.05.2020 16:40.
  • von django