Translation(s): English - Français



Icinga2 - Installation et configuration

Présentation de cette documentation

Cette présentation à pour but de vous accompagner pour l'installation et la configuration de base des éléments suivants :

Cette documentation a été écrite et testée sur les versions suivantes de Debian·:

Installation

Installation des paquets

Pour commencer, nous avons besoin de rechercher la liste des paquets puis de procéder à l'installation des paquets requis.

Rechargement de la liste des paquets·:

apt update

Installation des paquets ( pour Debian 10 ) :

DEBIAN_FRONTEND=noninteractive apt-get -y install \
icinga2                \
icingacli              \
icingaweb2             \
icinga2-ido-mysql      \
mariadb-client         \
mariadb-server         \
monitoring-plugins     \
apache2                \
libapache2-mod-rpaf    \
php-fpm                \
curl                   \
vim-icinga2            \
vim-addon-manager      \
nagios-nrpe-plugin     \
unscd                  \
nagios-plugins-contrib \
unattended-upgrades

Notes sur les paquets :

Activation de PHP-FPM

PHP-FPM est un gestionnaire de processus FastCGI permettant la communication entre le serveur Apache2 et PHP. Il s'agit d'une alternative à l'implémentation FastCGI de PHP permettant de traiter plus de charge.

Pour Debian 10 :

a2enmod proxy_fcgi setenvif
a2enconf php7.3-fpm
apache2ctl configtest
systemctl restart php7.3-fpm.service
systemctl restart apache2.service

Colorisation syntaxique Icinga pour Vim

Si vous utilisez vim pour iditer vos fichiers de configuration, vous pouvez facilement activer la colorisation syntaxique comme suit :

vim-addon-manager -w install icinga2

Création de l'hôte virtuel Apache2 pour Icinga

ATTENTION ! Cet hôte virtuel n'est pas sécurisé (il étouche en HTTP et non en HTTPS). Si une connexion en entrée d'Internet est désirée, nous vous recommandons de paramétrer cette hôte virtuel en HTTPS. Par exemple, vous pouvez regarder du coté de LetsEncrypt.

Avant, vous avez besoin de définir les variables suivantes. Vous devez changer les valeurs :

FQDN="icinga.example.com"
EMAIL="moi@example.com"

Maintenant vous pouvez copier/coller les lignes suivantes pour créer le fichier /etc/apache2/sites-available/icinga.conf

cat << EOF > /etc/apache2/sites-available/icinga.conf
<VirtualHost *:80>

    ServerName $FQDN
    ServerAdmin $EMAIL

    DocumentRoot "/usr/share/icingaweb2/public"

    <Directory "/usr/share/icingaweb2/public">
        Options SymLinksIfOwnerMatch
        AllowOverride None

        <IfModule mod_authz_core.c>
            # Apache 2.4
            <RequireAll>
                Require all granted
            </RequireAll>
        </IfModule>

        SetEnv ICINGAWEB_CONFIGDIR "/etc/icingaweb2"

        EnableSendfile Off

        <IfModule mod_rewrite.c>
            RewriteEngine on
            # RewriteBase /icingaweb2/
            RewriteBase /
            RewriteCond %{REQUEST_FILENAME} -s [OR]
            RewriteCond %{REQUEST_FILENAME} -l [OR]
            RewriteCond %{REQUEST_FILENAME} -d
            RewriteRule ^.*$ - [NC,L]
            RewriteRule ^.*$ index.php [NC,L]
        </IfModule>

        <IfModule !mod_rewrite.c>
            DirectoryIndex error_norewrite.html
            ErrorDocument 404 /error_norewrite.html
        </IfModule>
    </Directory>

    ErrorLog  /var/log/apache2/icinga-error.log
    CustomLog /var/log/apache2/icinga-access.log combined

</VirtualHost>
EOF

Maintenant vous pouvez activer l'hôte virtuel Icinga dans Apache2, tester la configuration et recharger Apache2

a2ensite icinga.conf
apache2ctl configtest
systemctl reload apache2

Activation des modules et fonctionnalitées d'Icinga

icinga2 feature enable command ido-mysql
icingacli module enable monitoring

Sécuriser le serveur MariaDB

Pour sécuriser l'installation de MariaDB, vous avez le choix entre l'exécution du script embarqué et le faire vous même à la main.

Méthode 1 - script embarqué :

mysql_secure_installation

Méthode 2 - à la main :

# Suppression des utilisateur annonymes
mysql -e "DELETE FROM mysql.user WHERE User='';"
# S'arrurer que l'utilisateur root ne puisse pas se connecter à distance
mysql -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');"
# Suppression de la base de donnée de test
mysql -e "DROP DATABASE IF EXISTS test;"
mysql -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\_%';"
# Appliquer les changements
mysql -e "FLUSH PRIVILEGES"

Création de la base de données Icinga IDO

Vous avez besoin de créer la base de données Icinga IDO. Pour cela, nous récupérons le mot de passe actuel dans le fichier de configuration :

ICINGA_IDO_PASSWORD="$(awk -F'"' '/password/ {print$2}' /etc/icinga2/features-available/ido-mysql.conf)"

Et maintenant, nous pouvons créer la basse de données :

mysql <<< "
    CREATE DATABASE icinga;
    GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE
    ON icinga.*
    TO 'icinga2'@'localhost'
    IDENTIFIED BY '$ICINGA_IDO_PASSWORD';
    FLUSH PRIVILEGES;
"

Remplir la base de données Icinga IDO

mysql icinga < /usr/share/icinga2-ido-mysql/schema/mysql.sql

Création de la base de données IcingaWeb2

Vous avez besoin de créer la base de données ?IcingaWeb2.

Avant, vous avez besoin de définir les variables suivantes. Vous devez changer les valeurs :

ICINGAWEB2_DB_PASSWORD="changeme"

Et maintenant nous pouvons créer la base de données : And then we can create the database:

mysql <<< "
    CREATE DATABASE icingaweb2;
    GRANT ALL
    ON icingaweb2.*
    TO 'icingaweb2'@'localhost'
    IDENTIFIED BY '$ICINGAWEB2_DB_PASSWORD';
    FLUSH PRIVILEGES;
"

Remplir la base de données IcingaWeb

mysql icinga < /usr/share/icingaweb2/etc/schema/mysql.schema.sql

Création des fichiers de configuration

Nous allons maintenant créer les fichiers de configuration finaux.

Avant, vous devez définir quelques valeurs :

ICINGA_WEB_ADMIN_USER="admin"
ICINGA_WEB_ADMIN_PWD="changeme"

Et maintenant, il suffit de copier/coller le contenu suivant :

# roles.ini
cat << EOF > /etc/icingaweb2/roles.ini
[Administrators]
users = "$ICINGA_WEB_ADMIN_USER"
permissions = "*"
groups = "Administrators"
EOF

# groups.ini
cat << EOF > /etc/icingaweb2/groups.ini
[icingaweb2]
backend = "db"
resource = "icingaweb_db"
EOF

# config.ini
cat << EOF > /etc/icingaweb2/config.ini
[global]
show_stacktraces = "1"
config_backend = "db"
config_resource = "icingaweb_db"
#
[logging]
log = "syslog"
level = "ERROR"
application = "icingaweb2"
facility = "user"
EOF

# authentication.ini
cat << EOF > /etc/icingaweb2/authentication.ini
[icingaweb2]
backend = "db"
resource = "icingaweb_db"
EOF

# resources.ini
cat << EOF > /etc/icingaweb2/resources.ini
[icingaweb_db]
type = "db"
db = "mysql"
host = "localhost"
port = ""
dbname = "icingaweb2"
username = "icingaweb2"
password = "$ICINGAWEB2_DB_PASSWORD"
charset = "UTF8"
persistent = "0"
use_ssl = "0"
#
[icinga_ido]
type = "db"
db = "mysql"
host = "localhost"
port = ""
dbname = "icinga"
username = "icinga2"
password = "$ICINGA_IDO_PASSWORD"
charset = "UTF8"
persistent = "0"
use_ssl = "0"
EOF

mkdir /etc/icingaweb2/modules/monitoring/

# config.ini
cat << EOF > /etc/icingaweb2/modules/monitoring/config.ini
[security]
protected_customvars = "*pw*,*pass*,community"
EOF

# commandtransports.ini
cat << EOF > /etc/icingaweb2/modules/monitoring/commandtransports.ini
[icinga2]
transport = "local"
path = "/var/run/icinga2/cmd/icinga2.cmd"
EOF

# backends.ini
cat << EOF > /etc/icingaweb2/modules/monitoring/backends.ini
[icinga]
type = "ido"
resource = "icinga_ido
EOF

Création de l'utilisateur administrateur d'Icinga Web

# Création d'un hash à partir du mot de passe
HASH_ICINGA_WEB_ADMIN_PASSWORD=$(openssl passwd -1 "$ICINGA_WEB_ADMIN_PWD")

# Création de l'utilisateur dans la base
mysql icingaweb2 -Bse "
    INSERT INTO icingaweb_user  
        (name, active, password_hash)
        VALUES ('$ICINGA_WEB_ADMIN_USER', 1, '$HASH_ICINGA_WEB_ADMIN_PASSWORD');
"

Dépannage

Liste des répertoires utiles :

Autres pages Wiki

Liens externes