Nagios - Guide rapide

Le cycle de vie DevOps est une boucle continue de plusieurs étapes, la surveillance continue est la dernière étape de cette boucle. La surveillance continue est l'une des étapes de ce cycle de vie. Dans ce chapitre, apprenons en détail ce qu'est la surveillance continue et comment Nagios est utile à cette fin.

Qu'est-ce que la surveillance continue

La surveillance continue démarre lorsque le déploiement est effectué sur les serveurs de production. Dès lors, cette étape est chargée de surveiller tout ce qui se passe. Cette étape est très cruciale pour la productivité de l'entreprise.

Il y a plusieurs avantages à utiliser la surveillance continue -

  • Il détecte tous les problèmes de serveur et de réseau.
  • Il trouve la cause première de l'échec.
  • Cela aide à réduire les coûts de maintenance.
  • Cela aide à résoudre les problèmes de performances.
  • Cela aide à mettre à jour l'infrastructure avant qu'elle ne devienne obsolète.
  • Il peut résoudre les problèmes automatiquement lorsqu'il est détecté.
  • Il s'assure que les serveurs, les services, les applications et le réseau sont toujours opérationnels.
  • Il surveille l'infrastructure complète chaque seconde.

Qu'est-ce que Nagios

Nagios est un outil de surveillance continue open source qui surveille le réseau, les applications et les serveurs. Il peut trouver et réparer les problèmes détectés dans l'infrastructure et arrêter les problèmes futurs avant qu'ils n'affectent les utilisateurs finaux. Il donne l'état complet de votre infrastructure informatique et ses performances.

Pourquoi Nagios

Nagios offre les fonctionnalités suivantes, ce qui le rend utilisable par un large groupe d'utilisateurs -

  • Il peut surveiller les serveurs de base de données tels que SQL Server, Oracle, Mysql, Postgres
  • Il donne des informations au niveau de l'application (Apache, Postfix, LDAP, Citrix etc.).
  • Fournit un développement actif.
  • A un excellent soutien forme énorme communauté active.
  • Nagios fonctionne sur n'importe quel système d'exploitation.
  • Il peut envoyer un ping pour voir si l'hôte est accessible.

Avantages de Nagios

Nagios offre les avantages suivants aux utilisateurs -

  • Cela aide à se débarrasser des tests périodiques.
  • Il détecte les pannes d'une fraction de seconde lorsque le bracelet est encore en phase «intermittente».
  • Il réduit les coûts de maintenance sans sacrifier les performances.
  • Il informe en temps opportun la direction du contrôle et de la panne.

Ce chapitre décrit en détail l'architecture de Nagios.

Architecture de Nagios

Les points suivants méritent d'être notés sur l'architecture de Nagios -

  • Nagios a une architecture d'agent serveur.

  • Le serveur Nagios est installé sur l'hôte et les plugins sont installés sur les hôtes / serveurs distants qui doivent être surveillés.

  • Nagios envoie un signal via un planificateur de processus pour exécuter les plugins sur les hôtes / serveurs locaux / distants.

  • Les plugins collectent les données (utilisation du processeur, utilisation de la mémoire, etc.) et les renvoient au planificateur.

  • Ensuite, les planifications de processus envoient les notifications aux administrateurs et mettent à jour l'interface graphique de Nagios.

La figure suivante montre en détail l'architecture de l'agent de serveur Nagios -

Nagios contient divers produits comme discuté en détail ci-dessous -

Nagios XI

Il assure la surveillance des composants complets de l'infrastructure informatique tels que les applications, les services, le réseau, les systèmes d'exploitation, etc. Il donne une vue complète de votre infrastructure et de vos processus métier. L'interface graphique est facilement personnalisable donnant la flexibilité utilisée. L'édition standard de cet outil coûte 1995 $ et l'édition entreprise coûte 3495 $.

Noyau de Nagios

C'est le cœur de la surveillance de l'infrastructure informatique. Le produit Nagios XI est également fondamentalement basé sur le noyau de Nagios. Chaque fois qu'il y a un problème de panne dans l'infrastructure, il envoie une alerte / notification à l'administrateur qui peut prendre rapidement l'action pour résoudre le problème. Cet outil est absolument gratuit.

Serveur de journaux Nagios

Il rend la recherche des données de journal très simple et facile. Il conserve toutes les données du journal à un seul endroit avec une configuration haute disponibilité. Il peut facilement envoyer des alertes si un problème est détecté dans les données du journal. Il peut évoluer jusqu'à des milliers de serveurs, offrant plus de puissance, de vitesse, de stockage et de fiabilité à votre plate-forme d'analyse de journaux. Le prix de cet outil dépend du nombre d'instances - 1 instance 3995 $, 2 instances 4995 $, 3 instances 5995 $, 4 instances 6995 $, 10 instances 14995 $.

Fusion de Nagios

Ce produit offre une vue centralisée du système de surveillance complet. Avec Nagios Fusion, vous scannez la configuration des serveurs de surveillance séparés pour des zones géographiques distinctes. Il peut être facilement intégré à Nagios XI et au noyau de Nagios pour donner une visibilité complète de l'infrastructure. Cet outil coûte 2495 $.

Analyseur de réseau Nagios

Il donne les informations complètes de l'infrastructure réseau à l'administrateur avec les menaces potentielles sur le réseau afin que l'administrateur puisse prendre des mesures rapides. Il partage des données très détaillées sur le réseau après une analyse approfondie du réseau. Cet outil coûte 1995 $.

Dans ce chapitre, les étapes de configuration de Nagios sur Ubuntu sont décrites en détail.

Avant d'installer Nagios, certains packages tels que Apache, PHP, la construction de packages, etc., doivent être présents sur votre système Ubuntu. Par conséquent, installons-les d'abord.

Step 1 - Exécutez la commande suivante pour installer les packages pré-requis -

sudo apt-get install wget build-essential apache2 php apache2-mod-php7.0 php-gd
libgd-dev sendmail unzip

Step 2 - Ensuite, créez un utilisateur et un groupe pour Nagios et ajoutez-les à Apache www-data user.

sudo useradd nagios
sudo groupadd nagcmd
sudo usermod -a -G nagcmd nagios
sudo usermod -a -G nagios,nagcmd www-data

Step 3 - Téléchargez le dernier package Nagios.

wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-
4.4.3.tar.gz

Step 4 - Extrayez le fichier tarball.

tar -xzf nagios-4.4.3.tar.gz
cd nagios-4.4.3/

Step 5 - Exécutez la commande suivante pour compiler Nagios à partir des sources.

./configure --with-nagios-group=nagios --with-command-group=nagcmd

Step 6 - Exécutez la commande suivante pour créer des fichiers Nagios.

make all

Step 7 - Exécutez la commande ci-dessous pour installer tous les fichiers Nagios.

sudo make install

Step 8 - Exécutez les commandes suivantes pour installer les fichiers de configuration d'initialisation et de commande externe.

sudo make install-commandmode
sudo make install-init
sudo make install-config
sudo /usr/bin/install -c -m 644 sample-config/httpd.conf /etc/apache2/sitesavailable/
nagios.conf

Step 9 - Copiez maintenant le répertoire du gestionnaire d'événements dans le répertoire Nagios.

sudo cp -R contrib/eventhandlers/ /usr/local/nagios/libexec/
sudo chown -R nagios:nagios /usr/local/nagios/libexec/eventhandlers

Step 10 - Téléchargez et extrayez les plugins Nagios.

cd
wget https://nagios-plugins.org/download/nagiosplugins-
2.2.1.tar.gz
tar -xzf nagios-plugins*.tar.gz
cd nagios-plugins-2.2.1/

Step 11 - Installez les plugins Nagios en utilisant la commande ci-dessous.

./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-openssl
make
sudo make install

Step 12 - Modifiez maintenant le fichier de configuration de Nagios et décommentez la ligne numéro 51 → cfg_dir = / usr / local / nagios / etc / servers

sudo gedit /usr/local/nagios/etc/nagios.cfg

Step 13 - Maintenant, créez un répertoire de serveur.

sudo mkdir -p /usr/local/nagios/etc/servers

Step 14 - Modifier le fichier de configuration des contacts.

sudo gedit /usr/local/nagios/etc/objects/contacts.cfg

Step 15 - Activez maintenant les modules Apache et configurez un utilisateur nagiosadmin.

sudo a2enmod rewrite
sudo a2enmod cgi
sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
sudo ln -s /etc/apache2/sites-available/nagios.conf /etc/apache2/sites-enabled/

Step 16 - Maintenant, redémarrez Apache et Nagios.

service apache2 restart
service nagios start
cd /etc/init.d/
sudo cp /etc/init.d/skeleton /etc/init.d/Nagios

Step 17 - Editez le fichier Nagios.

sudo gedit /etc/init.d/Nagios
DESC = "Nagios"
NAME = nagios
DAEMON = /usr/local/nagios/bin/$NAME
DAEMON_ARGS = "-d /usr/local/nagios/etc/nagios.cfg"
PIDFILE = /usr/local/nagios/var/$NAME.lock

Step 18 - Rendez le fichier Nagios exécutable et démarrez Nagios.

sudo chmod +x /etc/init.d/nagios
service apache2 restart
service nagios start

Step 19 - Allez maintenant dans votre navigateur et ouvrez l'url → http://localhost/nagios. Connectez-vous maintenant à Nagios avec le nom d'utilisateur nagiosadmin et utilisez le mot de passe que vous avez défini précédemment. L'écran de connexion de Nagios est comme indiqué dans la capture d'écran ci-dessous -

Si vous avez suivi toutes les étapes correctement, votre interface Web Nagios s'affichera. Vous pouvez trouver le tableau de bord Nagios comme indiqué ci-dessous -

Dans le chapitre précédent, nous avons vu l'installation de Nagios. Dans ce chapitre, comprenons sa configuration en détail.

Les fichiers de configuration de Nagios se trouvent dans / usr / local / nagios / etc. Ces fichiers sont affichés dans la capture d'écran ci-dessous -

Comprenons maintenant l'importance de chaque fichier -

nagios.cfg

C'est le fichier de configuration principal du noyau de Nagios. Ce fichier contient l'emplacement du fichier journal de Nagios, l'intervalle de mise à jour de l'état des hôtes et des services, le fichier de verrouillage et le fichier status.dat. Les utilisateurs et groupes Nagios sur lesquels les instances s'exécutent sont définis dans ce fichier. Il a le chemin de tous les fichiers de configuration d'objets individuels tels que les commandes, les contacts, les modèles, etc.

cgi.cfg

Par défaut, le fichier de configuration CGI de Nagios est nommé cgi.cfg. Il indique aux CGI où trouver le fichier de configuration principal. Les CGI liront les fichiers de configuration principal et hôte pour toutes les autres données dont ils pourraient avoir besoin. Il contient toutes les informations sur les utilisateurs et les groupes ainsi que leurs droits et autorisations. Il a également le chemin de tous les fichiers frontaux de Nagios.

resource.cfg

Vous pouvez définir des macros $ USERx $ dans ce fichier, qui peuvent à leur tour être utilisées dans les définitions de commande de votre (vos) fichier (s) de configuration hôte. Les macros $ USERx $ sont utiles pour stocker des informations sensibles telles que les noms d'utilisateur, les mots de passe, etc.

Ils sont également pratiques pour spécifier le chemin des plugins et des gestionnaires d'événements - si vous décidez de déplacer les plugins ou les gestionnaires d'événements vers un répertoire différent à l'avenir, vous pouvez simplement mettre à jour une ou deux macros $ USERx $, au lieu de modifier beaucoup de définitions de commande. Les fichiers de ressources peuvent également être utilisés pour stocker des directives de configuration pour des sources de données externes telles que MySQL.

Les fichiers de configuration dans le répertoire des objets sont utilisés pour définir des commandes, des contacts, des hôtes, des services, etc.

commandes.cfg

Ce fichier de configuration vous fournit des exemples de définitions de commandes que vous pouvez consulter dans les définitions d'hôte, de service et de contact. Ces commandes sont utilisées pour vérifier et surveiller les hôtes et les services. Vous pouvez exécuter ces commandes localement sur une console Linux où vous obtiendrez également la sortie de la commande que vous exécutez.

Exemple

define command {
   command_name check_local_disk
   command_line $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
}

define command {
   command_name check_local_load
   command_line $USER1$/check_load -w $ARG1$ -c $ARG2$
}

define command {
   command_name check_local_procs
   command_line $USER1$/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$
}

contacts.cfg

Ce fichier contient des informations sur les contacts et les groupes de Nagios. Par défaut, un contact est déjà présent en tant qu'administrateur Nagios.

Exemple

define contact {
   contact_name nagiosadmin
   use generic-contact
   alias Nagios Admin
   email [email protected]
}

define contactgroup {
   contactgroup_name admins
   alias Nagios Administrators
   members nagiosadmin
}

templates.cfg

Ce fichier de configuration vous fournit des exemples de modèles de définition d'objet qui sont référencés par d'autres définitions d'hôte, de service, de contact, etc. dans d'autres fichiers de configuration.

timeperiods.cfg

Ce fichier de configuration vous fournit des exemples de définitions de période que vous pouvez consulter dans les définitions d'hôte, de service, de contact et de dépendance.

Nagios est l'outil de surveillance avec une multitude de fonctionnalités comme indiqué ci-dessous -

  • Nagios Core est open source, donc gratuit à utiliser.

  • Moteur de surveillance puissant qui peut faire évoluer et gérer des milliers d'hôtes et de serveurs.

  • Tableau de bord Web complet donnant la visibilité des composants complets du réseau et des données de surveillance.

  • Il a des capacités multi-locataires où plusieurs utilisateurs ont accès au tableau de bord Nagios.

  • Il a une architecture extensible qui peut facilement s'intégrer avec des applications tierces avec plusieurs API.

  • Nagios a une grande communauté très active avec plus d'un million d'utilisateurs à travers le monde.

  • Système d'alerte rapide, envoie des alertes aux administrateurs immédiatement après l'identification de tout problème.

  • Plusieurs plugins disponibles pour prendre en charge Nagios, des plugins codés personnalisés peuvent également être utilisés avec Nagios.

  • Il dispose d'un bon système de journal et de base de données stockant facilement tout ce qui se passe sur le réseau.

  • La fonction de planification proactive permet de savoir quand il est temps de mettre à niveau l'infrastructure.

Nagios peut être applicable à une large gamme d'applications. Ils sont donnés ici -

  • Surveillez les ressources de l'hôte telles que l'espace disque, les journaux système, etc.

  • Surveiller les ressources réseau - http, ftp, smtp, ssh, etc.

  • Surveillez les fichiers journaux en continu pour identifier les infra-problèmes.

  • Surveillez les applications Windows / Linux / Unix / Web et leur état.

  • Nagios Remote Plugin Executer (NRPE) peut surveiller les services à distance.

  • Exécutez les contrôles de service en parallèle.

  • Les tunnels SSH ou SSL peuvent également être utilisés pour la surveillance à distance.

  • Envoyer des alertes / notifications

  • par e-mail, sms, pager de tout problème sur l'infrastructure

  • Recommander quand mettre à niveau l'infrastructure informatique.

Nagios est l'outil le plus populaire utilisé pour surveiller les hôtes et les services exécutés dans votre infrastructure informatique. Les hôtes et les configurations de service sont les éléments de base de Nagios Core.

  • L'hôte est comme un ordinateur; il peut s'agir d'un périphérique physique ou virtuel.

  • Les services sont ceux qui sont utilisés par Nagios pour vérifier quelque chose sur un hôte.

Vous pouvez créer un fichier hôte dans le répertoire du serveur de Nagios et mentionner les définitions d'hôte et de service. Par exemple -

sudo gedit /usr/local/nagios/etc/servers/ubuntu_host.cfg

# Fichier de configuration de l'hôte Ubuntu

define host {
   use linux-server
   host_name ubuntu_host
   alias Ubuntu Host
   address 192.168.1.10
   register 1
}
define service {
   host_name ubuntu_host
   service_description PING
   check_command check_ping!100.0,20%!500.0,60%
   max_check_attempts 2
   check_interval 2
   retry_interval 2
   check_period 24x7
   check_freshness 1
   contact_groups admins
   notification_interval 2
   notification_period 24x7
   notifications_enabled 1
   register 1
}

Les définitions ci-dessus ajoutent un hôte appelé ubuntu_host et définit les services qui s'exécuteront sur cet hôte. Lorsque vous redémarrez Nagios, cet hôte commencera à être surveillé par Nagios et les services spécifiés seront exécutés.

Il existe de nombreux autres services dans Nagios qui peuvent être utilisés pour surveiller à peu près tout sur l'hôte en cours d'exécution.

Une définition de commande définit une commande. Les commandes incluent les vérifications de service, les notifications de service, les gestionnaires d'événements de service, les vérifications d'hôte, les notifications d'hôte et les gestionnaires d'événements d'hôte. Les définitions de commande pour Nagios sont définies dans le fichier commands.cfg.

Voici le format pour définir une commande -

define command {
   command_name command_name
   command_line command_line
}

Command name- Cette directive est utilisée pour identifier la commande. Les définitions de contact, d'hôte et de service sont référencées par nom de commande.

Command line - Cette directive est utilisée pour définir ce qui est exécuté par Nagios lorsque la commande est utilisée pour les vérifications de service ou d'hôte, les notifications ou les gestionnaires d'événements.

Exemple

define command{
   command_name check_ssh
   command_line /usr/lib/nagios/plugins/check_ssh ‘$HOSTADDRESS$’
}

Cette commande exécutera le plugin - / usr / libl / nagios / plugins / check_ssh avec 1 paramètre: '$ HOSTADDRESS $'

Une définition d'hôte très courte qui utiliserait cette commande de vérification pourrait être similaire à celle illustrée ici -

define host{
   host_name host_tutorial
   address 10.0.0.1
   check_command check_ssh
}

Les définitions de commande indiquent comment effectuer des vérifications d'hôte / de service. Ils définissent également comment générer des notifications si un problème est identifié et comment gérer tout événement. Il existe plusieurs commandes pour effectuer les vérifications, telles que des commandes pour vérifier si SSH fonctionne correctement ou non, une commande pour vérifier que la base de données est opérationnelle et en cours d'exécution, une commande pour vérifier si un hôte est actif ou non et bien d'autres.

Il existe des commandes qui indiquent aux utilisateurs les problèmes présents dans l'infrastructure. Vous pouvez créer vos propres commandes personnalisées ou utiliser n'importe quelle commande tierce dans Nagios, et elles sont traitées de la même manière que le projet de plugins Nagios, il n'y a aucune distinction entre elles.

Vous pouvez également passer des arguments dans la commande, ce qui donne plus de flexibilité dans l'exécution des vérifications. C'est ainsi que vous devez définir une commande avec le paramètre -

define command {
   command_name check-host-alive-limits
   command_line $USER5$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
}

La définition d'hôte pour la commande ci-dessus -

define host {
   host_name system2
   address 10.0.15.1
   check_command check-host-alive-limits!1000.0,70%!5000.0,100%
}

Vous pouvez exécuter des commandes externes dans Nagios en les ajoutant au fichier de commandes qui est traité périodiquement par le démon Nagios.

Avec les commandes externes, vous pouvez effectuer de nombreuses vérifications pendant que Nagios est en cours d'exécution. Vous pouvez désactiver temporairement quelques vérifications, ou forcer certaines vérifications à s'exécuter immédiatement, désactiver temporairement les notifications, etc. Voici la syntaxe des commandes externes dans Nagios qui doivent être écrites dans le fichier de commandes -

[time] command_id;command_arguments

Vous pouvez également consulter la liste de toutes les commandes externes pouvant être utilisées dans Nagios ici -https://assets.nagios.com/downloads/nagioscore/docs/externalcmds/

Une fois l'hôte et les services configurés sur Nagios, des vérifications sont utilisées pour voir si les hôtes et les services fonctionnent comme ils sont censés le faire ou non. Voyons un exemple pour effectuer des vérifications sur l'hôte -

Considérez que vous avez placé vos définitions d'hôte dans le fichier host1.cfg dans le répertoire / usr / local / nagios / etc / objects.

cd /usr/local/nagios/etc/objects
gedit host1.cfg

Voici à quoi ressemblent actuellement vos définitions d'hôte -

define host {
   host_name host1
   address 10.0.0.1
}

Ajoutons maintenant la directive check_interval. Cette directive est utilisée pour effectuer des vérifications programmées des hôtes pour le nombre que vous avez défini; par défaut, il est en minutes. En utilisant la définition ci-dessous, des contrôles sur l'hôte seront effectués toutes les 3 minutes.

define host {
   host_name host1
   address 10.0.0.1
   check_interval 3
}

Dans Nagios, 2 types de contrôles sont effectués sur les hôtes et les services -

  • Vérifications actives
  • Vérifications passives

Vérifications actives

Les vérifications actives sont lancées par le processus Nagios puis exécutées sur une base planifiée régulière. La logique de vérification à l'intérieur du processus Nagios démarre la vérification active. Pour surveiller les hôtes et les services exécutés sur des machines distantes, Nagios exécute des plugins et indique quelles informations collecter. Le plugin est ensuite exécuté sur la machine distante où il collecte les informations requises et les renvoie ensuite au démon Nagios. En fonction de l'état reçu sur les hôtes et les services, les mesures appropriées sont prises.

La figure ci-dessous montre une vérification active -

Celles-ci sont exécutées à intervalles réguliers, comme défini par check_interval et retry_interval.

Les contrôles passifs sont effectués par des processus externes et les résultats sont renvoyés à Nagios pour traitement.

Les contrôles passifs fonctionnent comme expliqué ici -

Une application externe vérifie l'état des hôtes / services et écrit le résultat dans un fichier de commande externe. Lorsque le démon Nagios lit le fichier de commande externe, il lit et envoie toutes les vérifications passives de la file d'attente pour les traiter plus tard. Périodiquement, lorsque ces contrôles sont traités, des notifications ou des alertes sont envoyées en fonction des informations contenues dans le résultat du contrôle.

La figure ci-dessous montre un contrôle passif -

Ainsi, la différence entre les contrôles actifs et passifs est que les contrôles actifs sont exécutés par Nagios et les contrôles passifs sont exécutés par des applications externes.

Ces vérifications sont utiles lorsque vous ne pouvez pas surveiller les hôtes / services sur une base régulière.

Nagios stocke l'état des hôtes et des services qu'il surveille pour déterminer s'ils fonctionnent correctement ou non. Il y aurait de nombreux cas où les échecs se produiraient au hasard et ils sont temporaires; par conséquent, Nagios utilise des états pour vérifier l'état actuel d'un hôte ou d'un service.

Il existe deux types d'états -

  • État doux
  • État dur

État doux

Lorsqu'un hôte ou un service est en panne pendant une très courte durée et que son état n'est pas connu ou différent du précédent, des états souples sont utilisés. L'hôte ou les services seront testés encore et encore jusqu'à ce que le statut soit permanent.

État dur

Lorsque max_check_attempts est exécuté et que l'état de l'hôte ou du service n'est toujours pas OK, l'état dur est utilisé. Nagios exécute des gestionnaires d'événements pour gérer les états durs.

La figure suivante montre les états souples et les états durs.

Ce chapitre donne une idée des ports et des protocoles que comprend Nagios.

Protocoles

Les protocoles par défaut utilisés par Nagios sont ceux indiqués sous -

  • http (s), ports 80 et 443 - Les interfaces du produit sont basées sur le Web dans Nagios. Les agents Nagios peuvent utiliser http pour déplacer des données.

  • snmp, ports 161 et 162 - snmp est une partie importante de la surveillance du réseau. Le port 161 est utilisé pour envoyer des demandes aux nœuds et le post 162 est utilisé pour recevoir les résultats.

  • ssh, port 22 - Nagios est conçu pour fonctionner nativement sur CentOS ou RHEL Linux. L'administrateur peut se connecter à Nagios via SSH chaque fois qu'il le souhaite et effectuer des vérifications.

Les ports

Les ports par défaut utilisés par les plugins Nagios courants sont indiqués sous -

  • Butcheck_nt (nsclient ++) 12489
  • NRPE 5666
  • NSCA 5667
  • NCPA 5693
  • MSSQL 1433
  • MySQL 3306
  • PostgreSQL 5432
  • MongoDB 27017, 27018
  • OracleDB 1521
  • Courriel (SMTP) 25, 465, 587
  • WMI 135, 445 / ports attribués de manière dynamique supplémentaires dans la plage 1024-1034

Les plugins aident à surveiller les bases de données, les systèmes d'exploitation, les applications, les équipements réseau, les protocoles avec Nagios. Les plugins sont des exécutables compilés ou des scripts (Perl ou non-Perl) qui étendent les fonctionnalités de Nagios pour surveiller les serveurs et les hôtes. Nagios exécutera un plugin pour vérifier l'état d'un service ou d'un hôte. Nagios peut être compilé avec le support d'un interpréteur Perl intégré pour exécuter des plugins Perl. Sans cela, Nagios exécute les plugins Perl et non Perl en forçant et en exécutant les plugins en tant que commande externe.

Types de plugins Nagios

Nagios a les plugins suivants disponibles -

Official Nagios Plugins- Il existe 50 plugins officiels de Nagios. Les plugins officiels de Nagios sont développés et maintenus par l'équipe officielle des plugins de Nagios.

Community Plugins - Il existe plus de 3 000 plugins tiers Nagios qui ont été développés par des centaines de membres de la communauté Nagios.

Custom Plugins- Vous pouvez également écrire vos propres plugins personnalisés. Certaines directives doivent être suivies pour écrire des plugins personnalisés.

Instructions pour l'écriture de plugins Nagios personnalisés

Lors de l'écriture d'un plugin personnalisé dans Nagios, vous devez suivre les instructions ci-dessous -

  • Les plugins doivent fournir une option de ligne de commande "-V" (vérifiez les changements de configuration)
  • Imprimer une seule ligne de texte
  • Imprimer le diagnostic et seulement une partie du message d'aide
  • Les plugins réseau utilisent DEFAULT_SOCKET_TIMEOUT pour expirer
  • "-v" ou "--verbose" est lié au niveau de verbosité
  • "-t" ou "--timeout" (délai d'expiration du plugin);
  • "-w" ou "--warning" (seuil d'avertissement);
  • "-c" ou "--critical" (seuil critique);
  • "-H" ou "--hostname" (nom de l'hôte à vérifier)

Plusieurs plugins Nagios s'exécutent et effectuent des vérifications en même temps, pour que tous fonctionnent correctement ensemble, le plugin Nagios suit un code d'état. Le tableau ci-dessous indique l'état du code de sortie et sa description -

Code de sortie Statut La description
0 D'accord Fonctionne bien
1 ATTENTION Fonctionne bien, mais a besoin d'attention
2 CRITIQUE Ne fonctionne pas correctement
3 INCONNUE Lorsque le plugin est incapable de déterminer l'état de l'hôte / du service

Les plugins Nagios utilisent des options pour leur configuration. Voici quelques paramètres importants acceptés par le plugin Nagios -

Sr. Non Option et description
1

-h, --help

Cela fournit de l'aide

2

-V, --version

Cela imprime la version exacte du plugin

3

-v, --verbose

Cela permet au plugin de donner des informations plus détaillées sur ce qu'il fait

4

-t, --timeout

Cela fournit le délai (en secondes); après cette heure, le plugin rapportera l'état CRITIQUE

5

-w, --warning

Cela fournit les limites spécifiques au plugin pour le statut WARNING

6

-c, --critical

Cela fournit les limites spécifiques au plugin pour le statut CRITICAL

sept

-H, --hostname

Cela fournit le nom d'hôte, l'adresse IP ou le socket Unix avec lequel communiquer

8

-4, --use-ipv4

Cela vous permet d'utiliser IPv4 pour la connectivité réseau

9

-6, --use-ipv6

Cela vous permet d'utiliser IPv6 pour la connectivité réseau

dix

-p, --port

Ceci est utilisé pour se connecter au port TCP ou UDP

11

-s, -- send

Cela fournit la chaîne qui sera envoyée au serveur

12

-e, --expect

Cela fournit la chaîne qui doit être renvoyée depuis le serveur

13

-q, --quit

Cela fournit la chaîne à envoyer au serveur pour fermer la connexion

Le package de plugins Nagios a beaucoup de vérifications disponibles pour les hôtes et les services pour surveiller l'infrastructure. Essayons les plugins Nagios pour effectuer quelques vérifications.

SMTP est un protocole utilisé pour envoyer des e-mails. Les plugins standards de Nagios ont des commandes pour effectuer des vérifications pour SMTP. La définition de commande pour SMTP -

define command {
   command_name check_smtp
   command_line $USER2$/check_smtp -H $HOSTADDRESS$
}

Utilisons le plugin Nagios pour surveiller MySQL. Nagios propose 2 plugins pour surveiller MySQL. Le premier plugin vérifie si la connexion mysql fonctionne ou non, et le second plugin est utilisé pour calculer le temps nécessaire pour exécuter une requête SQL.

Les définitions des commandes pour les deux sont les suivantes -

define command {
   command_name check_mysql
   command_line $USER1$/check_mysql –H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -d
   $ARG3$ -S –w 10 –c 30
}

define command {
   command_name check_mysql_query
   command_line $USER1$/check_mysql_query –H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -d
   $ARG3$ -q $ARG4$ –w $ARG5$ -c $ARG6$
}

Note - Le nom d'utilisateur, le mot de passe et le nom de la base de données sont requis comme arguments dans les deux commandes.

Nagios propose un plugin pour vérifier l'espace disque monté sur toutes les partitions. La définition de la commande est la suivante

define command {
   command_name check_partition
   command_line $USER1$/check_disk –p $ARG1$ –w $ARG2$ -c $ARG3$
}

La majorité des vérifications peuvent être effectuées via les plugins standards de Nagios. Mais il existe des applications qui nécessitent des contrôles spéciaux pour les surveiller, auquel cas vous pouvez utiliser des plugins Nagios tiers qui fourniront des contrôles plus sophistiqués sur l'application. Il est important de connaître les problèmes de sécurité et de licence lorsque vous utilisez un plugin tiers sous forme d'échange Nagios ou que vous téléchargez le plugin à partir d'un autre site Web.

Le démon Nagios qui exécute des vérifications sur les machines distantes dans NRPE (Nagios Remote Plugin Executor). Il vous permet d'exécuter des plugins Nagios sur d'autres machines à distance. Vous pouvez surveiller les métriques des machines distantes telles que l'utilisation du disque, la charge du processeur, etc. Il peut également vérifier les métriques des machines Windows distantes via certains addons d'agent Windows.

Voyons comment installer et configurer NRPE étape par étape sur la machine cliente à surveiller.

Step 1 - Exécutez la commande ci-dessous pour installer NRPE sur la machine Linux distante à surveiller.

sudo apt-get install nagios-nrpe-server nagios-plugins

Step 2 - Maintenant, créez un fichier hôte dans le répertoire du serveur et mettez toutes les définitions nécessaires pour l'hôte.

sudo gedit /usr/local/nagios/etc/servers/ubuntu_host.cfg
# Ubuntu Host configuration file

define host {
   use linux-server
   host_name ubuntu_host
   alias Ubuntu Host
   address 192.168.1.10
   register 1
}

define service {
   host_name ubuntu_host
   service_description PING
   check_command check_ping!100.0,20%!500.0,60%
   max_check_attempts 2
   check_interval 2
   retry_interval 2
   check_period 24x7
   check_freshness 1
   contact_groups admins
   notification_interval 2
   notification_period 24x7
   notifications_enabled 1
   register 1
}

define service {
   host_name ubuntu_host
   service_description Check Users
   check_command check_local_users!20!50
   max_check_attempts 2
   check_interval 2
   retry_interval 2
   check_period 24x7
   check_freshness 1
   contact_groups admins
   notification_interval 2
   notification_period 24x7
   notifications_enabled 1
   register 1
}

define service {
   host_name ubuntu_host
   service_description Local Disk
   check_command check_local_disk!20%!10%!/
   max_check_attempts 2
   check_interval 2
   retry_interval 2
   check_period 24x7
   check_freshness 1
   groups admins
   notification_interval 2
   notification_period 24x7
   notifications_enabled 1
   register 1
}

define service {
   host_name ubuntu_host
   service_description Check SSH
   check_command check_ssh
   max_check_attempts 2
   check_interval 2
   retry_interval 2
   check_period 24x7
   check_freshness 1
   contact_groups admins
   notification_interval 2
   notification_period 24x7
   notifications_enabled 1
   register 1
}

define service {
   host_name ubuntu_host
   service_description Total Process
   check_command check_local_procs!250!400!RSZDT
   max_check_attempts 2
   check_interval 2
   retry_interval 2
   check_period 24x7
   check_freshness 1
   contact_groups admins
   notification_interval 2
   notification_period 24x7
   notifications_enabled 1
   register 1
}

Step 3 - Exécutez la commande ci-dessous pour la vérification du fichier de configuration.

sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Step 4 - Redémarrez NRPE, Apache et Nagios s'il n'y a pas d'erreurs.

service nagios-nrpe-server restart
service apache2 restart
service nagios restart

Step 5- Ouvrez votre navigateur et accédez à l'interface Web de Nagios. Vous pouvez voir que l'hôte qui doit être surveillé a été ajouté au service principal de Nagios. De même, vous pouvez ajouter plus d'hôtes à surveiller par Nagios.

V-Shell est une interface Web légère pour Nagios Core écrite en PHP. Il est facile à installer et à utiliser et c'est une alternative à la sortie Nagios. Le frontend de VShell est sur AngularJs, par conséquent, la conception est réactive et moderne. Il fournit la fonctionnalité Quicksearch et l'API RESTful optimisés par CodeIgniter.

Nagios VShell est compatible avec Nagios XI et Nagios Core 3.x. Il nécessite php 5.3 ou supérieur, php-cli et apache installés dans le système. Voyons comment installer Nagios VShell.

Step 1 - Allez dans le répertoire tmp et téléchargez le fichier tar vshell.

cd /tmp
wget http://assets.nagios.com/downloads/exchange/nagiosvshell/vshell.tar.gz

Step 2 - Extrayez le fichier tar.

tar zxf vshell.tar.gz

Step 3- Allez dans le répertoire vshell et donnez l'autorisation exécutable au fichier install.php. Enfin, exécutez le script d'installation.

cd vshell
chmod +x install.php
./install.php

Step 4 - Allez maintenant àhttps://192.168.56.101/vshell dans votre navigateur, connectez-vous avec nagiosadmin et votre Vshell apparaîtra.

Dans ce chapitre, examinons les études de cas de deux organisations qui ont implémenté avec succès Nagios.

Bitnetix avec Nagios

Bitnetix dans une organisation de conseil informatique spécialisée dans la mise en réseau, le centre de données, la surveillance et la voix sur IP. Grâce à leurs offres, ils donnent une image de taille aux petites entreprises. Leurs solutions vous aident à mieux gérer la relation client en augmentant l'engagement et en améliorant leur satisfaction. Ils disent qu'ils travaillent dans le domaine de la communication, c'est pourquoi il est très important pour eux de communiquer le bon message à leurs clients au bon moment.

Bitnetix travaillait avec un client qui s'intéressait au marketing par e-mail. Ils surveillaient les serveurs AWS qui étaient alloués dynamiquement et étaient chargés de fournir des milliers d'e-mails aux clients. Ils utilisaient le noyau Nagios plus tôt mais voulaient passer au nouveau Nagios XI et s'intégrer à chef sans temps d'arrêt. Il y avait des difficultés à déplacer la configuration du statut en direct sur le noyau de Nagios vers des vérifications appropriées dans Nagios XI. Mais avec Nagios, ils ont pu configurer le fichier de configuration de Nagios XI avec chef intégré. Ils ont pu déplacer tous les clients du cœur de Nagios vers Nagios XI sans temps d'arrêt. Nagios XI a également pu s'intégrer à PagerDuty pour l'envoi de notifications instantanées.

EverWatch.gobal avec Nagios

EverWatch.global est une organisation de gestion et de conseil informatique qui aide les organisations à but non lucratif et les petites / moyennes. Son siège social est basé à Rochester, New York. Ils ont remporté de nombreux prix pour leur travail avec Nagios.

EverWatch.global travaillait avec un client de commerce électronique avec un chiffre d'affaires annuel d'un milliard de dollars. Ils étaient responsables de maintenir le site Web opérationnel à tout moment, de surveiller le panier et la fonctionnalité de paiement, d'envoyer des notifications au personnel nécessaire en cas de diffamation. Le défi était que les serveurs de leurs clients étaient situés à 500 miles de son siège à New York. Pour le suivi de la production, de la mise en scène, de l'assurance qualité et du développement sur la même plateforme, les configurations étaient censées être uniques et similaires pour les deux domaines.

Avec l'aide de Nagios, ils ont pu créer des règles de pare-feu ssh pour l'équipement et le centre d'opérations réseau. Ils ont également pu effectuer des vérifications des incidents de diffamation et réduire les faux positifs. En configurant les gestionnaires d'événements dans Nagios, le nombre de notifications a considérablement diminué. Nagios les a aidés en maintenant la disponibilité du site Web de leur client à 98% par an contre 85% par an, ce fut un énorme succès.

«En termes de dollars réels, l'entreprise a ainsi pu réaliser près de 125 000 000 USD de ventes supplémentaires.» Eric Loyd, PDG d'EverWatch Global.