Nagios est fournis avec une large gamme de scripts intégrés à l’application pour des services de surveillances. Ce tutoriel couvrira le processus d’utilisation de certains de ces scripts de vérification de services communs tels que MySQL, le serveur internet Apache, DNS, etc.
Pour garder cet article spécifique à la surveillance de services, nous ne configurerons pas de groupes d’hôtes ou de modèles, dans la mesure où le sujet a déjà été expliqué dans des tutoriels antérieurs. Ils peuvent néanmoins être mentionnés pour répondre aux exigences du présent article.
Exécuter Nagios Check en CLI
Il est généralement conseillé d’exécuter les scripts de surveillance de services Nagios en CLI avant de les ajouter à Nagios. Cela donnera une idée du succès de l’exécution et du résultat du script auquel s’attendre.
Tous les scripts sont situés dans /etc/nagios-plugins/config/ avec les fichiers exécutables situés dans /usr/lib/nagios/plugins/
Voici comment faire.
root@nagios:~# cd /etc/nagios-plugins/config/
Les scripts fournis contiennent de l’aide sur la syntaxe. L’exemple contient un résultat partiel.
root@nagios:~# cat /etc/nagios-plugins/config/tcp_udp.cfg
# 'check_tcp' command definition
define command{
command_name check_tcp
command_line /usr/lib/nagios/plugins/check_tcp -H '$HOSTADDRESS$' -p '$ARG1$'
Maintenant que la syntaxe est disponible, le port 80 de TCP peut être vérifié comme suit.
root@nagios:~# /usr/lib/nagios/plugins/check_tcp -H 10.10.10.1 -p 80
TCP OK - 0.000 second response time on port 80|time=0.000222s;;;0.000000;10.000000
Exemple de topologie
Dans ce tutoriel, nous utiliserons les trois serveurs ci-dessous. Chacun de ces serveurs exécute un ou plusieurs services communs. Le serveur Nagios fonctionne sur Ubuntu.
- Serveur 1 (10.10.10.1) : MySQL, Apache2
- Serveur 2 (10.10.10.2) : Postfix, Apache2
- Serveur 3 (10.10.10.3) : DNS
Premièrement, les serveurs sont définis sur Nagios.
root@nagios:~# vim /etc/nagios3/conf.d/example.cfg
define host{
use generic-host
host_name test-server-1
alias test-server-1
address 10.10.10.1
}
define host{
use generic-host
host_name test-server-2
alias test-server-2
address 10.10.10.2
}
define host{
use generic-host
host_name test-server-3
alias test-server-3
address 10.10.10.3
}
Service de surveillance MySQL
Les critères de surveillance MySQL
- Surveiller si MySQL fonctionne en vérifiant le port 3306.
- Surveiller la disponibilité de certaines bases de données ‘testDB’.
Réglage du serveur MySQL
Lorsqu’il s’agit de vérifier MySQL, il faut garder à l’esprit que MySQL, par défaut, n’écoute que l’interface de loopback 127.0.0.1. Cela augmente la sécurité de la base de données. Un réglage manuel est nécessaire pour indiquer à MySQL qu’il lui faut écouter d’autres interfaces aussi. Voici comment ça peut être fait.
Ce réglage est exécuté sur tous les serveurs MySQL.
root@nagios:~# vim /etc/mysql/my.cnf
La ligne suivante est dé-commentée pour que MySQL écoute toutes les interfaces.
#bind-address = 127.0.0.1
De même, MySQL ne laissera pas n’importe quel hôte s’y connecter. Un utilisateur ‘nagios’ est créé à la fois pour l’hôte local et pour ‘tout’ hôte. Cet utilisateur a ainsi accès à toutes les bases de données et sera utilisé pour la surveillance.
Les réglages suivants sont faits pour tous les serveurs MySQL.
root@nagios:~# mysql -u root –p
## MySQL root password here ##
Un utilisateur ‘nagios@localhost’ est créé dans le serveur MySQL.
mysql> CREATE USER 'nagios'@'localhost' IDENTIFIED BY 'nagios-pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'nagios'@'localhost';
Un utilisateur ‘nagios@any-host’ est créé.
mysql> CREATE USER 'nagios'@'%' IDENTIFIED BY 'nagios-pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'nagios'@'%';
mysql> FLUSH PRIVILEGES;
Cela devrait activer l’écoute de MySQL sur toutes les interfaces, de même qu’accepter des nouvelles connexions de l’utilisateur ‘nagios’ vers n’importe quel hôte.
Notez qu’il y a des implications de sécurité possibles en raison de ce changement, il est donc nécessaire de vous préciser ceci :
- Ce réglage exposera MySQL à toutes les interfaces disponibles, WAN inclue. Il est vital de faire en sorte que seuls les réseaux légitimes aient accès à la base de données. Des filtres tels qu’un pare-feu et des wrappers TCP devraient être utilisés.
- Le mot de passe de l’utilisateur ‘nagios’ sur MySQL doit être très fort. S’il y a peu de serveurs MySQL, il faudrait alors créer l’utilisateur MySQL ‘nagios@servername’ plutôt que ‘nagios@%’ par exemple, n’importe quel hôte.
Configuration de Nagios pour MySQL
Le réglage suivant devrait faire l’affaire.
root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
define service{
use generic-service
host_name test-server-1
;hostgroup can be used instead as well
service_description Check MYSQL via TCP port
check_command check_tcp!3306
}
define service{
use generic-service
host_name test-server-1
;hostgroup can be used instead as well
service_description Check availability of database 'testDB'
check_command check_mysql_database!nagios!nagios-pass!testDB
;check_mysql!userName!userPassword!databaseName
}
De cette manière, Nagios peut aider à surveiller l’accessibilité à la fois des serveurs MySQL et de la base de données stockée sur les serveurs.
Surveiller un serveur web Apache
Nagios peut être utilisé pour aussi surveiller un serveur web Apache.
Les critères de surveillance Apache
- Surveiller si le serveur apache est accessible.
Cette tâche est vraiment facile comme Nagios dispose d’une commande intégrée pour cela.
root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
define service{
use generic-service
host_name test-server-1, test-server-2
service_description Check Apache Web Server
check_command check_http
}
C’était vraiment simple!
Surveiller le service DNS
Nagios peut surveiller un service DNS en demandant au serveur DNS soit de résoudre un FQDN, soit d’utiliser l’outil dig. Le FQDN par défaut utilisé pour le test est www.google.com, mais il peut être changé si besoin. Le fichier suivant peut être modifié si besoin.
root@nagios:~# vim /etc/nagios-plugins/config/dns.cfg
## The -H portion can be modified to replace Google ##
define command{
command_name check_dns
command_line /usr/lib/nagios/plugins/check_dns -H www.google.com -s '$HOSTADDRESS$'
}
Ensuite, éditez le fichier suivant.
root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
## Nagios asks server-3 to resolve the IP for google.com ##
define service{
use generic-service
host_name test-server-3
service_description Check DNS
check_command check_dns
}
## Nagios asks server-3 to dig google.com ##
define service{
use generic-service
host_name test-server-3
service_description Check DNS via dig
check_command check_dig!www.google.com
}
Surveiller les serveurs de messagerie électronique
Nagios peut surveiller différents serveurs de messagerie électronique, tels que SMTP, POP, IMAP et mailq. Tel que nous l’avons mentionné plut tôt, le server-2 dispose d’un serveur de messagerie électronique postfix. Nagios sera configuré pour surveiller SMTP et la liste de mails du serveur.
root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
define service{
use generic-service
host_name test-server-2
service_description Check SMTP
check_command check_smtp
}
define service{
use generic-service
host_name test-server-2
service_description Check Mail Queue
check_command check_mailq_postfix!50!100
;warning at 50, critical at 100
}
La capture d’écran suivante donne un aperçu complet de toutes les vérifications de services qui ont été configurées jusqu’à présent.
Surveillances basées sur des ports d’applications personnalisées
Supposons que l’application personnalisée qui suit fonctionne également sur le réseau, écoutant sur un port particulier.
- Test Server 1 : application personnalisée (Port TCP 12345)
Avec un peu de peaufinage, Nagios peut également aider à surveiller ce port d’application.
root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg
define service{
use generic-service
host_name test-server-1
service_description Check server 1 custom application
check_command check_tcp!12345
}
Conclusion
En conclusion, Nagios peut surveiller plein d’autres secteurs d’un réseau. Les scripts stockés sur /etc/nagios-plugins/config/ peuvent éclairer sur les possibilités fantastiques de Nagios.
Certains des scripts fournis avec Nagios sont restreints au serveur local uniquement. Les exemples incluent la charge d’un serveur, le nombre de processus simultanés, le nombre d’utilisateurs connectés. Ces vérifications peuvent fournir un aperçu utile de ce qui se passe dans le serveur Nagios.
J’espère que tout cela vous sera utile.
Article originale de: Sarmed Rahman