Inhaltsverzeichnis
Icinga2 - Grundkonfiguration
Icinga ist eine vollständig auf Open-Source-Basis basierende, skalierbare und erweiterbare Monitoring-Lösung welche die Verfügbarkeit von definierten Ressource überprüft und über eine Benachrichtigungssystem verfügt.
Beschreibung | Externer Link |
---|---|
Homepage | https://www.icinga.org/ |
Dokumentation | http://docs.icinga.org/icinga2/latest/doc/module/icinga2/toc |
Download | http://packages.icinga.org/ |
Ab hier werden zur Ausführung nachfolgender Befehle root
-Rechte benötigt. Um der Benutzer root
zu werden, melden Sie sich bitte als root
-Benutzer am System an, oder wechseln mit nachfolgendem Befehl zum Benutzer root
:
$ su - Password:
Vorbereitungen
Bevor mit der eigentliche Konfiguration von Icinga begonnen werden soll, sollte mit nachfolgendem Befehl, von jeder Konfigurationsdatei im Verzeichnis
/etc/icinga2/conf.d
eine Kopie der originalen Konfigurationsdatei, welche alle mit .conf
enden, angefertigt werden:
# for i in `ls /etc/icinga2/conf.d/*.conf`; do cp -a $i $i.orig; done
Anschließend können die Konfigurationsdateien dann (ggf. bis auf die Kommentare am Anfang der jeweiligen Konfigurationsdatei) komplett geleert werden, so dass eine neue Konfiguration, ohne irgendeinen Host, Service oder anderer Einstellung, durchgeführt werden kann.
/etc/icinga2/icinga2.conf
Die Konfigurationsdatei
/etc/icinga2/icinga2.conf
ist die Hauptkonfigurationsdatei von Icinga.
Die Konfigurationsdatei hat standardmäßig nachfolgenden Inhalt und muss grundsätzlich nicht angepasst werden!
(Komplette Konfigurationsdatei:)
/** * Icinga 2 configuration file * - this is where you define settings for the Icinga application including * which hosts/services to check. * * For an overview of all available configuration options please refer * to the documentation that is distributed as part of Icinga 2. */ /** * The constants.conf defines global constants. */ include "constants.conf" /** * The zones.conf defines zones for a cluster setup. * Not required for single instance setups. */ include "zones.conf" /** * The Icinga Template Library (ITL) provides a number of useful templates * and command definitions. * Common monitoring plugin command definitions are included separately. */ include <itl> include <plugins> // include <plugins-contrib> /** * The features-available directory contains a number of configuration * files for features which can be enabled and disabled using the * icinga2 feature enable / icinga2 feature disable CLI commands. * These commands work by creating and removing symbolic links in * the features-enabled directory. */ include "features-enabled/*.conf" /** * The repository.d directory contains all configuration objects * managed by the 'icinga2 repository' CLI commands. */ include_recursive "repository.d" /** * Although in theory you could define all your objects in this file * the preferred way is to create separate directories and files in the conf.d * directory. Each of these files must have the file extension ".conf". */ include_recursive "conf.d"
Nachfolgende Inhalt verweisen auf weitere Konfigurationsdateien:
/etc/icinga2/constants.conf
/etc/icinga2/zones.conf
/etc/icinga2/features-enabled/*.conf
Nachfolgende Inhalte verweisen auf weitere rekursiv (auch in Unterverzeichnissen vorhandenen) Konfigurationsdateien:
/etc/icinga2/repository.d/*
/etc/icinga2/conf.d/*.conf
/etc/icinga2/constants.conf
Die Konfigurationsdatei
/etc/icinga2/constants.conf
kann dazu genutzt werden, um globale Konstanten/Variablen zu definieren, welche dann global gelten.
Die Konfigurationsdatei hat standardmäßig nachfolgenden Inhalt und muss grundsätzlich an dieser Stelle nicht angepasst werden!
(Komplette Konfigurationsdatei:)
/** * This file defines global constants which can be used in * the other configuration files. */ /* The directory which contains the plugins from the Monitoring Plugins project. */ const PluginDir = "/usr/lib64/nagios/plugins" /* The directory which contains the Manubulon plugins. * Check the documentation, chapter "SNMP Manubulon Plugin Check Commands", for details. */ const ManubulonPluginDir = "/usr/lib64/nagios/plugins" /* The directory which you use to store additional plugins which ITL provides user contributed command * definitions for. * Check the documentation, chapter "Plugins Contribution", for details. */ const PluginContribDir = "/usr/lib64/nagios/plugins" /* Our local instance name. By default this is the server's hostname as returned by `hostname --fqdn`. * This should be the common name from the API certificate. */ //const NodeName = "localhost" /* Our local zone name. */ const ZoneName = NodeName /* Secret key for remote node tickets */ const TicketSalt = ""
/etc/icinga2/zones.conf
Die Konfigurationsdatei
/etc/icinga2/zones.conf
wird in einem „Monitoring Remote Setup“ eingesetzt um z.B. beim Einsatz eines Icinga-Clients verschiedene notwendige Definitionen zu beinhalten („Endpoint“ und „Zone“ Definitionen).
Die Konfigurationsdatei hat standardmäßig nachfolgenden Inhalt und muss grundsätzlich an dieser Stelle nicht angepasst werden!
(Komplette Konfigurationsdatei:)
/* * Endpoint and Zone configuration for a cluster setup * This local example requires `NodeName` defined in * constants.conf. */ object Endpoint NodeName { host = NodeName } object Zone ZoneName { endpoints = [ NodeName ] } /* * Defines a global zone containing templates, * etc. synced to all nodes, if they accept * configuration. All remote nodes need * this zone configured too. */ /* object Zone "global-templates" { global = true } */ /* * Read the documentation on how to configure * a cluster setup with multiple zones. */ /* object Endpoint "master.example.org" { host = "master.example.org" } object Endpoint "satellite.example.org" { host = "satellite.example.org" } object Zone "master" { endpoints = [ "master.example.org" ] } object Zone "satellite" { parent = "master" endpoints = [ "satellite.example.org" ] } */
/etc/icinga2/features-enabled/*.conf
Die Konfigurationsdatei(en)
/etc/icinga2/features-enabled/*.conf
geben an, welche Features (Möglichkeiten) aktuell in Icinga aktiviert sind.
Die Konfigurationsdatei sind links auf Features (Möglichkeiten) in Icinga, die sich im Verzeichnis
/etc/icinga2/features-available/*.conf
befinden.
(Komplette Liste an Konfigurationsdatei(en):)
# ll features-enabled/ total 0 lrwxrwxrwx 1 root root 34 Nov 17 11:04 checker.conf -> ../features-available/checker.conf lrwxrwxrwx 1 root root 34 Nov 17 17:47 command.conf -> ../features-available/command.conf lrwxrwxrwx 1 root root 36 Nov 17 13:38 ido-mysql.conf -> ../features-available/ido-mysql.conf lrwxrwxrwx 1 root root 34 Nov 17 11:04 mainlog.conf -> ../features-available/mainlog.conf lrwxrwxrwx 1 root root 39 Nov 17 11:04 notification.conf -> ../features-available/notification.conf
Nachfolgender Befehl zeigt ebenfalls, welche Features (Möglichkeiten) aktuell in Icinga aktiviert sind:
# icinga2 feature list Disabled features: api compatlog debuglog gelf graphite icingastatus livestatus opentsdb perfdata statusdata syslog Enabled features: checker command ido-mysql mainlog notification
/etc/icinga2/repository.d/*
Die Konfigurationsdatei(en)
/etc/icinga2/repository.d/*
wird in einem „Monitoring Remote Setup“ eingesetzt um Konfigurationen zu generieren, welche auf dem „Master“ hinterlegte „Services“ für den Icinga-Client zu verwalten.
Standardmäßig sind hier keine Konfigurationen definiert, was ggf., je nach Setup, zu einem späteren Zeitpunkt durchgeführt wird.
/etc/icinga2/conf.d/*.conf
Nachfolgende Konfigurationsdateien sind sozusagen das Herz von Icinga.
Um auf einer „grünen Wiese“, ohne jeglicher Konfiguration beginnen zu können, sollte nachfolgende Konfiguration, wie unter nachfolgendem internen Link beschrieben
bereits durchgeführt worden sein.
Konfiguration: Master für Remote Clients
Nachfolgend soll Icinga mit der Benutzung des Icinga-Clients zum Monitoring eingesetzt werden.
Das Master Setup benötigt nachfolgende Komponenten
- SSL CA und signierte Zertifikate für den Master
- Aktiviertes API Feature (Möglichkeit), und einen lokalen „Endpoint“ und eine „Zone“-Objekt-Konfiguration
und zusätzliche nachfolgende
- Firewall-Freischaltung für den Kommunikations-Port (standardmäßig ist dies der Port:
5665
)
Um die vorhergehende Komponenten zu erstellen, kann nachfolgen der CLI command wizard (CLI Kommando Assistent) genutzt werden, um einen neuen Node (Knoten) auf dem Master zu erstellen.
HINWEIS - Alle relevanten Icinga-Konfigurationsdateien werden automatisch angepasst!
Dazu muss als erster Schritt, ein Master Setup durchgeführt werden, was mit nachfolgendem Befehl realisiert werden kann:
WICHTIG - Für ein Master Setup muss die erste Frage mit no (Nein) beantwortet werden!
WICHTIG - Ein Bind Host und Bind Port ist nur erforderlich, wenn Icinga sich nur an eine bestimmtes Netzwerk-Interface binden soll!
# icinga2 node wizard Welcome to the Icinga 2 Setup Wizard! We'll guide you through all required configuration details. Please specify if this is a satellite setup ('n' installs a master setup) [Y/n]: n Starting the Master setup routine... Please specifiy the common name (CN) [server11.idmz.tachtler.net]: Checking for existing certificates for common name 'server11.idmz.tachtler.net'... Certificates not yet generated. Running 'api setup' now. information/cli: Generating new CA. information/base: Writing private key to '/var/lib/icinga2/ca/ca.key'. information/base: Writing X509 certificate to '/var/lib/icinga2/ca/ca.crt'. information/cli: Generating new CSR in '/etc/icinga2/pki/server11.idmz.tachtler.net.csr'. information/base: Writing private key to '/etc/icinga2/pki/server11.idmz.tachtler.net.key'. information/base: Writing certificate signing request to '/etc/icinga2/pki/server11.idmz.tachtler.net.csr'. information/cli: Signing CSR with CA and writing certificate to '/etc/icinga2/pki/server11.idmz.tachtler.net.crt'. information/cli: Copying CA certificate to '/etc/icinga2/pki/ca.crt'. Generating master configuration for Icinga 2. information/cli: Adding new ApiUser 'root' in '/etc/icinga2/conf.d/api-users.conf'. information/cli: Enabling the 'api' feature. Enabling feature api. Make sure to restart Icinga 2 for these changes to take effect. information/cli: Dumping config items to file '/etc/icinga2/zones.conf'. warning/cli: Backup file '/etc/icinga2/zones.conf.orig' already exists. Skipping backup. Please specify the API bind host/port (optional): Bind Host []: Bind Port []: information/cli: Created backup file '/etc/icinga2/features-available/api.conf.orig'. information/cli: Updating constants.conf. warning/cli: Backup file '/etc/icinga2/constants.conf.orig' already exists. Skipping backup. information/cli: Updating constants file '/etc/icinga2/constants.conf'. information/cli: Updating constants file '/etc/icinga2/constants.conf'. information/cli: Updating constants file '/etc/icinga2/constants.conf'. Done. Now restart your Icinga 2 daemon to finish the installation!
Nachfolgende Dateien wurden für die CA (Certificate Authority) neu erstellt:
/var/lib/icinga2/ca/ca.key
- Schlüssel der CA/var/lib/icinga2/ca/ca.crt
- Root-Zertifikat der CA
Nachfolgende Dateien wurden für das Master-Zertifikat neu erstellt:
/etc/icinga2/pki/server11.idmz.tachtler.net.csr
- Zertifikats-Request/etc/icinga2/pki/server11.idmz.tachtler.net.key
- Schlüssel des Zertifikats/etc/icinga2/pki/server11.idmz.tachtler.net.csr
- Zertifikat
Nachfolgende Konfigurationsdatei wurden neu erstellt oder angepasst:
/etc/icinga2/conf.d/api-users.conf
/etc/icinga2/zones.conf
/etc/icinga2/features-available/api.conf
/etc/icinga2/features-enabled/api.conf
/etc/icinga2/constants.conf
Nachfolgender Befehl zeigt nun an, das das Feature (Möglichkeit) - api
- aktuell in Icinga zusätzlich aktiviert ist:
# icinga2 feature list Disabled features: compatlog debuglog gelf graphite icingastatus livestatus opentsdb perfdata statusdata syslog Enabled features: api checker command ido-mysql mainlog notification
/etc/icinga2/features-available/api.conf
Die Konfigurationsdatei
/etc/icinga2/features-available/api.conf
dient zur Definition, wo sich das
- Das Zertifikate
- Der Schlüssel zum Zertifikat
- Das ROOT-Zertifikat
zur verschlüsselten Kommunikation befinden und welcher „TicketSalt“ verwendet werden soll.
WICHTIG - Falls KEIN IPv6 zum Einsatz kommt, ist nachfolgender Konfiguratrionsparameter
bind_host = "0.0.0.0"
zwingend erforderlich!
(Komplette Konfigurationsdatei:)
/** * The API listener is used for distributed monitoring setups. */ object ApiListener "api" { cert_path = SysconfDir + "/icinga2/pki/" + NodeName + ".crt" key_path = SysconfDir + "/icinga2/pki/" + NodeName + ".key" ca_path = SysconfDir + "/icinga2/pki/ca.crt" bind_host = "0.0.0.0" ticket_salt = TicketSalt }
/etc/icinga2/zones.conf
Die Konfigurationsdatei
/etc/icinga2/zones.conf
ist nun nach dem „Monitoring Remote Setup“ konfiguriert um beim Einsatz des Icinga-Clients verschiedene notwendige Definitionen zu beinhalten („Endpoint“ und „Zone“ Definitionen).
Die Konfigurationsdatei hat nun nachfolgenden Inhalt und muss grundsätzlich an dieser Stelle nicht angepasst werden!
(Komplette Konfigurationsdatei:)
/* * Generated by Icinga 2 node setup commands * on 2015-12-01 14:00:07 +0100 */ object Endpoint NodeName { } object Zone ZoneName { endpoints = [ NodeName ]; }
/etc/icinga2/constants.conf
Die Konfigurationsdatei
/etc/icinga2/constants.conf
wurde nun dazu genutzt, um die globale Konstanten/Variablen zu definieren, welche den
- NodeName
- ZoneName
- TicketSalt
beinhalten.
Die Konfigurationsdatei hat jetzt nachfolgenden Inhalt und muss grundsätzlich an dieser Stelle nicht angepasst werden!
(Komplette Konfigurationsdatei:)
/** * This file defines global constants which can be used in * the other configuration files. */ /* The directory which contains the plugins from the Monitoring Plugins project. */ const PluginDir = "/usr/lib64/nagios/plugins" /* The directory which contains the Manubulon plugins. * Check the documentation, chapter "SNMP Manubulon Plugin Check Commands", for details. */ const ManubulonPluginDir = "/usr/lib64/nagios/plugins" /* The directory which you use to store additional plugins which ITL provides user contributed command * definitions for. * Check the documentation, chapter "Plugins Contribution", for details. */ const PluginContribDir = "/usr/lib64/nagios/plugins" /* Our local instance name. By default this is the server's hostname as returned by `hostname --fqdn`. * This should be the common name from the API certificate. */ const NodeName = "server11.idmz.tachtler.net" /* Our local zone name. */ const ZoneName = "server11.idmz.tachtler.net" /* Secret key for remote node tickets */ const TicketSalt = "b12d05ea4adae26c9d5f2d6618baa1f4"
Neustart: icinga2
Danach kann der icinga2-Server mit nachfolgendem Befehle neu gestartet werden:
# systemctl restart icinga2
Mit nachfolgendem Befehl kann der Status des Icinga-Servers abgefragt werden:
# systemctl status icinga2 icinga2.service - Icinga host/service/network monitoring system Loaded: loaded (/usr/lib/systemd/system/icinga2.service; enabled) Active: active (running) since Tue 2015-12-01 14:34:31 CET; 3s ago Process: 19103 ExecStart=/usr/sbin/icinga2 daemon -d -e ${ICINGA2_ERROR_LOG} (code=exited, status=0/SUCCESS) Process: 19008 ExecStartPre=/usr/lib/icinga2/prepare-dirs /etc/sysconfig/icinga2 (code=exited, status=0/SUCCESS) Main PID: 19143 (icinga2) CGroup: /system.slice/icinga2.service └─19143 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon -... Dec 01 14:34:31 server11.idmz.tachtler.net icinga2[19103]: [2015-12-01 14:34:... Dec 01 14:34:31 server11.idmz.tachtler.net icinga2[19103]: [2015-12-01 14:34:... Dec 01 14:34:31 server11.idmz.tachtler.net icinga2[19103]: [2015-12-01 14:34:... Dec 01 14:34:31 server11.idmz.tachtler.net icinga2[19103]: [2015-12-01 14:34:... Dec 01 14:34:31 server11.idmz.tachtler.net icinga2[19103]: [2015-12-01 14:34:... Dec 01 14:34:31 server11.idmz.tachtler.net icinga2[19103]: [2015-12-01 14:34:... Dec 01 14:34:31 server11.idmz.tachtler.net icinga2[19103]: [2015-12-01 14:34:... Dec 01 14:34:31 server11.idmz.tachtler.net icinga2[19103]: [2015-12-01 14:34:... Dec 01 14:34:31 server11.idmz.tachtler.net icinga2[19103]: [2015-12-01 14:34:... Dec 01 14:34:31 server11.idmz.tachtler.net systemd[1]: Started Icinga host/se... Hint: Some lines were ellipsized, use -l to show in full.
Nachfolgende LOG-Dateien sollten Auskunft darüber geben, wie der Neustart und der Status des Icinga-Servers ist.
/var/log/icinga2/icinga2.log
/var/log/icinga2/error.log
Der Inhalt der LOG-Datei /var/log/icinga2/icinga2.log
könnte demnach wie folgt aussehen:
[2015-12-01 14:34:31 +0100] information/Application: Received request to shut down. [2015-12-01 14:34:31 +0100] information/Application: Shutting down... [2015-12-01 14:34:31 +0100] information/CheckerComponent: Checker stopped. [2015-12-01 14:34:31 +0100] information/DbConnection: Pausing IDO connection: ido-mysql [2015-12-01 14:34:31 +0100] information/DbConnection: Resuming IDO connection: ido-mysql [2015-12-01 14:34:31 +0100] information/ConfigItem: Activated all objects. [2015-12-01 14:34:31 +0100] information/ConfigCompiler: Compiling config file: /var/lib/icinga2/modified- attributes.conf [2015-12-01 14:34:31 +0100] information/IdoMysqlConnection: MySQL IDO instance id: 1 (schema version: '1.14.0')
Die LOG-Datei /var/log/icinga2/error.log
sollte hingegen leer sein!
Konfiguration: Client für Remote Monitoring
Nachfolgend soll Icinga mit der Benutzung des Icinga-Clients zum Monitoring eingesetzt werden.
Das Client Setup benötigt nachfolgende Komponenten
- Ein lauffähigen Master
- Ein signiertes Zertifikate zur Kommunikation mit dem Master
- Aktiviertes API Feature (Möglichkeit), und einen lokalen „Endpoint“ und eine „Zone“-Objekt-Konfiguration
und zusätzliche nachfolgende
- Firewall-Freischaltung für den Kommunikations-Port (standardmäßig ist dies der Port:
5665
)
Um die vorhergehende Komponenten zu erstellen, kann nachfolgen der CLI command wizard (CLI Kommando Assistent) genutzt werden, um einen neuen Node (Knoten) auf dem Client zu erstellen.
HINWEIS - Alle relevanten Icinga-Konfigurationsdateien werden automatisch angepasst!
Dazu muss als erster Schritt, ein Client Setup durchgeführt werden, was mit nachfolgendem Befehl realisiert werden kann:
WICHTIG - Für ein Client Setup muss die erste Frage mit yes (Ja) beantwortet werden!
WICHTIG - Ein Bind Host und Bind Port ist nur erforderlich, wenn Icinga sich nur an eine bestimmtes Netzwerk-Interface binden soll!
# icinga2 node wizard Welcome to the Icinga 2 Setup Wizard! We'll guide you through all required configuration details. Please specify if this is a satellite setup ('n' installs a master setup) [Y/n]: Y Starting the Node setup routine... Please specifiy the common name (CN) [server11.idmz.tachtler.net]: Please specifiy the local zone name [server11.idmz.tachtler.net]: Please specify the master endpoint(s) this node should connect to: Master Common Name (CN from your master setup): server11.idmz.tachtler.net Do you want to establish a connection to the master from this node? [Y/n]: Y Please fill out the master connection information: Master endpoint host (Your master's IP address or FQDN): 192.168.0.110 Master endpoint port [5665]: 5665 Add more master endpoints? [y/N]: N Please specify the master connection for CSR auto-signing (defaults to master endpoint host): Host [192.168.0.110]: Port [5665]: information/cli: Created backup file '/etc/icinga2/pki/server11.idmz.tachtler.net.key.orig'. information/cli: Created backup file '/etc/icinga2/pki/server11.idmz.tachtler.net.crt.orig'. information/base: Writing private key to '/etc/icinga2/pki/server11.idmz.tachtler.net.key'. information/base: Writing X509 certificate to '/etc/icinga2/pki/server11.idmz.tachtler.net.crt'. information/cli: Fetching public certificate from master (192.168.0.110, 5665): Certificate information: Subject: CN = server11.idmz.tachtler.net Issuer: CN = Icinga CA Valid From: Dec 1 13:00:07 2015 GMT Valid Until: Nov 27 13:00:07 2030 GMT Fingerprint: 0B 45 BC FA 21 65 46 1C 33 14 41 39 BC 28 7D A6 49 CB C8 AB Is this information correct? [y/N]: y information/cli: Received trusted master certificate. Please specify the request ticket generated on your Icinga 2 master. (Hint: # icinga2 pki ticket --cn 'server11.idmz.tachtler.net'): a8c22c52d3c05ca581643acfe187051e6abe4301 information/cli: Requesting certificate with ticket 'a8c22c52d3c05ca581643acfe187051e6abe4301'. warning/cli: Backup file '/etc/icinga2/pki/ca.crt.orig' already exists. Skipping backup. warning/cli: Backup file '/etc/icinga2/pki/server11.idmz.tachtler.net.crt.orig' already exists. Skipping backup. information/cli: Writing signed certificate to file '/etc/icinga2/pki/server11.idmz.tachtler.net.crt'. information/cli: Writing CA certificate to file '/etc/icinga2/pki/ca.crt'. Please specify the API bind host/port (optional): Bind Host []: Bind Port []: Accept config from master? [y/N]: N Accept commands from master? [y/N]: y information/cli: Disabling the Notification feature. Disabling feature notification. Make sure to restart Icinga 2 for these changes to take effect. information/cli: Enabling the Apilistener feature. warning/cli: Feature 'api' already enabled. warning/cli: Backup file '/etc/icinga2/features-available/api.conf.orig' already exists. Skipping backup. information/cli: Generating local zones.conf. information/cli: Dumping config items to file '/etc/icinga2/zones.conf'. warning/cli: Backup file '/etc/icinga2/zones.conf.orig' already exists. Skipping backup. information/cli: Updating constants.conf. warning/cli: Backup file '/etc/icinga2/constants.conf.orig' already exists. Skipping backup. information/cli: Updating constants file '/etc/icinga2/constants.conf'. information/cli: Updating constants file '/etc/icinga2/constants.conf'. Done. Now restart your Icinga 2 daemon to finish the installation!
HINWIES - Hier wurde ein Client Setup auf dem Master durchgeführt!
Nachfolgende Dateien wurden für die CA (Certificate Authority) neu erstellt:
/var/lib/icinga2/ca/ca.crt
- Root-Zertifikat der CA
WICHTIG - Die neu erstellte Datei kann mit der vorhergehenden wieder überschrieben werden!
# mv /var/lib/icinga2/ca/ca.crt.orig /var/lib/icinga2/ca/ca.crt
Nachfolgende Dateien wurden für das Master-Zertifikat neu erstellt:
/etc/icinga2/pki/server11.idmz.tachtler.net.key
- Schlüssel des Zertifikats/etc/icinga2/pki/server11.idmz.tachtler.net.csr
- Zertifikat
WICHTIG - Die neu erstellten Dateien müssen mit der vorhergehenden wieder überschrieben werden!
# mv /etc/icinga2/pki/server11.idmz.tachtler.net.key.orig /etc/icinga2/pki/server11.idmz.tachtler.net.key # mv /etc/icinga2/pki/server11.idmz.tachtler.net.crt.orig /etc/icinga2/pki/server11.idmz.tachtler.crt.key
Nachfolgende Konfigurationsdatei wurden neu erstellt oder angepasst:
/etc/icinga2/zones.conf
/etc/icinga2/features-available/api.conf
/etc/icinga2/features-enabled/api.conf
/etc/icinga2/constants.conf
HINWEIS - Möglicherweise ist das Feature notification
(disabled) deaktiviert. Dies kann durch nachfolgenden Befehl wieder (enabled) aktiviert werden:
# icinga2 feature enable notification Enabling feature notification. Make sure to restart Icinga 2 for these changes to take effect.
Nachfolgender Befehl zeigt an, das das Feature (Möglichkeit) - api
- aktuell in Icinga zusätzlich aktiviert ist:
# icinga2 feature list Disabled features: compatlog debuglog gelf graphite icingastatus livestatus opentsdb perfdata statusdata syslog Enabled features: api checker command ido-mysql mainlog notification
/etc/icinga2/features-available/api.conf
Die Konfigurationsdatei
/etc/icinga2/features-available/api.conf
dient zur Definition, wo sich das
- Das Zertifikate
- Der Schlüssel zum Zertifikat
- Das ROOT-Zertifikat
zur verschlüsselten Kommunikation befinden und welcher „TicketSalt“ verwendet werden soll.
WICHTIG - Falls KEIN IPv6 zum Einsatz kommt, ist nachfolgender Konfiguratrionsparameter
bind_host = "0.0.0.0"
zwingend erforderlich!
(Komplette Konfigurationsdatei:)
/** * The API listener is used for distributed monitoring setups. */ object ApiListener "api" { cert_path = SysconfDir + "/icinga2/pki/" + NodeName + ".crt" key_path = SysconfDir + "/icinga2/pki/" + NodeName + ".key" ca_path = SysconfDir + "/icinga2/pki/ca.crt" bind_host = "0.0.0.0" accept_config = false accept_commands = true ticket_salt = TicketSalt }
/etc/icinga2/zones.conf
Die Konfigurationsdatei
/etc/icinga2/zones.conf
ist nun nach dem „Monitoring Remote Setup“ konfiguriert um beim Einsatz des Icinga-Clients verschiedene notwendige Definitionen zu beinhalten („Endpoint“ und „Zone“ Definitionen).
Die Konfigurationsdatei hat nun nachfolgenden Inhalt und muss zwingend angepasst werden!
(Komplette Konfigurationsdatei:)
/* * Generated by Icinga 2 node setup commands * on 2015-12-01 15:19:13 +0100 */ object Endpoint "server11.idmz.tachtler.net" { host = "192.168.0.110"; port = "5665"; } object Zone "master" { endpoints = [ "server11.idmz.tachtler.net" ]; } /* * Tachtler - disabled - * Double confiuration as Master and Client ist NOT possible. */ /* object Endpoint NodeName { } object Zone ZoneName { endpoints = [ NodeName ]; parent = "master"; } */
/etc/icinga2/constants.conf
Die Konfigurationsdatei
/etc/icinga2/constants.conf
wurde nun dazu genutzt, um die globale Konstanten/Variablen zu definieren, welche den
- NodeName
- ZoneName
- TicketSalt
beinhalten.
Die Konfigurationsdatei hat jetzt nachfolgenden Inhalt und muss grundsätzlich an dieser Stelle nicht angepasst werden!
(Komplette Konfigurationsdatei:)
/** * This file defines global constants which can be used in * the other configuration files. */ /* The directory which contains the plugins from the Monitoring Plugins project. */ const PluginDir = "/usr/lib64/nagios/plugins" /* The directory which contains the Manubulon plugins. * Check the documentation, chapter "SNMP Manubulon Plugin Check Commands", for details. */ const ManubulonPluginDir = "/usr/lib64/nagios/plugins" /* The directory which you use to store additional plugins which ITL provides user contributed command * definitions for. * Check the documentation, chapter "Plugins Contribution", for details. */ const PluginContribDir = "/usr/lib64/nagios/plugins" /* Our local instance name. By default this is the server's hostname as returned by `hostname --fqdn`. * This should be the common name from the API certificate. */ const NodeName = "server11.idmz.tachtler.net" /* Our local zone name. */ const ZoneName = "server11.idmz.tachtler.net" /* Secret key for remote node tickets */ const TicketSalt = "b12d05ea4adae26c9d5f2d6618baa1f4"
Neustart: icinga2
Danach kann der icinga2-Server mit nachfolgendem Befehle neu gestartet werden:
# systemctl restart icinga2
Mit nachfolgendem Befehl kann der Status des Icinga-Servers abgefragt werden:
# systemctl status icinga2 icinga2.service - Icinga host/service/network monitoring system Loaded: loaded (/usr/lib/systemd/system/icinga2.service; enabled) Active: active (running) since Tue 2015-12-01 16:32:01 CET; 1min 28s ago Process: 24493 ExecStart=/usr/sbin/icinga2 daemon -d -e ${ICINGA2_ERROR_LOG} (code=exited, status=0/SUCCESS) Process: 24398 ExecStartPre=/usr/lib/icinga2/prepare-dirs /etc/sysconfig/icinga2 (code=exited, status=0/SUCCESS) Main PID: 24536 (icinga2) CGroup: /system.slice/icinga2.service └─24536 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon -... Dec 01 16:32:01 server11.idmz.tachtler.net icinga2[24493]: [2015-12-01 16:32:... Dec 01 16:32:01 server11.idmz.tachtler.net icinga2[24493]: [2015-12-01 16:32:... Dec 01 16:32:01 server11.idmz.tachtler.net icinga2[24493]: [2015-12-01 16:32:... Dec 01 16:32:01 server11.idmz.tachtler.net icinga2[24493]: [2015-12-01 16:32:... Dec 01 16:32:01 server11.idmz.tachtler.net icinga2[24493]: [2015-12-01 16:32:... Dec 01 16:32:01 server11.idmz.tachtler.net icinga2[24493]: [2015-12-01 16:32:... Dec 01 16:32:01 server11.idmz.tachtler.net icinga2[24493]: [2015-12-01 16:32:... Dec 01 16:32:01 server11.idmz.tachtler.net icinga2[24493]: [2015-12-01 16:32:... Dec 01 16:32:01 server11.idmz.tachtler.net icinga2[24493]: [2015-12 Dec 01 16:32:01 server11.idmz.tachtler.net systemd[1]: Started Icinga host/se... Hint: Some lines were ellipsized, use -l to show in full.
Nachfolgende LOG-Dateien sollten Auskunft darüber geben, wie der Neustart und der Status des Icinga-Servers ist.
/var/log/icinga2/icinga2.log
/var/log/icinga2/error.log
Der Inhalt der LOG-Datei /var/log/icinga2/icinga2.log
könnte demnach wie folgt aussehen:
[2015-12-01 16:32:01 +0100] information/Application: Received request to shut down. [2015-12-01 16:32:01 +0100] information/Application: Shutting down... [2015-12-01 16:32:01 +0100] information/CheckerComponent: Checker stopped. [2015-12-01 16:32:01 +0100] information/DbConnection: Pausing IDO connection: ido-mysql [2015-12-01 16:32:01 +0100] information/DbConnection: Resuming IDO connection: ido-mysql [2015-12-01 16:32:01 +0100] information/ConfigItem: Activated all objects. [2015-12-01 16:32:01 +0100] information/ConfigCompiler: Compiling config file: /var/lib/icinga2/modified- attributes.conf [2015-12-01 16:32:01 +0100] information/IdoMysqlConnection: MySQL IDO instance id: 1 (schema version: '1.14.0')
Die LOG-Datei /var/log/icinga2/error.log
sollte hingegen leer sein!
Konfiguration: Monitoring: /etc/icinga2/conf.d/
Nachfolgende Konfigurationsdateien stellen das Herzstück von Icinga dar und dienen der Konfiguration des Monitorings durch Icinga.
Bevor Veränderungen in den Dateien und deren Position im Dateisystem durchgeführt werden sollen, sollte eine Sicherung der ursprünglichen Konfigurationsdateien durchgeführt werden, wie unter nachfolgendem internen Link dargestellt:
Nachfolgende Konfigurationsdateien sind entweder
- global, es reicht das einmalige Vorkommen
- lokal, spezielle Konfigurationen Objekt spezifisch z.B. für unterschiedliche Domänen in Unterdateien definiert
Zu den globalen Konfigurationsdateien gehören nachfolgende:
/etc/icinga2/conf.d/app.conf
/etc/icinga2/conf.d/commands.conf
- *
/etc/icinga2/conf.d/timeperiods.conf
Zu den lokalen Konfigurationsdateien gehören nachfolgende:
/etc/icinga2/conf.d/downtimes.conf
/etc/icinga2/conf.d/hosts.conf
/etc/icinga2/conf.d/groups.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
* Aufteilung in eine globalen und lokalen Teil
app.conf
Die Konfigurationsdatei
/etc/icinga2/conf.d/app.conf
konfiguriert global das Icinga-Application Objekt app
, welches
benötigt wird, damit Icinga startet. Das Objekt muss app
lauten.
Falls das Objekt app
nicht vorhanden ist, wird dies von Icinga automatisch erstellt.
Nachfolgende Parameter können dem Icinga-Application Objekt app
hinzugefügt werden:
Parameter | Beschreibung |
---|---|
enable_notifications | Optional. Aktiviert notifications global. Standard: true (wahr). |
enable_event_handlers | Optional. Aktiviert event_handlers global. Standard: true (wahr). |
enable_flapping | Optional. Aktiviert flapping global. Standard: true (wahr). |
enable_host_checks | Optional. Aktiviert host_checks global. Standard: true (wahr). |
enable_service_checks | Optional. Aktiviert service_checks global. Standard: true (wahr). |
enable_perfdata | Optional. Aktiviert perfdata global. Standard: true (wahr). |
vars | Optional. Benutzerdefinierte globale Variablen. |
Nachfolgend der Inhalt der Konfigurationsdatei. Es sind keine Anpassungen erforderlich!:
object IcingaApplication "app" { }
commands.conf
Die Konfigurationsdatei
/etc/icinga2/conf.d/commands.conf
konfiguriert global Icinga-Comamnd (Kommandos), welche ebenfalls global an verschiedenen Stellen durch Icinga genutzt werden. Standardmäßig sind nachfolgende Commands (Kommandos) definiert:
mail-host-notification
- Aufruf des Skripts:/etc/icinga2/scripts/mail-host-notification.sh
und bereitstellen von Umgebungsvariablen für dieses Skript.mail-service-notification
- Aufruf des Skripts:/etc/icinga2/scripts/mail-service-notification.sh
und bereitstellen von Umgebungsvariablen für dieses Skript.
Eigene Comamnd (Kommandos) können und sollen hier definiert werden und die ggf. dazu benötigten Skripte sollten im Verzeichnis /etc/icinga2/scripts/
hinterlegt werden.
Nachfolgend der Inhalt der Konfigurationsdatei. Es sind keine Anpassungen erforderlich!:
/* Command objects */ object NotificationCommand "mail-host-notification" { import "plugin-notification-command" command = [ SysconfDir + "/icinga2/scripts/mail-host-notification.sh" ] env = { NOTIFICATIONTYPE = "$notification.type$" HOSTALIAS = "$host.display_name$" HOSTADDRESS = "$address$" HOSTSTATE = "$host.state$" LONGDATETIME = "$icinga.long_date_time$" HOSTOUTPUT = "$host.output$" NOTIFICATIONAUTHORNAME = "$notification.author$" NOTIFICATIONCOMMENT = "$notification.comment$" HOSTDISPLAYNAME = "$host.display_name$" USEREMAIL = "$user.email$" } } object NotificationCommand "mail-service-notification" { import "plugin-notification-command" command = [ SysconfDir + "/icinga2/scripts/mail-service-notification.sh" ] env = { NOTIFICATIONTYPE = "$notification.type$" SERVICEDESC = "$service.name$" HOSTALIAS = "$host.display_name$" HOSTADDRESS = "$address$" SERVICESTATE = "$service.state$" LONGDATETIME = "$icinga.long_date_time$" SERVICEOUTPUT = "$service.output$" NOTIFICATIONAUTHORNAME = "$notification.author$" NOTIFICATIONCOMMENT = "$notification.comment$" HOSTDISPLAYNAME = "$host.display_name$" SERVICEDISPLAYNAME = "$service.display_name$" USEREMAIL = "$user.email$" } }
downtimes.conf
HINWEIS - Der Einsatz in einem Unterverzeichnis z.B. /etc/icinga2/conf.d/<DOMAIN.TLD>/<ZONE>/downtimes.conf
ist sinnvoll!
Die Konfigurationsdatei
/etc/icinga2/conf.d/downtimes.conf
konfiguriert global die von Icinga zu berücksichtigenden „Downtimes“ (Wartungszeiten), welche ein Objekt wie z.B. ein service haben kann.
Die Definition, ob „Downtimes“ (Wartungszeiten) von Icinga zu berücksichtigen sind, erfolgt beim Objekt, z.B. in einer service-Definition mit der Definition: load
Der Parameter ScheduledDowntime
(geplantes Wartungsfenster), nutzt das Attribut dazu, um ein geplantes Standard Wartungsfenster für ein Objekt, z.B. einen Service zu definieren.
Nachfolgend der Inhalt der Konfigurationsdatei. Es sind keine Anpassungen erforderlich!:
/** * 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 != "" }
Falls bei einem Service nun die benutzerdefinierte Variable: vars.backup_downtime
definiert ist, kommt das geplante Wartungsfenster zum tragen.
Anstelle für einen bestimmtes Objekt ein ScheduledDowntime
zu definieren, ist es sinnvoller ein Template (Vorlage) zu definieren, welches dann an verschiedenen Stelle genutzt werden kann. Dieses Template (Vorlage) kann dann durch z.B. setzen der Variable: vars.backup_downtime
beim Objekt aktiviert werden:
Beispiel:
object ScheduledDowntime "some-downtime" { host_name = "localhost" service_name = "ping4" author = "icingaadmin" comment = "Some comment" fixed = false duration = 30m ranges = { "sunday" = "02:00-03:00" } }
Nachfolgende Parameter können für Icinga ScheduledDowntime
hinzugefügt werden:
Parameter | Beschreibung |
---|---|
host_name | Erforderlich. Der Name des Host, auf den die ScheduledDowntime angewandt werden soll. |
service_name | Optional. Der Kurzname des Service, auf den die ScheduledDowntime angewandt werden soll. Falls hier eine Definition erfolgt, wird dieser Service wie ein Objekt vom Typ Host behandelt. |
author | Erforderlich. Der Autor der ScheduledDowntime . |
comment | Erforderlich. Ein Kommentar zur ScheduledDowntime . |
fixed | Optional. Bezeichnet die ScheduledDowntime als feststehend. Standard: true (wahr). |
duration | Optional. Dauer für die ScheduledDowntime . Kommt nur zum tragen, wenn fixed false (unwahr) ist. |
ranges | Erforderlich. Angabe für welchen Zeitraum die ScheduledDowntime gelten soll. |
HINWEIS - Falls dies so nicht benötigt wird, kann die Konfigurationsdatei auch geleert werden, wie nachfolgend dargestellt!
/**
* The downtime apply rules.
*/
groups.conf
HINWEIS - Nur der Einsatz in einem Unterverzeichnis z.B. /etc/icinga2/conf.d/<DOMAIN.TLD>/<ZONE>/downtimes.conf
ist sinnvoll!
Die Konfigurationsdatei
/etc/icinga2/conf.d/groups.conf
beinhaltet „Groups“ (Gruppendefinitionen) für Icinga.
Nachfolgend der Inhalt der Konfigurationsdatei. Es werden nachfolgende Anpassungen durchgeführt!:
HINWEIS - Diese Konfigurationsdatei sollte sehr individuell angepasst werden!
Nachfolgend der Inhalt der Konfigurationsdatei. Es sind sehr individuelle Anpassungen erforderlich, deshalb wird hier nur die Standardkonfigurationsdatei als Beispiel dargestellt!:
/** * Host group examples. */ object HostGroup "linux-servers" { display_name = "Linux Servers" assign where host.vars.os == "Linux" } object HostGroup "windows-servers" { display_name = "Windows Servers" assign where host.vars.os == "Windows" } /** * Service group examples. */ object ServiceGroup "ping" { display_name = "Ping Checks" assign where match("ping*", service.name) }
HINWEIS - Es empfiehlt sich die Gruppenkonfiguration für Hosts und Services jeweils in separaten Konfigurationsdateien auszulagern!
Nachfolgende Parameter können für Icinga Groups assign
verwendet werden:
Parameter | Variable |
---|---|
HostGroup | host |
ServiceGroup | host , service |
UserGroup | user |
hosts.conf
HINWEIS - Nur der Einsatz in einem Unterverzeichnis z.B. /etc/icinga2/conf.d/<DOMAIN.TLD>/<ZONE>/downtimes.conf
ist sinnvoll!
Die Konfigurationsdatei
/etc/icinga2/conf.d/hosts.conf
beinhaltet „Host“ für Icinga welche eine der beiden wichtigsten Konfigurationsdateien darstellt.
Nachfolgend der Inhalt der Konfigurationsdatei. Es werden nachfolgende Anpassungen durchgeführt!:
HINWEIS - Diese Konfigurationsdatei sollte sehr individuell angepasst werden!
Nachfolgend der Inhalt der Konfigurationsdatei. Es sind sehr individuelle Anpassungen erforderlich, deshalb wird hier nur die Standardkonfigurationsdatei als Beispiel dargestellt!:
/* * Host definitions with object attributes * used for apply rules for Service, Notification, * Dependency and ScheduledDowntime objects. * * Tip: Use `icinga2 object list --type Host` to * list all host objects after running * configuration validation (`icinga2 daemon -C`). */ /* * This is an example host based on your * local host's FQDN. Specify the NodeName * constant in `constants.conf` or use your * own description, e.g. "db-host-1". */ object Host NodeName { /* Import the default host template defined in `templates.conf`. */ import "generic-host" /* Specify the address attributes for checks e.g. `ssh` or `http`. */ address = "10.7.0.110" address6 = "::1" /* Set custom attribute `os` for hostgroup assignment in `groups.conf`. */ vars.os = "Linux" /* Define http vhost attributes for service apply rules in `services.conf`. */ /*vars.http_vhosts["http"] = { http_uri = "/" }*/ /* Uncomment if you've sucessfully installed Icinga Web 2. */ //vars.http_vhosts["Icinga Web 2"] = { // http_uri = "/icingaweb2" //} /* Define disks and attributes for service apply rules in `services.conf`. */ /*vars.disks["disk"] = { /* No parameters. */ /*}*/ /*vars.disks["disk /"] = { disk_partitions = "/" }*/ /* Define notification mail attributes for notification apply rules in `notifications.conf`. */ vars.notification["mail"] = { /* The UserGroup `icingaadmins` is defined in `users.conf`. */ /* Tachtler */ /* default: groups = [ "icingaadmins" ] */ groups = [ "tachtler.net-icingaadmins" ] } }
notifications.conf
HINWEIS - Der Einsatz in einem Unterverzeichnis z.B. /etc/icinga2/conf.d/<DOMAIN.TLD>/<ZONE>/downtimes.conf
ist sinnvoll!
Die Konfigurationsdatei
/etc/icinga2/conf.d/notifications.conf
versendet Notifications (Benachrichtigungen) z.B. per e-Mail, im definierten Falle an einen Benutzer oder eine BenutzerGruppe.
In der Konfigurationsdatei sind standardmäßig zwei Benachrichtigungs-Regeln definiert
mail-icingaadmin
fürHost
-Benachrichtigungenmail-icingaadmin
fürService
-Benachrichtigungen
Nachfolgend der Inhalt der Konfigurationsdatei. Es sind keine Anpassungen erforderlich!:
/** * The example notification apply rules. * * Only applied if host/service objects have * the custom attribute `notification` defined * and containing `mail` as key. * * Check `hosts.conf` for an example. */ apply Notification "mail-icingaadmin" to Host { import "mail-host-notification" user_groups = host.vars.notification.mail.groups users = host.vars.notification.mail.users assign where host.vars.notification.mail } apply Notification "mail-icingaadmin" to Service { import "mail-service-notification" user_groups = host.vars.notification.mail.groups users = host.vars.notification.mail.users assign where host.vars.notification.mail }
Diese Konfiguration und die sich in der Konfigurationsdatei /etc/icinga2/donf.d/templates.conf
Template (Vorlage) kann dann durch z.B. setzen der Variable: vars.notification[„mail“]
beim Objekt aktiviert werden:
Beispiel:
object Notification "localhost-ping-notification" { host_name = "localhost" service_name = "ping4" command = "mail-notification" users = [ "user1", "user2" ] types = [ Problem, Recovery ] }
Beispiel:
(Nur relevanter Ausschnitt:)
object Host NodeName { ... ... ... vars.notification["mail"] = { /* The UserGroup `icingaadmins` is defined in `users.conf`. */ /* Tachtler */ /* default: groups = [ "icingaadmins" ] */ groups = [ "icingaadmins_tachtler.net" ] } ... ... ... }
Nachfolgende Parameter können für Icinga Notification
hinzugefügt werden:
Parameter | Beschreibung |
---|---|
host_name | Erforderlich. Der Name des Host, auf den die Notification angewandt werden soll. |
service_name | Optional. Der Kurzname des Service, auf den die Notification angewandt werden soll. Falls hier eine Definition erfolgt, wird dieser Service wie ein Objekt vom Typ Host behandelt. |
vars | Optional. Benutzerdefinierte Variablen. |
users | Optional. Liste mit Benutzernamen, welche die Notification erhalten sollen. |
user_groups | Optional. Liste mit Benutzergruppen, welche die Notification erhalten sollen. |
times | Optional. Angabe einer „Start“- und „Ende“-Zeit Definition für einen Zustellungszeitraum der Notification . |
command | Erforderlich. Der Name des Kommandos, welches zur Ausführung der Notification angewandt werden soll. |
interval | Optional. Zeitintervall in Sekunden, in dem die Notification wiederholt gesendet werden soll. Standard sind hier 30 Minuten. Ein Angabe von 0 deaktiviert das erneute senden. |
period | Optional. Angabe eines definierten Zeitfensters in dem die Notification überhaupt versendet werden soll. |
zone | Optional. Angabe einer „Zone“, zu dieser dieses Objekt gehören soll. |
types | Optional. Angabe eines Typ-Filters, bei dem die Notification überhaupt versendet werden soll. Standardmäßig ist kein Filter gesetzt. |
states | Optional. Angabe eines Status-Filters, bei dem die Notification überhaupt versendet werden soll. Standardmäßig ist kein Filter gesetzt. |
satellite.conf
HINWEIS - Wenn benötigt ist der Einsatz in einem Unterverzeichnis z.B. /etc/icinga2/conf.d/<DOMAIN.TLD>/<ZONE>/downtimes.conf
sinnvoll!
Die Konfigurationsdatei
/etc/icinga2/conf.d/satellite.conf
beinhaltet Standard Templetes (Vorlagen) und Dependencies (Abhängigkeiten) für die Überwachung von Remote Icinga-Clients, welche die Verwaltung der Konfiguration der Remote-Clients auf dem Master nutzen und die Konfiguration für den Remote-Client an dessen übermitteln.
WICHTIG - Dieses Feature (Möglichkeit) soll hier nicht zum Einsatz kommen!
Nachfolgend der Inhalt der Konfigurationsdatei. Es werden nachfolgende Anpassungen durchgeführt!:
HINWEIS - Diese Konfigurationsdatei wird nicht benötigt und wird daher geleert, wie nachfolgend dargestellt!
/*
* Host and Service templates for the Agent Setup.
*/
services.conf
HINWEIS - Nur der Einsatz in einem Unterverzeichnis z.B. /etc/icinga2/conf.d/<DOMAIN.TLD>/<ZONE>/downtimes.conf
ist sinnvoll!
Die Konfigurationsdatei
/etc/icinga2/conf.d/services.conf
beinhaltet „Services“ für Icinga welche eine der beiden wichtigsten Konfigurationsdateien darstellt.
Nachfolgend der Inhalt der Konfigurationsdatei. Es werden nachfolgende Anpassungen durchgeführt!:
HINWEIS - Diese Konfigurationsdatei sollte sehr individuell angepasst werden!
Nachfolgend der Inhalt der Konfigurationsdatei. Es sind sehr individuelle Anpassungen erforderlich, deshalb wird hier nur die Standardkonfigurationsdatei als Beispiel dargestellt!:
/* * Service apply rules. * * The CheckCommand objects `ping4`, `ping6`, etc * are provided by the plugin check command templates. * Check the documentation for details. * * Tip: Use `icinga2 object list --type Service` to * list all service objects after running * configuration validation (`icinga2 daemon -C`). */ /* * This is an example host based on your * local host's FQDN. Specify the NodeName * constant in `constants.conf` or use your * own description, e.g. "db-host-1". */ /* * These are generic `ping4` and `ping6` * checks applied to all hosts having the * `address` resp. `address6` attribute * defined. */ apply Service "ping4" { import "generic-service" check_command = "ping4" assign where host.address } /*apply Service "ping6" { import "generic-service" check_command = "ping6" assign where host.address6 }*/ /* * Apply the `ssh` service to all hosts * with the `address` attribute defined and * the custom attribute `os` set to `Linux`. */ apply Service "ssh" { import "generic-service" check_command = "ssh" assign where (host.address || host.address6) && host.vars.os == "Linux" } /*apply Service for (http_vhost => config in host.vars.http_vhosts) { import "generic-service" check_command = "http" vars += config } apply Service for (disk => config in host.vars.disks) { import "generic-service" check_command = "disk" vars += config }*/ apply Service "icinga" { import "generic-service" check_command = "icinga" assign where host.name == NodeName } apply Service "load" { import "generic-service" check_command = "load" /* Used by the ScheduledDowntime apply rule in `downtimes.conf`. */ vars.backup_downtime = "02:00-03:00" assign where host.name == NodeName } apply Service "procs" { import "generic-service" check_command = "procs" assign where host.name == NodeName } apply Service "swap" { import "generic-service" check_command = "swap" assign where host.name == NodeName } apply Service "users" { import "generic-service" check_command = "users" assign where host.name == NodeName }
Bei der Überprüfung von Services auf einem Client, welche durch den Icinga-Client lokal durchgeführt werden sollen, ist die Angabe eines command_endpoint erforderlich.
Nachfolgendes Beispiel, soll dies für die Überprüfung der Laufwerke mittels check_disk
darstellen:
(Nur relevanter Ausschnitt):
apply Service for (disk => config in host.vars.disks) { import "tachtler.net-generic-service" check_command = "disk" command_endpoint = host.name vars += config }
Erklärung:
command_endpoint = host.name
Die Definition des command_endpoint
wird in diesem Beispiel mit der Variable host.name
gefüllt, welche hier gleichzeitig der NodeName ist!
templates.conf
HINWEIS - Der Einsatz in einem Unterverzeichnis z.B. /etc/icinga2/conf.d/<DOMAIN.TLD>/<ZONE>/downtimes.conf
ist sinnvoll!
Die Konfigurationsdatei
/etc/icinga2/conf.d/templates.conf
konfiguriert die von Icinga zu berücksichtigenden „Templates“ (Vorlagen), welche ein Objekt wie z.B. ein service haben kann.
Die Definition, ob „Templates“ (Vorlagen) von Icinga zu berücksichtigen sind, erfolgt beim Objekt, z.B. in einer service-Definition.
Nachfolgend der Inhalt der Konfigurationsdatei. Es sind individuelle Anpassungen möglich, aber nicht erforderlich!:
/* * Generic template examples. */ /** * Provides default settings for hosts. By convention * all hosts should import this template. * * The CheckCommand object `hostalive` is provided by * the plugin check command templates. * Check the documentation for details. */ template Host "generic-host" { max_check_attempts = 3 check_interval = 1m retry_interval = 30s check_command = "hostalive" } /** * Provides default settings for services. By convention * all services should import this template. */ template Service "generic-service" { max_check_attempts = 5 check_interval = 1m retry_interval = 30s } /** * Provides default settings for users. By convention * all users should inherit from this template. */ template User "generic-user" { } /** * Provides default settings for host notifications. * By convention all host notifications should import * this template. */ template Notification "mail-host-notification" { command = "mail-host-notification" states = [ Up, Down ] types = [ Problem, Acknowledgement, Recovery, Custom, FlappingStart, FlappingEnd, DowntimeStart, DowntimeEnd, DowntimeRemoved ] period = "24x7" } /** * Provides default settings for service notifications. * By convention all service notifications should import * this template. */ template Notification "mail-service-notification" { command = "mail-service-notification" states = [ OK, Warning, Critical, Unknown ] types = [ Problem, Acknowledgement, Recovery, Custom, FlappingStart, FlappingEnd, DowntimeStart, DowntimeEnd, DowntimeRemoved ] period = "24x7" }
timeperiods.conf
HINWEIS - Der Einsatz in einem Unterverzeichnis z.B. /etc/icinga2/conf.d/<DOMAIN.TLD>/<ZONE>/downtimes.conf
ist sinnvoll!
Die Konfigurationsdatei
/etc/icinga2/conf.d/timeperiods.conf
konfiguriert global die von Icinga zu berücksichtigenden „Timeperiods“ (Benachrichtigungszeiten), welche ein Objekt wie z.B. ein service haben kann.
Die Definition, ob „Timeperiods“ (Benachrichtigungszeiten) von Icinga zu berücksichtigen sind, erfolgt beim Objekt, z.B. in einer service-Definition.
Nachfolgend der Inhalt der Konfigurationsdatei. Es sind keine Anpassungen erforderlich!:
/** * Timeperiods for Icinga 2 requiring * 'legacy-timeperiod' template from the Icinga * Template Library (ITL). * Check the documentation for details. */ object TimePeriod "24x7" { import "legacy-timeperiod" display_name = "Icinga 2 24x7 TimePeriod" ranges = { "monday" = "00:00-24:00" "tuesday" = "00:00-24:00" "wednesday" = "00:00-24:00" "thursday" = "00:00-24:00" "friday" = "00:00-24:00" "saturday" = "00:00-24:00" "sunday" = "00:00-24:00" } } object TimePeriod "9to5" { import "legacy-timeperiod" display_name = "Icinga 2 9to5 TimePeriod" ranges = { "monday" = "09:00-17:00" "tuesday" = "09:00-17:00" "wednesday" = "09:00-17:00" "thursday" = "09:00-17:00" "friday" = "09:00-17:00" } } object TimePeriod "never" { import "legacy-timeperiod" display_name = "Icinga 2 never TimePeriod" ranges = { } }
users.conf
HINWEIS - Der Einsatz in einem Unterverzeichnis z.B. /etc/icinga2/conf.d/<DOMAIN.TLD>/<ZONE>/downtimes.conf
ist sinnvoll!
Die Konfigurationsdatei
/etc/icinga2/conf.d/users.conf
definiert standardmäßig den Benutzer icingaadmin
und die Benutzergruppe icingaadmins
.
Die Benutzergruppe wird standardmäßig später in der Konfigurationsdatei: /etc/icinga2/conf.d/hosts.conf
verwendet, welche selbst später dann wiederum auf die Konfigurationsdatei: /etc/icinga2/conf.d/notifications.conf
verweist, die für den Versandt von Benachrichtigungen z.B. per e-Mail herangezogen wird.
HINWEIS - Beim Monitoring von z.B. mehreren Domains, kann es sinnvoll sein, hier den Benutzername und die Benutzergruppe zu individualisieren!
Nachfolgend der Inhalt der Konfigurationsdatei. Es werden nachfolgende Anpassungen durchgeführt!:
WICHTIG - Bei Anpassungen, müssen die gleichen Anpassungen ggf. auch in der Konfigurationsdatei(en) zu Hosts z.B.
/etc/icinga2/conf.d/hosts.conf
durchgeführt werden!
/** * The user 'icingaadmin' and the * group 'icingaadmins'. */ /* Tachtler */ /* default: object User "icingaadmin" { */ object User "icingaadmin_tachtler.net" { import "generic-user" /* Tachtler */ /* default: display_name = "Icinga 2 Admin" */ display_name = "Icinga 2 Administrator tachtler.net" /* Tachtler */ /* default: groups = [ "icingaadmins" ] */ groups = [ "icingaadmins_tachtler.net" ] /* Tachtler */ /* default: email = "icinga@localhost" */ email = "icingaadmin@tachtler.net" } /* Tachtler */ /* default: object UserGroup "icingaadmins" { */ object UserGroup "icingaadmins_tachtler.net" { /* Tachtler */ /* default: display_name = "Icinga 2 Admin Group" */ display_name = "Icinga 2 Adminstratoren Gruppe tachtler.net" }
HINWEIS - Alle Anpassungen und alle Standardwerte, falls vorhanden, sind mit einem Vorangestellten Kommentar
/* Tachtler */ /* default: */
gekennzeichnet.
Konfiguration: icinga2-Clients
Nachdem die Konfiguration der Icinga-Clients durchgeführt wurden, wie unter nachfolgenden internen Links beschrieben:
ist nachfolgende Konfiguration des Icinga-Master erforderlich, damit diese zum Icinga-Client eine Verbindung herstellen kann und alle Abfragen vom Icinga-Master zum Icinga-Client weiterleitet und dieser diese dann beantwortet, ohne jedoch eine eigene Konfiguration selbst zu halten.
WICHTIG - Die Konfiguration der Checks für den Icinga-Client soll auf dem Icinga-Master erfolgen!
/etc/icinga2/zones.conf
Die Konfigurationsdatei
/etc/icinga2/zones.conf
ist nun nach dem „Monitoring Remote Setup“ konfiguriert um beim Einsatz des Icinga-Clients verschiedene notwendige Definitionen zu beinhalten („Endpoint“ und „Zone“ Definitionen).
Die Konfigurationsdatei hat nun nachfolgenden Inhalt und muss zwingend angepasst werden!
(Komplette Konfigurationsdatei:)
/* * Generated by Icinga 2 node setup commands * on 2015-12-01 15:19:13 +0100 */ object Endpoint "server11.idmz.tachtler.net" { host = "192.168.0.110"; port = "5665"; } object Zone "master" { endpoints = [ "server11.idmz.tachtler.net" ]; } /* * Tachtler * server10.idmz.tachtler.net */ object Endpoint "server10.idmz.tachtler.net" { host = "192.168.0.10"; port = "5665"; } object Zone "server10.idmz.tachtler.net" { endpoints = [ "server10.idmz.tachtler.net" ]; parent = "master"; }
Nützliche Befehle
Nachfolgend einige nützliche Befehle:
Befehl | Erklärung |
---|---|
icinga daemon -C | Überprüfen der Konfiguration auf Fehler |
icinga2 object list --type Host | Listet alle Host und alle Parameter dazu auf |
icinga2 object list --type Service | Listet alle Services und alle Parameter dazu auf |
icinga2 object list --name "Namen..." | Listet alle Objekte mit dem angegebenen Namen auf |