IT Infrastruktur und System Monitoring mit Icinga 2 unter CentOS 7.x
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!
Installation
Die Installation von ICINGA selbst gestaltet sich relativ einfach, da von den Entwicklern unter anderem für CentOS 7 ein eigenes Repository vorgehalten wird.
ICINGA-Repository
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
ICINGA2
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.
Monitoring Plugins
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
Paketinhalte
icinga2
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
icinga2-common
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
icinga2-libs
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
icinga2-bin
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
Systemstart
erster manueller Start
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
automatischer Start beim Systemstart
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.
Systemtest
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.
Konfiguration
Programm- und Verzeichnisse
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
Icinga 2 Featurelist
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
Hilfsmittel bei der Konfiguration
Bei der Bearbeitung der Icinga2 Konfigurationsdateien, ist es ungemein hilfreich, wenn schon bei der Bearbeitung Fehler erkannt und berichtigt werden können.
syntax-highlighting
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
CLI Bash Autocompletion
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
Konfiguration überprüfen
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.