77 votes

Meilleures pratiques de contrôle des applications de Web

Nous sommes en train de finir notre application web et de la planification pour le déploiement. Aspect très important de déploiement de la production est la surveillance de la santé de la système. Ayant une petite équipe de développeurs/support rend très important pour nous d'obtenir le début des notifications d'éventuels problèmes et de les résoudre avant qu'ils n'aient un impact sur les utilisateurs.

À l'aide de Nagios coutures comme une bonne option, mais je voulais obtenir plus d'opinions sur quels sont les meilleurs outils de suivi/pratiques de l'application web en général, et en particulier pour Django app? Aussi serait la bienvenue recommandations sur ce qui doit être surveillé à part bien évidemment le PROCESSEUR, la mémoire, l'espace disque, de la connectivité de base de données.

Notre application web est écrit dans Django, nous sommes en cours d'exécution sur Linux (Ubuntu) sous Apache + Fast CGI avec une base de données PostgreSQL.

MODIFIER Nous avons complètement un environnement virtualisé sous Linode.

MODIFIER Nous sommes à l'aide de django d'enregistrement de sorte que nous avons une façon distincte info, les erreurs, les problèmes critiques, etc.

37voto

Jas Panesar Points 5949

Nagios est bon, c'est peut-être bon de système de tests (Selenium) fonctionnant régulièrement.

Edit: Hyperic et des Bases aussi intéressante.

Il y a probablement une suite de test système test de pression tout aussi bien pour vous. Je ne me souviens pas le nom sur le dessus de ma tête, peut-être quelqu'un peut citer celui ci-dessous.

D'autres choses que j'aime faire:

Le meilleur slogan pour l'infrastructure est toujours corriger, détecter, réparer. Se lever, aller à la racine, et de guérir ou de prévenir si vous le pouvez.

Depuis un système existe à plusieurs niveaux, nous devrions tester à plusieurs niveaux:

Edit: toutes les erreurs ou les avertissements affichés directement à votre gestionnaire de cas via e-mail. De cette façon, vous pouvez suivre les événements en un seul endroit.

1) Connexion : moniteur de la connectivité à internet à partir du serveur et de l'extérieur. Journal de cela quelque part

2) Serveur : surveiller tous les processus que vous avez besoin pour s'assurer qu'ils sont en cours d'exécution et ne donne pas le serveur. L'utilisation d'un Serveur HP ou quelque chose d'équivalent avec le matériel notification d'échec qu'il peut faire à partir d'un niveau du bios. Informer et journal s'ils sont.

3) Logiciel : Identifier les principaux logiciels qui doit toujours être en cours d'exécution. Définir les niveaux de performance, le cas échéant, et ensuite de les surveiller. Nagios doit être en mesure d'aider avec cela. Sur windows, il peut être un peu plus. Lorsqu'une exception se produit, vous devriez être en mesure d'exécuter un script pour redémarrer les processus automatiquement. Mon rêve système me permet d'interagir avec les serveurs via SMS si le serveur ne voit en elle qu'une exception que je dois soit permis, ou celui qui va arriver automatiquement à moins que je annuler par sms. Un jour..

4) Alimentation de la Télécommande : Assurer à Distance la réinitialisation de l'alimentation capacités sont dans votre main. Vous pouvez planifier hebdomadaire redémarre si jamais vous utilisez windows pour quoi que ce soit.

5) la Logique Métier de Test : Avez régulièrement l'exécution de scripts de test le flux de travail de votre système. Le sélénium peut probablement obtenir un peu de ceci, mais j'ai comme l'exploitation forestière, les résultats ainsi dire ceci couru à cette époque et ces fichiers a des erreurs. Si possible n'importe où, ont le moniteur système lui-même par le biais de vos scripts.

6) les Sauvegardes : Faire une copie de sauvegarde que vous pouvez régler et oublier. Si vous pouvez obtenir des choses dans des machines virtuelles, il serait idéal que vous pouvez redimensionner, déplacer, ou de déployer une partie de votre infrastructure n'importe où. J'ai eu des cas où j'ai déménagé morts serveur sur mon ordinateur portable, le laisser courir dans vmware tandis que je fixe un problème.

13voto

Cameron Pope Points 3375

Le suivi du nombre de connexions à votre serveur Web et votre base de données est une autre bonne chose à suivre. Les Chances sont que si l'on tire à travers le toit, quelque chose meurt de faim pour les ressources et le site est sur le point de descendre.

Assurez-vous également que vous avez une demande régulière d'une URL qui est raisonnable bout-à-bout d'essai du système. Si votre site prend en charge la recherche, alors nagios exécuter une recherche qui devrait assurez-vous que l'index de recherche est en bonne santé, le serveur Web et le serveur de base de données.

Assurez-vous également que vos applications vous envoie un courriel en tout temps à vos utilisateurs de voir une erreur, ou s'il est une exception non gérée. De cette façon, vous savez la façon dont l'application est défaillant dans le domaine.

12voto

Jason Jackson Points 11563

Si je devais choisir un seul type de test, il serait de tester les fonctionnalités de l'utilisateur final du système. La chose importante à considérer est l'utilisateur. Lors de tests sur des choses comme la disponibilité de base de données, serveur de temps, etc, sont tous importants, les travaux de contrôle des flux par le biais de votre système par l'intermédiaire d'une unité à distance système de test couvre toutes ces bases. Si vous savez que les parties critiques de votre système sont disponibles pour l'utilisateur final, alors vous savez que votre système est pro Ok.

  1. Identifier le travail important flux de votre système. Par exemple, si vous avez écrit un site de commerce électronique, vous pouvez définir un flux de travail de "recherche de produit, mettez le produit dans le panier, et l'achat de produits".
  2. Donner la priorité au travail-flux, et construire de priorité plus élevée premiers tests. Vous pouvez toujours ajouter des tests supplémentaires après le déploiement de la production.
  3. Construire l'INTERFACE utilisateur à l'aide de tests d'INTERFACE utilisateur de test de cadres. Il y a un certain nombre de libres et commerciaux INTERFACE utilisateur de test cadres de qui peut être exécuté de manière automatisée. Construire un ensemble de tests d'abord que l'adresse de travail de critique-flux.
  4. L'installation d'au moins un emplacement à distance à partir de laquelle pour l'exécution des tests. Vous souhaitez tester tous les aspects de votre système, ce qui signifie que les tests à distance. Une connexion à internet? Est le serveur web en cours d'exécution? Est la connexion au serveur de base de données de travail? Etc, etc. Si vous essai à distance, vous assurez-vous que votre système est disponible pour le monde extérieur, ce qui signifie qu'il est plus probable de travail de bout en bout. Vous pouvez également exécuter ces tests en interne, mais je pense qu'il est essentiel de les faire fonctionner à l'extérieur.
  5. Assurez-vous que votre solution comprend à la fois de déclaration et de notification. Si l'un de vos critiques flux de travail des tests échoue, vous voulez quelqu'un pour savoir à ce sujet afin de résoudre le problème dès que possible. Si une non-critique de la tâche échoue, peut-être que vous ne voulez rapports de sorte que vous pouvez résoudre les problèmes out-of-band.

Cette fin-des-test utilisateur ne doit pas éliminer la surveillance du système dans votre centre de données, mais je tiens à rappeler que les essais est le plus important type de test que vous pouvez faire pour une application web.

8voto

Richard Levasseur Points 5428

Ahhh, la surveillance. Combien je t'aime et vos vibrations à 3h du matin.

Essentiellement, vous avez besoin d'un moyen d'inspecter l'état interne de votre application, à la fois à un moment précis, ainsi que sur des intervalles de temps (ce dernier point est très important pour détecter les problèmes avant qu'ils surviennent). Une autre façon de penser, il est comme des machines de tests unitaires.

Nous avons notre propre (très agréable) système de surveillance, donc je ne peux pas commenter sur Nagios ou d'autres applications. Notre cas d'utilisation est semblable à la vôtre, si (cgi application sur un serveur apache).

  1. Ajouter un enregistrement.moniteur (le) type de méthode, qui va enregistrer les informations sur le disque. Cela devrait faciliter, à tout le moins, l'enregistrement simple de nombres et de chiffres dicts (la clé=>valeur de l'association peut être incroyablement utile).
  2. Avoir un processus qui racle les journaux de contrôle et les stocke dans une base de données.
  3. Avoir un processus qui prend les informations de base de données, des contrôles contre les règles, et envoie des alertes. Gardez à l'esprit que certaines choses peuvent être feuilletée. Juste parce que vous avez un 404 une fois ne signifie pas que l'application vers le bas.
  4. Avoir un moyen pour désactiver les alertes (très utile pour la maintenance ou pour lire votre courrier).

C'est tout joli haut niveau. La chose importante est que vous avez une histoire de l'état de l'application au fil du temps. À partir de cela, vous pouvez alors créer des règles (peut-être juste cru requêtes sql que vous mettez dans une config quelque part), qui disent que "Si les requêtes par seconde doublé, envoyer un SlashDotted d'alerte", ou "si 50% des réponses sont 404, d'envoyer une alerte". Il a également bedazzles de gestion parce que vous pouvez quantifier un commentaire à propos de savoir si son haut, bas, rapide ou lente.

Les choses à surveiller sont (d'autres sans doute mentionné ci): le statut http, port accessible, http charge de, charge de base de données, ouvrir la connexion, la latence des requêtes, le serveur d'accessibilité (ssh, ping), les requêtes par seconde, le nombre de processus de travail, le pourcentage d'erreur, le taux d'erreur.

Simple de bout en bout, des tests sont également très pratiques, mais ils peuvent être fragiles. De son mieux pour garder simple, mais vous devez vous en avez un qui essaie de toucher les pièces maîtresses de l'application (mise en cache, base de données, l'authentification).

6voto

Carl Meyer Points 30736

J’utilise Munin et Monitet ont été très heureux tous les deux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X