Comment surveiller les alertes Nagios avec Alerta sur Ubuntu 16.04

introduction

Alerta est une application Web permettant de consolider et de dédupliquer les alertes provenant de plusieurs systèmes de surveillance et de les visualiser sur un seul écran. Alerta peut s’intégrer à de nombreux outils de surveillance bien connus, tels que Nagios, Zabbix, Sensu, InfluxData Kapacitor, et bien d’autres.

Dans ce didacticiel, vous allez configurer Alerta et le configurer pour afficher les notifications de http://nagios.org [Nagios], le système de surveillance populaire à code source ouvert.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin de:

Étape 1 - Installation de la passerelle Nagios-to-Alerta

Vous pouvez étendre la fonctionnalité de Nagios avec les modules Nagios Event Broker (NEB). NEB est le mécanisme d’intégration d’événements de Nagios et ses modules sont des bibliothèques partagées qui vous permettent d’intégrer d’autres services à Nagios. Dans cette étape, nous allons installer Nagios à Alerta Gateway, le module de l’ONÉ qui enverra des notifications à Alerta.

Connectez-vous à votre serveur Nagios en tant qu’utilisateur non root:

ssh sammy@

La passerelle Nagios vers Alerta n’a pas de paquet système préconfiguré, vous devrez donc le construire à partir de la source. Pour ce faire, vous devrez installer des outils de développement et des fichiers. Git doit également être installé pour pouvoir extraire le code source de GitHub.

sudo apt-get install -y git curl gcc make libcurl4-openssl-dev

Une fois les conditions préalables installées, utilisez Git pour cloner le code source à partir du référentiel GitHub du projet:

git clone https://github.com/alerta/nagios-alerta.git

Ensuite, passez au nouveau répertoire + nagios-alerta +:

cd nagios-alerta

Puis compilez le module + nagios-alerta + en utilisant + make +:

make nagios4

Vous verrez le résultat suivant:

Outputcd ./src && make nagios4
make[1]: Entering directory '/home/sammy/nagios-alerta/src'
gcc -fPIC -g -O2 -DHAVE_CONFIG_H -I../include -I../include/nagios4 -lcurl -o alerta-neb.o alerta-neb.c -shared  -lcurl
make[1]: Leaving directory '/home/sammy/nagios-alerta/src'

Si vous voyez quelque chose de différent, assurez-vous que toutes les conditions préalables sont installées.

Maintenant, lancez la tâche d’installation:

sudo make install

Vous verrez cette sortie, indiquant que le module a été installé dans + / usr / lib / nagios +:

Outputcd ./src && make install
make[1]: Entering directory '/home/sammy/nagios-alerta/src'
[ -d /usr/lib/nagios ] || mkdir /usr/lib/nagios
install -m 0644 alerta-neb.o /usr/lib/nagios
make[1]: Leaving directory '/home/sammy/nagios-alerta/src'

Avec le module installé, nous pouvons configurer Nagios pour utiliser ce nouveau module.

Étape 2 - Configurer la passerelle Nagios-to-Alerta

Configurons Nagios pour qu’il envoie des messages de notification à Alerta.

Commencez par activer le module de courtier Alerta nouvellement installé dans le fichier de configuration principal de Nagios. Ouvrez le fichier de configuration Nagios dans votre éditeur:

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

Recherchez la section contenant les directives + broker_module +:

/usr/local/nagios/etc/nagios.cfg

...
# EVENT BROKER MODULE(S)
# This directive is used to specify an event broker module that should
# by loaded by Nagios at startup.  Use multiple directives if you want
# to load more than one module.  Arguments that should be passed to
# the module at startup are separated from the module path by a space.
#
[...]
#broker_module=/somewhere/module1.o
#broker_module=/somewhere/module2.o arg1 arg2=3 debug=0
...

Pour configurer le module Alerta, vous devez fournir deux arguments obligatoires:

Ajoutez cette ligne au fichier pour configurer l’intégration Alerta:

/usr/local/nagios/etc/nagios.cfg

...
broker_module=/usr/lib/nagios/alerta-neb.o http:// key=
...

Vous pouvez également spécifier d’autres arguments facultatifs:

  • * env *: Ceci spécifie le nom de l’environnement. Le nom de l’environnement par défaut est + Production.

  • * hard_only *: Transfère les résultats dans l’état Hard uniquement. Vous pouvez trouver plus d’informations sur les types d’état Nagios à l’adresse dans la documentation Nagios. Définissez ceci sur + 1 + pour activer ce mode.

  • * debug *: - active le mode debug pour le module. Définissez ceci sur + 1 + pour activer ce mode.

Pour spécifier toutes ces options, utilisez plutôt cette ligne:

/usr/local/nagios/etc/nagios.cfg

...
broker_module=/usr/lib/nagios/alerta-neb.o http:// key= env= hard_only= debug=
...

Enregistrez le fichier et quittez l’éditeur.

Pour identifier les alertes par nom d’environnement et de service, vous devez configurer ces noms à l’aide de Nagios https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/4/en/customobjectvars.html [ Variables d’objet personnalisé]. Pour ce faire, utilisez les variables + _Environment + et + _Service + dans votre configuration. Laissons les configurer maintenant.

Ouvrez le fichier de configuration d’objet hôte Nagios par défaut, que vous trouverez dans le répertoire + / usr / local / nagios / etc / objects / +:

sudo vi /usr/local/nagios/etc/objects/localhost.cfg

Nous marquerons toutes les alertes avec cet hôte comme des alertes * Production * et nous appellerons le service par défaut * Nagios *. Recherchez la définition d’hôte suivante:

/usr/local/nagios/etc/objects/localhost.cfg

...
define host{
       use                     linux-server            ; Name of host template to use
                                                       ; This host definition will inherit all variables that are defined
                                                       ; in (or inherited by) the linux-server host template definition.
       host_name               localhost
       alias                   localhost
       address                 127.0.0.1
       }

...

Ajoutez les valeurs + _Environment + et + _Service + à la configuration:

/usr/local/nagios/etc/objects/localhost.cfg

...
       host_name               localhost
       alias                   localhost
       address                 127.0.0.1


       }
...

Marquez maintenant tous les événements associés à un manque d’espace sur la partition système en tant qu’alerte * System *. Localisez cette section du fichier qui définit comment vérifier l’espace disponible:

/usr/local/nagios/etc/objects/localhost.cfg

...
define service{
       use                             local-service         ; Name of service template to use
       host_name                       localhost
       service_description             Root Partition
       check_command                   check_local_disk!20%!10%!/
       }
...

Modifiez-le pour l’associer au service + System +:

/usr/local/nagios/etc/objects/localhost.cfg

...
define service{
       use                             local-service         ; Name of service template to use
       host_name                       localhost
       service_description             Root Partition
       check_command                   check_local_disk!20%!10%!/

       }
...

Enregistrez le fichier et quittez l’éditeur. Redémarrez Nagios pour appliquer ces nouveaux paramètres:

sudo systemctl restart nagios.service

Consultez le fichier journal Nagios pour vous assurer que le service fonctionne correctement:

tail /usr/local/nagios/var/nagios.log

Vous verrez le résultat suivant:

Output...
[1505804481] [alerta] Initialising Nagios-Alerta Gateway module, v3.5.0
[1505804481] [alerta] debug is on
[1505804481] [alerta] states=Hard (only)
[1505804481] [alerta] Forward service checks, host checks and downtime to http://your_alerta_server_ip/api
[1505804481] .
[1505804481] Successfully launched command file worker with pid 25416

Maintenant, Nagios enverra une notification dès que tout système ou service sera désactivé. Générons un événement test.

Étape 3 - Générer une alerte de test pour vérifier l’intégration de Nagios-Alerta

Générons une alerte test pour s’assurer que tout est connecté. Par défaut, Nagios assure le suivi de la quantité d’espace disque disponible sur votre serveur. Nous allons créer un fichier temporaire assez volumineux pour déclencher une alerte d’utilisation du système de fichiers de Nagios.

Tout d’abord, déterminez l’espace libre dont vous disposez sur le serveur Nagios. Vous pouvez utiliser la commande + df + pour découvrir:

df -h

Vous verrez une sortie comme celle-ci:

Output    Filesystem      Size  Used Avail Use% Mounted on
   /dev/vda1        20G  3.1G      17% /

Regardez la quantité d’espace libre disponible. Dans ce cas, l’espace libre est + 16 Go +. Votre espace libre peut différer.

Utilisez la commande + fallocate + pour créer un fichier occupant plus de 80% de l’espace disque disponible, ce qui devrait suffire à déclencher l’alerte:

fallocate -l 14G /tmp/temp.img

En quelques minutes, Nagios déclenchera une alerte concernant la quantité d’espace disque disponible et enverra le message de notification à Alerta. Vous verrez cette nouvelle notification dans le tableau de bord Alerta:

image: https: //assets.digitalocean.com/articles/alerta_nagios_cent7/xPCO3K0.png [Alerte affichant l’alerte d’espace libre de Nagios]

Maintenant que vous savez que les alertes fonctionnent, supprimez le fichier temporaire que vous avez créé afin de pouvoir récupérer votre espace disque:

rm -f /tmp/temp.img

Après une minute, Nagios enverra le message de récupération. L’alerte disparaîtra alors du tableau de bord principal Alerta, mais vous pouvez afficher tous les événements fermés en sélectionnant * Fermé *.

image: https: //assets.digitalocean.com/articles/alerta_nagios_cent7/NrCfEUV.png [Alertes fermées d’Alerta]

Vous pouvez cliquer sur la ligne d’événement pour afficher plus de détails.

Conclusion

Dans ce tutoriel, vous avez configuré Nagios pour envoyer des notifications à un autre serveur exécutant Alerta.

Alerta vous offre un emplacement idéal pour suivre les alertes de nombreux systèmes. Par exemple, si certaines parties de votre infrastructure utilisent Nagios et que d’autres utilisent Zabbix, vous pouvez fusionner les notifications des deux systèmes dans un seul panneau.