Comment utiliser Icinga pour surveiller vos serveurs et services sur Ubuntu 14.04

introduction

Dans ce tutoriel, nous allons passer en revue l’installation de Icinga, un système de surveillance open source, sur Ubuntu 14.04. Nous couvrirons certaines configurations de base afin que vous puissiez surveiller les services réseau et héberger des ressources via l'interface Web. Nous allons également utiliser le NRPE (Nagios Remote Plugin Executor), qui sera installé en tant qu’agent sur des systèmes distants pour surveiller leurs ressources locales (utilisation du disque, nombre d’utilisateurs connectés, etc.).

Icinga est un système de surveillance open source populaire qui vérifie les hôtes et les services et vous informe de leur statut. Icinga est une fourchette de Nagios, ils sont donc compatibles et partagent de nombreuses similitudes. Ils gagnent en popularité en raison d'un cycle de développement plus agile par rapport à Nagios.

Conditions préalables

Pour compléter ce didacticiel, vous devez avoir un accès root à un serveur virtuel Ubuntu 14.04. Les instructions pour configurer cela peuvent être trouvées ici (étapes 3 et 4):Initial Server Setup with Ubuntu 14.04.

De plus, si vous souhaitez configurer la fonctionnalité de notification par courrier électronique, vous devez configurer correctement Postfix. Les instructions pour ce faire peuvent être trouvées ici:How To Install and Setup Postfix on Ubuntu 14.04. Postfix est installé avec les packages Icinga, mais il peut être configuré après la configuration de Icinga.

Installer Icinga

Nous allons installer Icinga en utilisant des packages. Nous utiliserons également MySQL comme notre système de gestion de base de données - PostgreSQL, SQLite et Oracle sont les autres options prises en charge.

Exécutez la commande suivante pour ajouter le PPA Icinga à votre gestionnaire de paquets:

sudo add-apt-repository ppa:formorer/icinga

Puis mettez à jour votre base de données de paquets apt:

sudo apt update

Maintenant, installez Icinga et MySQL avec apt:

sudo apt install icinga icinga-doc icinga-idoutils mysql-server libdbd-mysql mysql-client

À présent, une série d’invites concernant votre installation de Icinga vous sera présentée. Voici une liste des invites et comment y répondre:

  • Configuration MySQL: Entrez un nouveau mot de passe utilisateur root MySQL

  • Configuration PostFix: sélectionnez “Site Internet”

  • Configuration PostFix: Entrez votre nom de domaine complet (exemple.com, par exemple)

  • Configuration de icinga-cgi: Saisissez le mot de passe de l’utilisateur «icingaadmin» (identifiez-vous pour accéder à Icinga).

  • Configuration de icinga-common: Entrez «Non» pour activer les commandes externes

  • Configuration de icinga-idoutils: Entrez «Oui» pour configurer la base de données pour icinga-idoutils avec dbconfig-common

  • Configuration de icinga-idoutils: sélectionnez “mysql” comme type de base de données

  • Configuration de icinga-idoutils: Entrez le mot de passe root MySQL (que vous venez d'attribuer ci-dessus).

  • Configuration de icinga-idoutils: Entrez un nouveau mot de passe utilisateur de la base de données icinga-idoutils.

Icinga est maintenant installé, mais nous devons encore configurer quelques éléments avant de pouvoir le démarrer. Notez qu'Apache HTTP Server et Postfix ont été installés dans le cadre de ce processus.

Ajoutez un utilisateur Apache (www-data) au groupe nagios:

sudo usermod -a -G nagios www-data

Activez le démon ido2db au démarrage, qui stocke les événements et les configurations Icinga dans la base de données. Modifiez la configuration par défaut d’Icinga:

sudo vi /etc/default/icinga

Changez la valeur deIDO2DB enyes, pour qu'elle ressemble à ce qui suit:

IDO2DB=yes

Sauvegarder et quitter. Maintenant, démarrez le serviceido2db:

sudo service ido2db start

Activez le module idomod en copiant le fichier exemple idoutils.cfg dans la configuration active de Icinga:

sudo cp /usr/share/doc/icinga-idoutils/examples/idoutils.cfg-sample /etc/icinga/modules/idoutils.cfg

Maintenant, Icinga est configuré et prêt à être démarré:

sudo service icinga restart

Essayons l’interface utilisateur de Icinga.

Accéder à l'interface utilisateur de Icinga

Accédez àhttp://yourhost/icinga et connectez-vous à l'aide de la connexionicingaadmin que vous avez configurée lors de l'installation d'Icinga.

Vous devriez voir que Icinga surveille un hôte,localhost (votre serveur Icinga) et sept services, comme ceci:

Icinga Initial Overview

La rangée supérieure indique que le seul hôte surveillé est «Up» et la rangée inférieure indique qu'il existe sept services surveillés «OK».

Si l'état delocalhost est «Down», vous devrez peut-être modifier les autorisations de votre commande ping. Exécutez la commande suivante pour permettre à l'utilisateur denagios d'utiliser la commande ping:

sudo chmod u+s `which ping`

Ajoutons plus d’hôtes et de services à surveiller!

Façons de surveiller avec Icinga

Il existe deux méthodes principales pour surveiller les hôtes et les services avec Icinga:

  1. Surveillance des «services disponibles au public»

  2. Surveillance via un agent installé sur un hôte distant pour collecter et envoyer des données à Icinga

Icinga Monitoring Methods

Avec la première méthode, les services accessibles au public font référence aux services accessibles via le réseau local ou Internet. Les exemples courants incluent HTTP, mail, SSH et ping ICMP. Cette méthode est utile pour surveiller les systèmes sur lesquels vous ne pouvez pas (ou ne pas vouloir) installer un agent, ainsi que pour surveiller les interfaces réseau avec les utilisateurs.

Pour mettre en œuvre la deuxième méthode, nous allons installer NRPE en tant qu’agent sur des hôtes distants pour surveiller leurs ressources locales. Cela permettra à Icinga de surveiller des éléments tels que l’utilisation du disque, les processus en cours et d’autres statistiques système que la première méthode ne peut pas atteindre.

Méthode 1: surveillance des services accessibles au public

Comme la première méthode ne fait que surveiller les services d'écoute, la configuration de cette méthode est entièrement effectuée sur le serveur Icinga. Plusieurs méthodes peuvent être surveillées avec cette méthode, nous allons donc montrer comment surveiller une interface publique d'un serveur Web.

Créez un fichier avec le nom de votre hôte, avec cette commande (remplacezyourhost par votre propre nom d'hôte):

sudo vi /etc/icinga/objects/yourhost.cfg

Ajoutez maintenant ce qui suit, en remplaçant les valeurs dehost_name par votre propre nom d'hôte (aux deux endroits),alias par une description de l'hôte etaddress par la valeur de l'adresse IP publique de votre hôte adresse:

define host {
        use                     generic-host
        host_name               web-1
        alias                   A Web Server
        address                 107.170.xxx.xxx
}

define service {
        use                     generic-service
        host_name               web-1
        service_description     HTTP
        check_command           check_http
}

Maintenant, enregistrez et quittez. Rechargez votre configuration Icinga pour appliquer tous les changements:

sudo service icinga reload

Méthode 2: Surveillance via un agent

Comme mentionné précédemment, nous utiliserons NRPE en tant qu’agent pour collecter les données d’hôte distant pour Icinga. Cela signifie que NRPE doit être installé sur tous les hôtes qui seront surveillés avec cette méthode et que le serveur Icinga doit également être configuré pour recevoir les données de chaque hôte.

Passons à l’installation de NRPE.

Installation de NRPE sur un hôte distant

Sur un hôte que vous souhaitez surveiller, mettez à jour apt:

sudo apt update

Maintenant, installez les plugins NRPE et Nagios:

sudo apt install nagios-plugins nagios-nrpe-server

Recherchez le nom de votre système de fichiers racine (car il s'agit d'un des éléments que nous souhaitons surveiller):

df -h /

Nous utiliserons le nom du système de fichiers dans la configuration NRPE pour surveiller l'utilisation de votre disque (il s'agit probablement de/dev/vda). Ouvrez maintenant nrpe.cfg pour l’édition:

sudo vi /etc/nagios/nrpe.cfg

Le fichier de configuration NRPE est très long et plein de commentaires. Vous devrez trouver et modifier quelques lignes:

  • server_address: défini sur l'adresse IP privée de cet hôte

  • allowed_hosts: défini sur l'adresse IP privée de votre serveur Icinga

  • command[check_hda1]: remplacez/dev/hda1 par le nom de votre système de fichiers racine

Les trois lignes susmentionnées doivent ressembler à ceci (remplacez les valeurs appropriées):

server_address=client_private_IP
allowed_hosts=nagios_server_private_IP
command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/vda

Notez qu'il existe plusieurs autres «commandes» définies dans ce fichier qui s'exécutent si le serveur Icinga est configuré pour les utiliser. Notez également que NRPE écoutera sur le port 5666 carserver_port=5666 est défini. Si des pare-feu bloquent ce port, veillez à l'ouvrir sur votre serveur Icinga.

Sauvegarder et quitter. Ensuite, redémarrez NRPE pour appliquer les modifications:

sudo service nagios-nrpe-server restart

Une fois que vous avez terminé l'installation et la configuration de NRPE sur les hôtes que vous souhaitez surveiller, vous devrez ajouter ces hôtes à la configuration de votre serveur Icinga avant qu'il ne commence à les surveiller.

Ajouter un hôte distant à la configuration du serveur Icinga

Sur votre serveur Icinga, créez un nouveau fichier de configuration pour chacun des hôtes distants que vous souhaitez surveiller dans/etc/icinga/objects. Remplacezyourhost par le nom de votre hôte:

sudo vi /etc/icinga/objects/yourhost.cfg

Ajoutez la définition d'hôte suivante, en remplaçant la valeurhost_name par votre nom d'hôte distant (j'ai utilisé «wordpress-1» dans mon exemple), la valeuralias par une description de l'hôte et leaddress valeur avec l'adresse IP privée de l'hôte distant:

define host {
        use                     generic-host
        host_name               wordpress-1
        alias                   My first wordpress server
        address                 10.128.xxx.xxx
        }

Ajoutez ensuite l'un de ces blocs de services aux services que vous souhaitez surveiller. Notez que la valeur decheck_command détermine ce qui sera surveillé, y compris les valeurs de seuil d'état. Voici quelques exemples que vous pouvez ajouter au fichier de configuration de votre hôte:

Ping:

define service {
        use                             generic-service
        host_name                       wordpress-1
        service_description             PING
        check_command                   check_ping!100.0,20%!500.0,60%
        }

SSH (notifications_enabled défini sur 0 désactive les notifications pour un service):

define service {
        use                             generic-service
        host_name                       wordpress-1
        service_description             SSH
        check_command                   check_ssh
        notifications_enabled           0
        }

Charge:

define service {
        use                             generic-service
        host_name                       wordpress-1
        service_description             Current Load
        check_command                   check_load!5.0!4.0!3.0!10.0!6.0!4.0
        }

Utilisateurs actuels:

define service {
        use                             generic-service
        host_name                       wordpress-1
        service_description             Current Users
        check_command                   check_users!20!50
        }

Espace disque:

define service {
        use                             generic-service
        host_name                       wordpress-1
        service_description             Disk Space
        check_command                   check_all_disks!20%!10%
        }

Si vous vous demandez ce que signifieuse generic-service, il hérite simplement des valeurs d’un modèle de service appelé «service-générique» qui est défini par défaut.

Maintenant, enregistrez et quittez. Rechargez votre configuration Icinga pour appliquer tous les changements:

sudo service icinga reload

Une fois que vous avez terminé de configurer Icinga pour surveiller tous vos hôtes distants, voyons l'interface utilisateur.

Exemple d'interface utilisateur

Après avoir configuré une surveillance sur quelques hôtes avec l'une ou l'autre méthode de surveillance, accédez à votre interface utilisateur Icinga (http://youricingaserver.com/icinga, connexion acingaadmin), puis cliquez sur le lien Service Detail. Vous devriez voir une liste de tous les services pour lesquels vous avez configuré la surveillance.

À titre d'exemple, voici deux hôtes surveillés à l'aide des fichiers de configuration décrits ci-dessus. Le service HTTP deweb-1 est surveillé via son port HTTP normal, indiquant que son serveur Web répond avec un étatOK, etwordpress-1 montre que tous ses services surveillés sontOK.

Icinga User Interface Example

Icinga a une pléthore de fonctionnalités, alors n'hésitez pas à parcourir l'interface pour voir ce que vous pouvez découvrir sur vos hôtes et vos services.

Conclusion

Maintenant que vous surveillez vos hôtes et certains de leurs services, vous voudrez peut-être passer un peu de temps pour déterminer quels services sont essentiels pour vous afin de pouvoir commencer à les surveiller. Vous pouvez également configurer des notifications afin que, par exemple, vous receviez un courrier électronique lorsque votre utilisation du disque atteint un seuil critique ou d'avertissement ou que votre site Web principal est en panne. Vous pouvez ainsi résoudre la situation rapidement ou avant qu'un problème ne se produise.

Bonne chance!

Related