Serverüberwachung mit Icinga 2 und Icingaweb 2 auf CentOS 7
Icinga 2 ist eine skalierbare Open Source Überwachungssoftware, die die Installation von Icinga 2 zusammen mit Icingaweb auf einem CentOS 7 Server beschreibt.
1. Anforderungen
Um ein solches System zu installieren, benötigen Sie folgendes:
- Ein Centos 7 minimales Serversystem.
- Eine schnelle Internetverbindung.
2. Vorbemerkungen
- In diesem Tutorial verwende ich den Hostnamen icinga2.domain.tld mit der IP-Adresse 192.168.250.250.100/24 und dem Gateway 192.168.250.254. Diese Einstellungen können für Sie unterschiedlich sein, so dass Sie sie gegebenenfalls ersetzen müssen.
- Die hier gezeigten Ausgaben sind nur ein Beispiel und können je nach Basissystem und bereits installierten Paketen von Ihrem System abweichen.
- Der Datenbankserver ist maria db und wird auf dem gleichen Host installiert.
- Ein Benutzeradministrator existiert und befindet sich in der Sudoers-Liste.
- Wir werden SELinux für dieses Tutorial deaktivieren.
3. Vorbereitung
Melden Sie sich als Administrator an
login as: administrator administrator@192.168.250.100's password: [administrator@icinga2 ~]$
Überprüfen der Netzwerkkonnektivität
Wir werden testen, ob unsere Internetverbindung hergestellt ist und die Namensauflösung funktioniert:
ping www.google.de -c3
Die Ausgabe erfolgt wie folgt:
[administrator@icinga2 ~]$ ping www.google.de -c3 PING www.google.de (172.217.20.67) 56(84) bytes of data. 64 bytes from fra02s27-in-f3.1e100.net (172.217.20.67): icmp_seq=1 ttl=57 time=19.2 ms 64 bytes from fra02s27-in-f3.1e100.net (172.217.20.67): icmp_seq=2 ttl=57 time=19.3 ms 64 bytes from fra02s27-in-f3.1e100.net (172.217.20.67): icmp_seq=3 ttl=57 time=19.6 ms --- www.google.de ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2001ms rtt min/avg/max/mdev = 19.276/19.430/19.649/0.195 ms [administrator@icinga2 ~]$
Zur Wurzel wechseln
Jetzt werden wir uns selbst zur Wurzel schlagen. Dazu geben Sie ein:
sudo su
Die Ausgabe erfolgt wie folgt:
[administrator@icinga2 ~]$ sudo su We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for administrator: [root@icinga2 administrator]#
Vorbereitende Software installieren
Wir werden nun einige vorläufige Software installieren:
- deltarpm senkt den zu ladenden Betrag, indem es prüft, ob es nur eine differentielle Datei gibt, anstatt das gesamte Paket.
- nano ist ein Text-Editor.
- wget wird benötigt, um Dateien von URLs herunterzuladen.
- net-tools wird für bestimmte Prüfungen von Netzwerkprozessen benötigt.
- gcc ist der GNU Compiler.
yum -y install deltarpm
Die Ausgabe erfolgt wie folgt:
Loaded plugins: fastestmirror base | 3.6 kB 00:00:00 extras | 3.4 kB 00:00:00 updates | 3.4 kB 00:00:00 (1/4): extras/7/x86_64/primary_db ... ... Total download size: 82 k Installed size: 209 k Downloading packages: warning: /var/cache/yum/x86_64/7/base/packages/deltarpm-3.6-3.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY Public key for deltarpm-3.6-3.el7.x86_64.rpm is not installed deltarpm-3.6-3.el7.x86_64.rpm | 82 kB 00:00:00 Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 Importing GPG key 0xF4A80EB5: Userid : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>" Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5 Package : centos-release-7-2.1511.el7.centos.2.10.x86_64 (@anaconda) From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : deltarpm-3.6-3.el7.x86_64 1/1 Verifying : deltarpm-3.6-3.el7.x86_64 1/1 Installed: deltarpm.x86_64 0:3.6-3.el7 Complete!
yum -y install nano wget net-tools gcc
Die Ausgabe erfolgt wie folgt:
Loaded plugins: fastestmirror base | 3.6 kB 00:00:00 extras | 3.4 kB 00:00:00 updates | 3.4 kB 00:00:00 (1/4): extras/7/x86_64/primary_db ... ... Installed: gcc.x86_64 0:4.8.5-4.el7 nano.x86_64 0:2.3.1-10.el7 net-tools.x86_64 0:2.0-0.17.20131004git.el7 wget.x86_64 0:1.14-10.el7_0.1 Dependency Installed: cpp.x86_64 0:4.8.5-4.el7 glibc-devel.x86_64 0:2.17-106.el7_2.4 glibc-headers.x86_64 0:2.17-106.el7_2.4 kernel-headers.x86_64 0:3.10.0-327.13.1.el7 libmpc.x86_64 0:1.0.1-3.el7 mpfr.x86_64 0:3.1.1-4.el7 Dependency Updated: glibc.x86_64 0:2.17-106.el7_2.4 glibc-common.x86_64 0:2.17-106.el7_2.4 Complete!
SELinux deaktivieren
editiere die Datei /etc/selinux/config
nano /etc/selinux/config
Finden
SELINUX=enforcing
ändern Sie es in
SELINUX=disabled
Speichern der Datei
System aktualisieren und neu starten
Nun werden wir das System aktualisieren.
yum -y update && yum -y upgrade
Dies kann einige Zeit in Anspruch nehmen. Nach diesem Neustart.
reboot
4. icinga2 und zusätzliche Software installieren
Zusätzliche Repositories installieren
Nachdem das System neu gestartet wurde, melden Sie sich als Administrator an und machen Sie sich wieder root.
Verzeichnis wechseln zu /tmp
cd /tmp
Epel-Repository installieren
yum install -y epel-release
icinga-Repository installieren
rpm --import http://packages.icinga.org/icinga.key wget http://packages.icinga.org/epel/ICINGA-release.repo -O /etc/yum.repos.d/ICINGA-release.repo
Yum-Cache neu aufbauen (kann einige Zeit dauern)
yum makecache
Installieren Sie icinga2, icinga2 mysql connector und nagios plugins.
yum install -y nagios-plugins-all icinga2 icinga2-ido-mysql icinga-idoutils-libdbi-mysql
Installation von Apache, php und Vorbereitung der php.ini
yum install -y httpd
yum install -y php-cli php-pear php-xmlrpc php-xsl php-pdo php-soap php-gd php-ldap
php.ini bearbeiten
Finden
; Defines the default timezone used by the date functions ; http://php.net/date.timezone ;date.timezone =
ändern Sie es in
; Defines the default timezone used by the date functions ; http://php.net/date.timezone date.timezone = "Europe/Berlin"
Speichern der Datei
Apache beim Start aktivieren
systemctl enable httpd
[root@icinga2 tmp]# systemctl enable httpd Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
systemctl start httpd
Überprüfen Sie, ob der Apache läuft.
netstat -nlp | grep 80
[root@icinga2 tmp]# netstat -nlp | grep 80 tcp6 0 0 :::80 :::* LISTEN 10360/httpd
Installation und Konfiguration von mariadb
yum install -y mariadb-server
systemctl start mariadb
systemctl enable mariadb
Output:
[root@icinga2 tmp]# systemctl enable mariadb Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
Überprüfen Sie, ob mariadb läuft.
netstat -nlp | grep 3306
Output:
[root@icinga2 tmp]# netstat -nlp | grep 3306 tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 11623/mysqld
Passwort für Benutzer „root“ festlegen
mysql -u root
Output:
[root@icinga2 tmp]# mysql -u root Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 5.5.47-MariaDB MariaDB Server Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
[MariaDB [(none)]> use mysql
Output:
[MariaDB [(none)]> use mysql; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed MariaDB [mysql]>
[MariaDB [(mysql)]> update user set password=PASSWORD("root_password") where User='root';
Output:
update user set password=PASSWORD("root_password") where User='root'; Query OK, 4 rows affected (0.00 sec) Rows matched: 4 Changed: 4 Warnings: 0
[MariaDB [(mysql)]> flush privileges;
Output:
MariaDB [mysql]> flush privileges; Query OK, 0 rows affected (0.00 sec0
[MariaDB [(mysql)]> exit;
Output:
MariaDB [mysql]> exit; Bye
MariaDB neu starten
systemctl restart mariadb
Erstellen und Füllen der Datenbank für icinga22
Melden Sie sich bei MySQL mit dem Passwort für root an.
mysql -u root -p
Output:
[root@icinga2 tmp]# [root@icinga2 tmp]# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 7 Server version: 5.5.47-MariaDB MariaDB Server Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
[MariaDB [(none)]>CREATE DATABASE icinga2;
Output:
MariaDB [(none)]> CREATE DATABASE icinga2; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]>
[MariaDB [(none)]>GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga2.* TO 'icinga2'@'localhost' IDENTIFIED BY 'icinga2_password';
Output:
MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga2.* TO 'icinga2'@'localhost' IDENTIFIED BY 'icinga2_password'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]>
[MariaDB [(none)]>flush privileges;;
Output:
MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]>
[MariaDB [(none)]> exit;
Output:
MariaDB [none]> exit; Bye
Datenbank ausfüllen
mysql -u root -p icinga2 < /usr/share/icinga2-ido-mysql/schema/mysql.sql
Ändere ido-mysql.conf
Damit icinga2 sich mit unserer mariadb Datenbank verbinden kann, müssen wir /etc/icinga2/ido-mysql.conf anpassen.
nano /etc/icinga2/features-available/ido-mysql.conf
Finden
/** * The db_ido_mysql library implements IDO functionality * for MySQL. */ library "db_ido_mysql" object IdoMysqlConnection "ido-mysql" { //user = "icinga" //password = "icinga" //host = "localhost" //database = "icinga" }
ändern Sie es in
/** * The db_ido_mysql library implements IDO functionality * for MySQL. */ library "db_ido_mysql" object IdoMysqlConnection "ido-mysql" { user = "icinga2" password = "icinga2_password" host = "localhost" database = "icinga2" }
icinga2 beim Start aktivieren und starten
icinga2 beim Start aktivieren
systemctl enable icinga2
Output:
[root@icinga2 tmp]# systemctl enable icinga2 Created symlink from /etc/systemd/system/multi-user.target.wants/icinga2.service to /usr/lib/systemd/system/icinga2.service.
Starten Sie icinga2
systemctl start icinga2
Um zu überprüfen, ob alles funktioniert, werden wir tail -f /var/log/icinga2/icinga2.log verwenden. Sie können die Ausgabe stoppen, indem Sie STRG-C drücken.
tail -f /var/log/icinga2/icinga2.log
Die Ausgabe sollte etwa so aussehen
[root@icinga2 tmp]# tail -f /var/log/icinga2/icinga2.log [2016-05-10 23:21:50 +0200] information/DbConnection: Resuming IDO connection: ido-mysql [2016-05-10 23:21:50 +0200] information/ConfigItem: Activated all objects. [2016-05-10 23:21:50 +0200] information/ConfigCompiler: Compiling config file: /var/lib/icinga2/modified-attributes.conf [2016-05-10 23:21:50 +0200] information/IdoMysqlConnection: MySQL IDO instance id: 1 (schema version: '1.14.0') [2016-05-10 23:21:50 +0200] information/IdoMysqlConnection: Finished reconnecting to MySQL IDO database in 0.201981 second(s).
Lassen Sie icinga2 beim Booten starten:
systemctl enable icinga2
Output:
[root@icinga2 tmp]# systemctl enable icinga2 Created symlink from /etc/systemd/system/multi-user.target.wants/icinga2.service to /usr/lib/systemd/system/icinga2.service.
Aktivieren Sie das icinga2-Befehlsmodul:
icinga2 feature enable command
Output:
[root@icinga2 tmp]# icinga2 feature enable command Enabling feature command. Make sure to restart Icinga 2 for these changes to take effect.
icinga2 neu starten
systemctl restart icinga2
5. icingaweb2 installieren
Bevor Sie icingaweb2 installieren, stellen Sie sicher, dass Sie den Port 80 Ihrer Firewall öffnen.
Installieren Sie icingaweb2:
yum -y install icingaweb2
Vereisungsacli installieren. Wir werden es später benötigen, um ein Setup-Token für den webbasierten Teil der Installation zu erstellen.
yum -y install icingacli
Wir werden nun prüfen, ob die Gruppe icingaweb2 existiert und ob der Apache ein Mitglied dieser Gruppe ist:
cat /etc/group | grep icingaweb2
Output:
[root@icinga2 tmp]# cat /etc/group | grep icingaweb2 icingaweb2:x:990:apache
icinga2 wird eine Warnung für den http-Dienst melden, da sich keine index.hml-Datei im Webroot befindet.
Um dies zu verhindern, werden wir eine leere erstellen:
touch /var/www/html/index.html
chown apache /var/www/html/index.html
Wir werden nun das Setup-Token für den webbasierten Teil der Installation erstellen.
icingacli setup config directory --group icingaweb2
Output:
[root@icinga2 tmp]# icingacli setup config directory --group icingaweb2 Successfully created configuration directory /etc/icingaweb2
icingacli setup token create
Output:
[root@icinga2 tmp]# icingacli setup token create The newly generated setup token is: 1826XXXXXXXXXXXX
Notieren oder kopieren Sie den Setup-Token.
Starten Sie den Apache neu.
systemctl restart httpd
Webbasierter Teil der Installation
Öffnen Sie einen Browser und gehen Sie zu http://192.168.250.100/icingaweb2/setup
Fügen Sie den erzeugten Token ein und drücken Sie die Taste
Continue (Weiter)
Drücken
Weiter (Continue)
Überprüfen Sie, ob alle Teile grün sind und drücken Sie die Taste
Continue (Weiter)
Halten Sie die gewählte Art der Authentifizierung (SQL-Datenbank) gedrückt.
Continue (Weiter)
Fügen Sie die folgenden Werte ein:
Resourcename = icingaweb2 Keep Databasetype (Datenbanktyp) to MySQL Keep Host as localhost Change Databasename (Datenbanknamen) to icingaweb2 Change Username to icingaweb2 Enter a password
Drücken
Validate Configuration
Du solltest sehen
Configuration sucessfully validated
oben auf der Seite.
Drücken
Continue (Weiter)
Um die Datenbank und den angegebenen Benutzer zu erstellen, geben Sie hier die Anmeldedaten für root ein. Dann drücken Sie
Continue (Weiter)
Behalten Sie icingaweb2 als BackendName und drücken Sie die Taste
Continue (Weiter)
Legen Sie den Benutzeradministrator an. Geben Sie Benutzername und Passwort ein (zweimal). Dann drücken Sie
Continue (Weiter)
Lassen Sie alles wie vorgeschlagen und drücken Sie die Taste
Continue (Weiter)
Diese Seite enthält eine Zusammenfassung Ihrer Eingaben.
Überprüfen Sie alles und drücken Sie dann
Continue (Weiter)
Drücken
Weitermachen (Weiter)
Lassen Sie alles wie vorgeschlagen und drücken Sie die Taste
Continue (Weiter)
Lassen Sie alles wie vorgeschlagen und drücken Sie die Taste
Continue (Weiter)
Fügen Sie die folgenden Werte ein:
Resourcename = icniga2_ldo Keep Databasetype (Datenbanktyp) to MySQL Keep Host as localhost Change Databasename (Datenbanknamen) to icinga2 Change Username to icnga2 Enter a mysql password for user icinga2 ("icinga2_password") Hit Validate Configuration
Wenn die Validierung in Ordnung ist, drücken Sie auf
Continue (Weiter)
Lassen Sie alles wie vorgeschlagen und drücken Sie die Taste
Continue (Weiter)
Lassen Sie alles wie vorgeschlagen und drücken Sie die Taste
Weitermachen (Weiter).
Diese Seite enthält eine Zusammenfassung Ihrer Eingaben.
Überprüfen Sie alles und drücken Sie dann
Continue (Weiter)
Drücken
Login to icinga Web 2
Melden Sie sich als Administrator mit dem definierten Passwort an.
Erledigt.