Bâtir pour la production: Applications Web - Surveillance

introduction

Maintenant que nous avons la configuration de notre serveur d’applications de production, un plan de récupération et des sauvegardes, examinons la possibilité d’ajouter une surveillance pour améliorer notre connaissance de l’état de nos serveurs et services. Les logiciels de surveillance, tels que Nagios, Icinga et Zabbix, vous permettent de créer des tableaux de bord et des alertes qui vous indiqueront quels composants de la configuration de votre application nécessitent votre attention. L’objectif est de vous aider à détecter les problèmes liés à votre configuration et à commencer à les résoudre avant que vos utilisateurs ne les rencontrent.

image: https: //assets.digitalocean.com/articles/architecture/production/monitoring.png [Diagramme de surveillance]

Dans ce didacticiel, nous allons configurer Nagios 4 en tant que logiciel de surveillance et installer l’agent NRPE sur les serveurs qui composent notre application.

Pour chaque serveur de notre configuration, nous allons configurer la surveillance pour vérifier si le serveur est en marche et si son processus principal (c’est-à-dire apache, mysql ou haproxy) est en cours d’exécution. Bien que ce guide de suivi ne soit pas exhaustif (vous voudrez probablement mettre en place des vérifications supplémentaires que nous ne couvrirons pas ici), c’est un excellent point de départ.

Conditions préalables

Si vous souhaitez accéder à votre tableau de bord de journalisation via un nom de domaine, créez un * A Record * sous votre domaine, tel que «monitoring.example.com», qui pointe vers l’adresse IP publique de votre serveur * monitoring *. Vous pouvez également accéder au tableau de bord de surveillance via l’adresse IP publique. Il est conseillé de configurer le serveur Web de surveillance pour utiliser HTTPS et de limiter son accès en le plaçant derrière un VPN.

Installer Nagios sur le serveur de surveillance

Configurez Nagios sur votre serveur * monitoring * en suivant ce tutoriel: https://www.digitalocean.com/community/tutorials/how-to-install-nagios-4-and-monitor-your-servers-on-ubuntu- 14-04 [Comment installer Nagios 4 et surveiller vos serveurs sur Ubuntu 14.04]. Si vous préférez, vous pouvez également utiliser https://www.digitalocean.com/community/tutorials/how-to-use-icing-to-monitor-your-servers-and-services-on-ubuntu-14-04 [ Icinga], qui est une fourchette de Nagios.

Arrêtez-vous lorsque vous atteignez la section * Surveiller un hôte Ubuntu avec NRPE *.

Ajouter des serveurs à Nagios

Sur chaque serveur de votre configuration (db1, app1, app2 et lb1), accédez à la page https://www.digitalocean.com/community/tutorials/how-to-install-nagios-4-and-monitor-your- servers-on-ubuntu-14-04 # monitor-an-ubuntu-host-with-nrpe [Surveillez un hôte Ubuntu avec NRPE] du didacticiel Nagios.

Assurez-vous d’ajouter le nom d’hôte privé ou l’adresse IP de votre serveur * monitoring * au paramètre + allowed_hosts + dans le fichier de configuration NRPE.

Lorsque vous avez terminé d’ajouter chaque hôte, vous devez créer un fichier séparé pour chaque serveur à surveiller: + db1.cfg +, + app1.cfg +, + app2.cfg + et '+ lb1.cfg + `. Chaque fichier doit contenir la définition d’hôte faisant référence au nom d’hôte et à l’adresse (qui peut être le nom d’hôte ou l’adresse IP du serveur).

Configurer la surveillance des hôtes et des services

Faisons une liste des choses communes que nous voulons surveiller sur chaque serveur. Pour chaque serveur, surveillons les * services * suivants:

  • Ping

  • SSH

  • Charge actuelle

  • Utilisateurs actuels

  • Utilisation du disque

Voyons cela maintenant.

Définir les services communs

Dans le tutoriel d’installation de Nagios, nous avons configuré Nagios pour rechercher les fichiers + .cfg + dans + / usr / local / nagios / etc / servers + (ou + / etc / icinga / objects / + pour Icinga). Pour que tout soit organisé, nous allons créer un nouveau fichier de configuration Nagios pour les services communs que nous voulons surveiller, appelé «common.cfg».

Tout d’abord, ouvrez le fichier de configuration de l’hôte pour le modifier

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

Ajoutez les définitions de service suivantes, avec le nom d’hôte de chacun de vos serveurs (défini précédemment dans les définitions d’hôte):

Configuration Nagios - Services communs

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

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

define service {
       use                             generic-service
       host_name                       ,,,
       service_description             Current Load
       check_command                   check_nrpe!check_load
}

define service {
       use                             generic-service
       host_name                       ,,,
       service_description             Current Users
       check_command                   check_nrpe!check_users
}

define service{
       use                             generic-service
       host_name                       ,,,
       service_description             Disk Utilization
       check_command                   check_nrpe!check_hda1
}

Sauvegarder et quitter.

Nous sommes maintenant prêts à définir les services spécifiques à chaque serveur. Nous allons commencer par notre serveur de base de données.

Définir le processus MySQL

Créer une commande NRPE (sur le client)

Sur votre serveur de base de données, * db1 *, nous allons configurer une nouvelle commande NRPE. Ouvrez un nouveau fichier de configuration NRPE, «Commandes.cfg»:

sudo vi /etc/nagios/nrpe.d/commands.cfg

Ajoutez la définition de commande suivante:

Configuration NRPE (Commandes.cfg) - check_mysqld

command[check_mysqld]=/usr/lib/nagios/plugins/check_procs -c 1: -C

Sauvegarder et quitter. Cela permet à NRPE de rechercher un processus nommé «mysqld» et de signaler un statut critique s’il ya moins d’un processus exécutant ce nom.

Rechargez la configuration NRPE:

sudo service nagios-nrpe-server reload
Créer une définition de service (sur le serveur)

Sur votre serveur Nagios, * monitoring *, nous avons besoin de définir un nouveau service utilisant NRPE pour exécuter la commande + check_mysqld +.

Ouvrez le fichier qui définit votre hôte de base de données. Dans notre exemple, cela s’appelle “db1.cfg”:

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

À la fin du fichier, ajoutez cette définition de service (assurez-vous que la valeur + nom_hôte + correspond au nom de la définition d’hôte):

db1.cfg - check_mysql

define service {
       use                             generic-service
       host_name
       service_description             Check MySQL Process
       check_command                   check_nrpe!check_mysqld
}

Sauvegarder et quitter. Cela configure Nagios pour qu’il utilise NRPE pour exécuter la commande check_mysqld sur le serveur de base de données.

Pour que ce changement prenne effet, nous devons recharger Nagios. Cependant, nous allons commencer par surveiller le processus Apache.

Définir le processus Apache

Créer une commande NRPE (sur le client)

Sur vos serveurs d’application, * app1 * et * app2 *, nous allons configurer une nouvelle commande NRPE. Ouvrez un nouveau fichier de configuration NRPE, «Commandes.cfg»:

sudo vi /etc/nagios/nrpe.d/commands.cfg

Ajoutez la définition de commande suivante:

Configuration NRPE (Commandes.cfg) - check_apache2

command[check_apache2]=/usr/lib/nagios/plugins/check_procs -c 1: -w 3: -C apache2

Sauvegarder et quitter. Cela permet à NRPE de rechercher un processus nommé «apache2» et de signaler un statut critique si aucun processus correspondant n’est en cours d’exécution ou de signaler un statut d’avertissement s’il existe moins de trois processus correspondants.

Rechargez la configuration NRPE:

sudo service nagios-nrpe-server reload

Veillez à répéter cette opération sur tous les serveurs d’applications supplémentaires.

Créer une définition de service (sur le serveur)

Sur votre serveur Nagios, * monitoring *, nous avons besoin de définir un nouveau service utilisant NRPE pour exécuter la commande + check_apache2 +.

Ouvrez le fichier définissant l’hôte de votre application. Dans notre exemple, ils s’appellent «app1.cfg» et «app2.cfg»:

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

À la fin du fichier, ajoutez cette définition de service (assurez-vous que la valeur + nom_hôte + correspond au nom de la définition d’hôte):

app1.cfg et app2.cfg - check_apache2

define service {
       use                             generic-service
       host_name
       service_description             Check Apache2 Process
       check_command                   check_nrpe!check_apache2
}

Sauvegarder et quitter. Ceci configure Nagios pour qu’il utilise NRPE pour exécuter la commande check_apache2 sur les serveurs d’applications. Veillez à répéter cette opération pour chacun de vos serveurs d’applications.

Pour que ce changement prenne effet, nous devons recharger Nagios. Cependant, nous allons passer à la surveillance du processus HAProxy avant cela.

Définir le processus HAProxy

Créer une commande NRPE (sur le client)

Sur votre serveur d’équilibrage de charge, * lb1 *, nous allons configurer une nouvelle commande NRPE. Ouvrez un nouveau fichier de configuration NRPE, «Commandes.cfg»:

sudo vi /etc/nagios/nrpe.d/commands.cfg

Ajoutez la définition de commande suivante:

Configuration NRPE (Commandes.cfg) - Check_haproxy

command[check_haproxy]=/usr/lib/nagios/plugins/check_procs -c 1: -C haproxy

Sauvegarder et quitter. Cela permet à NRPE de rechercher un processus nommé «haproxy» et de signaler un statut critique s’il ya moins d’un processus exécutant ce nom.

Rechargez la configuration NRPE:

sudo service nagios-nrpe-server reload

Veillez à répéter cette opération sur tous les serveurs d’applications supplémentaires.

Créer une définition de service (sur le serveur)

Sur votre serveur Nagios, * monitoring *, nous avons besoin de définir un nouveau service utilisant NRPE pour exécuter la commande + check_haproxy +.

Ouvrez le fichier qui définit votre hôte de base de données. Dans notre exemple, cela s’appelle «lb1.cfg»:

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

À la fin du fichier, ajoutez cette définition de service (assurez-vous que la valeur + nom_hôte + correspond au nom de la définition d’hôte):

lb1.cfg - check_haproxy

define service {
       use                             generic-service
       host_name
       service_description             Check HAProxy Process
       check_command                   check_nrpe!check_haproxy
}

Ceci configure Nagios pour qu’il utilise NRPE pour exécuter la commande check_haproxy sur votre serveur d’équilibrage de charge.

Pour que ce changement prenne effet, nous devons recharger Nagios.

Recharger la configuration de Nagios

Pour recharger Nagios et appliquer toutes nos modifications, entrez la commande suivante:

sudo service nagios reload

S’il n’y a pas d’erreur syntaxique dans la configuration, vous devriez être défini.

Vérifier les services Nagios

Avant de poursuivre, vous voudrez vérifier que Nagios surveille tous les hôtes et services que vous avez définis. Accédez à votre serveur Nagios via son nom d’hôte public ou son adresse IP, par exemple. + http: // monitoring. / nagios / +. Entrez l’identifiant que vous avez configuré lors de l’installation du serveur Nagios.

Dans le menu latéral, cliquez sur le lien * Services *. Vous devriez être amené à une page qui ressemble à ceci:

image: https: //assets.digitalocean.com/articles/architecture/production/lamp/services.png [Services Nagios]

Idéalement, vous verrez chaque hôte et tous les services seront dans un état «OK». Dans la capture d’écran, nous pouvons voir qu’il y a un problème avec le serveur * app2 * car il a été mis hors tension lors des vérifications d’état les plus récentes. Si certains de vos services ne sont pas «corrects», corrigez-les ou, si les services sont corrects, vérifiez si votre configuration de Nagios contient des erreurs.

autres considérations

Vous souhaiterez probablement créer un plan de récupération pour votre serveur de surveillance et sauvegarder vos fichiers de configuration Nagios (+ / usr / local / nagios / etc +). Une fois les sauvegardes configurées, vous souhaiterez probablement configurer la surveillance pour des services supplémentaires et les notifications par courrier électronique.

Conclusion

Vous devriez maintenant pouvoir voir l’état de vos serveurs et services simplement en jetant un coup d’œil sur votre tableau de bord de surveillance. En cas de panne, votre système de surveillance vous aidera à identifier le (s) serveur (s) et le (s) service (s) qui ne fonctionnent pas correctement, ce qui devrait permettre de réduire les temps d’arrêt de votre application.

Passez au didacticiel suivant pour commencer à configurer la consignation centralisée pour la configuration de votre serveur de production: Building for Production: Applications Web - Journalisation centralisée.

Related