Nous terminons notre application Web et notre planification de déploiement. Un aspect très important du déploiement de la production est de surveiller la santé du système. Avoir une petite équipe de développeurs/support rend très critique pour que nous obtenons la notifications précoces des problèmes potentiels et les résoudre avant d'avoir une incidence sur les utilisateurs.
Utiliser des coutures Nagios comme une bonne option, mais je voulais obtenir plus d'opinions sur quels sont les meilleurs outils/pratiques de surveillance de l'application Web en général et spécifiquement pour Django application? Aussi les recommandations sur ce qui devrait Soyez surveillé à part de la CPU évidente, de la mémoire, de l'espace disque, de la connectivité de la base de données.
Notre application Web est écrite à Django, nous exécutons sur Linux (Ubuntu) sous Apache + Fast CGI avec la base de données PostgreSQL.
ÉDITER Nous avons un environnement complètement virtualisé sous Linode.
ÉDITER Nous utilisons Django-Logging afin que nous ayons une façon de séparer des informations, des erreurs, des problèmes critiques, etc.
Nagios est bon, il est bon de pouvoir avoir des tests système (sélénium) en cours d'exécution régulièrement.
EDIT: HYPERIC et Taux de base aussi intéressant.
Il y a probablement un système de suites de test qui peut également utiliser la pression tout aussi pour vous. Je ne me souviens pas du nom du sommet de ma tête, peut-être que quelqu'un peut en parler un ci-dessous.
D'autres choses que j'aime faire:
La meilleure devise pour l'infrastructure est toujours corrigée, détecte, réparation. Obtenez-le, arrivez à la racine de celui-ci et guérir/l'empêcher si vous le pouvez.
Étant donné qu'un système existe à plusieurs niveaux, nous devrions tester à de nombreux niveaux:
EDIT: Ayez toutes les erreurs ou avertissements postés directement à votre gestionnaire de cas par courrier électronique. De cette façon, vous pouvez suivre les événements au même endroit.
1) connexion : Surveillez votre connectivité Internet du serveur et de l'extérieur. Connectez-vous quelque part
2) serveur : Surveillez tous les processus nécessaires pour vous assurer qu'ils sont en cours d'exécution et ne pas épingler le serveur. Utilisez un serveur HP ou quelque chose d'équivalent avec une notification d'échec du matériel qu'il peut faire à partir d'un niveau de BIOS. Notifier et se connecter s'ils sont.
3) logiciel : Identifiez le logiciel clé qui doit toujours être en cours d'exécution. Définissez les niveaux de performance le cas échéant, puis sur le surveiller. Nagios devrait être capable d'aider avec cela. Sous Windows, il peut être un peu plus. Lorsqu'une exception se produit, vous devriez pouvoir exécuter un script à partir de celui-ci pour redémarrer les processus automatiquement. Mon système de rêve me permet d'interagir avec des serveurs via SMS Si le serveur le voit comme une exception que je dois soit une exception, ou une autre qui se produira automatiquement à moins que je n'annule pas par SMS. Un jour ..
4) Remote Power : Assurez-vous que les capacités de réinitialisation de courant distante sont dans votre main. Vous voudrez peut-être planifier des redémarrages hebdomadaires si vous utilisez déjà Windows pour quoi que ce soit.
5) Test de la logique d'entreprise : Vous pouvez utiliser régulièrement des scripts testant le flux de travail de votre système. Le sélénium peut probablement en réaliser une partie de cela, mais j'aime bien connecter les résultats pour dire que cela a couru à cette époque et ces fichiers avaient des erreurs. Si possible n'importe où, faites surveiller le système sur vos scripts.
6) Backups : Faites une sauvegarde que vous pouvez définir et oublier. Si vous pouvez obtenir des choses dans des machines virtuelles, il serait idéal que vous pouvez accabler, bouger ou déployer une partie de votre infrastructure n'importe où. J'ai eu des instances où j'ai déplacé un serveur mort sur mon ordinateur portable, laissez-le courir dans VMware pendant que je corrige un problème.
Surveillance du nombre de connexions à votre serveur Web et votre base de données est une autre bonne chose à suivre. Les chances sont si 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 de disposer d'une demande régulière d'une URL qui est un test de bout en bout raisonnable du système. Si votre site prend en charge la recherche, alors Nagios exécute une recherche - qui devrait s'assurer que l'index de recherche est sain, le serveur Web et le serveur de base de données.
Assurez-vous également que vos applications vous envoient un courrier électronique à tout moment à vos utilisateurs de voir une erreur ou une exception non gérée. De cette façon, vous savez comment l'application échoue sur le terrain.
Si je devais choisir un type de test, il serait de tester la fonctionnalité de l'utilisateur final du système. La chose importante à considérer est l'utilisateur. Tout en testant des éléments tels que la disponibilité de la base de données, le poste de serveur, etc., sont tous importants, testez les flux de travail via votre système via un système de test UI distant couvre toutes ces bases. Si vous savez que les parties critiques de votre système sont disponibles pour l'utilisateur final, vous savez que votre système est prolongé.
Ce test d'utilisateur final ne devrait pas éliminer la surveillance du système dans votre centre de données, mais je souhaite réitérer que le test d'utilisateur final est le type de test le plus important que vous puissiez faire pour une application Web.
Ahhh, surveillance. Comment 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 donné, ainsi que sur des effectifs de temps (ce dernier est très important pour la détection des problèmes avant de se produire). Une autre façon d'y penser est comme des essais unitaires glorifiés.
Nous avons notre propre système de surveillance (très agréable), donc je ne peux pas commenter sur Nagios ou d'autres applications. Notre cas d'utilisation est similaire à celui de la vôtre, mais (CGI App sur Apache).
C'est tout assez élevé. L'important est que vous ayez une histoire de l'état de l'application au fil du temps. À partir de là, vous pouvez ensuite créer des règles (peut-être que des requêtes SQL brutes que vous mettez dans une configuration quelque part), qui disent "si les requêtes par seconde ont doublé, envoyez une alerte SLASHDOTTED" ou "si 50% des réponses sont 404, envoyez une alerte". Il lit également la gestion parce que vous pouvez quantifier tout commentaire sur la question de savoir si elle est haut, bas, rapide ou lente.
Les activités suivantes comprennent (d'autres personnes les ont probablement mentionnées également): État HTTP, port accessible à HTTP, charge HTTP, charge de la base de données, connexion ouverte, latence de la requête, accessibilité du serveur (ssh, ping), requêtes par seconde, nombre de processus de travail, pourcentage d'erreur , taux d'erreur.
Des tests simples de bout en bout sont également très utiles, bien qu'ils puissent être fragiles. Il est préférable de les garder simples, mais vous devez en avoir un qui tente de toucher les pièces de base de l'application (mise en cache, base de données, authentification).
La journalisation interne est fine et dandy, mais lorsque toute votre application diminue ou votre boîte/Enviro vous bloque, vous avez également besoin d'un chèque extérieur. http://www.pressdom.com/ a été très fiable pour moi.
Mon seul autre conseil est que je ne passerais pas Trop Temps à ce sujet. Mon meilleur exemple est Twitter, quelle quantité d'énergie a-t-elle été mise dans le système pouvant être capable de devenir à moitié mortelle au lieu d'investir ce temps et de l'énergie à jeter plus de matériel/à l'échec.
Les chances sont ce qui finit par vous enlever, vos systèmes de journalisation et de santé auront quand même manqué.
Le moyen le plus important de surveiller tous les sites en ligne est de surveiller l'extérieur. L'objectif devrait être de surveiller votre site d'une manière qui reflète le mieux la façon dont vos utilisateurs utilisent le site. Dans 99% des cas, dès que vous savez que votre site est à l'extérieur, il est relativement facile de trouver la cause racine. La chose la plus importante est de savoir le plus tôt possible que vos clients ne parviennent pas à charger votre site.
Cela signifie généralement l'utilisation d'un service de surveillance de la performance externe. Ils très du très bas de gamme (mon.itor.us, Pingdom) à l'extrémité supérieure (Webmetrics, Gomez, Keynote). Et comme toujours, vous obtenez ce que vous payez. Les choses à chercher lorsque vous magasinez pour un service de surveillance comprennent:
Bonne chance!
Surveillance Web par Patrol IP ou SitesEntry ont été utiles pour nous. La seconde est un peu comme le site confiance mais légèrement plus jolie lol.
En plus de ce qu'il faut surveiller, qui a déjà été répondu, vous devez vous assurer que vous utilisez uniquement - que vous obtenez seulement une notification d'une erreur qui se produit plusieurs fois, sur chaque demande. Ou votre boîte de réception va sortir de la mémoire :) plus, c'est un simple ennuyeux ...
Divisez les changements de secours parmi l'équipe Support/Dev, une personne ne doit donc pas nécessairement être appelée chaque soir. Cela portera des gens vers le bas. La surveillance est un bonne chose, mais tout le monde a besoin d'avoir une chance d'avoir une vie de temps en temps. Votre téléphone portable bourdonnant à 2 heures du matin pendant quelques nuits obtiendrez très vieille belle bientôt, croyez-moi. Et tous les développeurs ne sont pas utilisés pour le support 24/7, vous devez donc trouver l'équilibre entre utiliser la surveillance et la suppression de la surveillance.
Fondamentalement, avoir des niveaux d'escalade distincts, et si le ciel ne tombe pas, définissez une " sérénité maintenant " La fenêtre la nuit où des niveaux d'escalade plus petits ne sortent pas.
Avez-vous pensé à surveiller la fonctionnalité aussi? Un script (soit dans un langage de script comme Perl ou Pyton ou à l'aide de certains outils comme WebTest ) qui parle à votre application et fait quelques étapes importantes comme la connexion à la journalisation, de faire un achat, etc. est très agréable d'avoir .
J'utilise Nagios + Cruisecontrol + sélénium pour exécuter des tests de haut niveau sur des applications Web critiques. J'ai été brûlé assez fort par une simple erreur de jQuery qui empêchait les utilisateurs de procéder à un formulaire d'inscription en ligne.
http://www.agileatwork.com/tholy-trinity-Of-Web-2-0-Application-Monitoring/
Vous pouvez jeter un coup d'œil à AlertGrid . Cette application Web vous permet de filtrer et de transférer des alertes à votre équipe (dans le monde entier). Il a également une bonne capacité à surveiller si quelque chose ne s'est pas produit.
il est bon d'avoir peut-être des tests système (sélénium) en cours d'exécution régulièrement.
=> 100% ack. Nous utilisons http://www.alertfox.com pour cela. Avec notre compte Pro2, ils gèrent un test de régression jamais 1H qui est génial. Vous pouvez même le faire avec leur compte gratuit, mais ne sont limités qu'à un seul capteur de transaction.
Pour paraphraser Richard Levasseur: Ah, outils de surveillance, comment vos imperfections me frustre. Il ne semble pas y avoir un outil parfait; Nagios est assez facile à mettre en place, mais l'interface utilisateur est un peu vieux jeu et vous devez avoir un démon en cours d'exécution sur chaque serveur surveillé. ZENOSS a une interface utilisateur beaucoup plus agréable, y compris des graphiques de tendance d'utilisation des ressources, mais il utilise SNMP afin que vous puissiez avoir une certaine familiarité avec cela pour le faire fonctionner correctement et que la documentation n'est pas la meilleure - il y a des centaines des pages mais il est vraiment difficile de trouver uniquement les informations dont vous avez besoin pour commencer.
Les amis de la mine ont également recommandé cacti et hyperic , mais je n'ai pas d'expérience personnelle avec ceux-ci.
Une dernière chose - l'une des autres réponses suggérées à exécuter un outil qui souligne votre site. Je ne recommanderais pas de faire cela sur votre site en direct, sauf si vous avez une période de calme fiable lorsque personne ne le frappe; Même alors, vous pourriez l'amener inopinément. Bien mieux d'avoir un serveur de mise en scène dans lequel vous pouvez exécuter des tests de charge avant de mettre des modifications à la production.
J'ajouterais simplement que vous pouvez prédire un peu de probabilité d'erreur en fonction de l'histoire des erreurs passées et de les avoir réparées. Avec des tests internes à petite échelle si vous deviez graphiquement graphiquement la fréquence et la gravité des problèmes qui ont été corrigés à ce point, vous aurez un aperçu des nouveaux problèmes prévisibles. Si tout a fonctionné sans erreur pendant un certain temps, les deux sources de problèmes seraient des changements récents ou des problèmes d'évolutivité.
De ce qui précède, cela ressemble à l'évolutivité est votre seul inquiétude, mais je mentionne simplement le test de fréquence des erreurs passées, car les équipes que j'ai constatées sont invariablement pensées qu'ils ont obtenu la dernière erreur corrigée et qu'il n'y en a plus. Jusqu'à ce qu'il y ait.
Un de nos clients utilise Techout (www.techout.com) et est très satisfait du service.
Il n'y a pas de frais pour les alertes, quel que soit le genre ou le nombre quelconque, et ils offrent un email, une messagerie vocale et SMS Alertes - et si quelque chose de major se produit, un appel téléphonique d'une personne vivante pour aider tu sors.
Tout est basé sur le service - vous n'installez pas le logiciel et vous avez un consultant qui travaille avec vous pour déterminer la meilleure approche pour votre entreprise. C'est l'un des services les plus pratiques surveillance des applications Web car ils s'occupent de tout.
Changer la ligne un peu, quelque chose que je pense vraiment est utile et changé beaucoup comment je surveillez mes applications consiste à enregistrer des exceptions javascript quelque part. Il y a une très belle implémentation qui se connecte directement à partir de navigateurs d'utilisateurs à Google Analytics. Ceci est un must pour les applications Web centrées sur JavaScript et peut vous donner des résultats basés directement sur les navigateurs de l'utilisateur Ce qui peut conduire à des erreurs très inattendues (c'est-à-dire et navigateur mobile.
Disclaimer: mon post ci-dessous
http://www.directperformance.com.br/fr/javascript-debug-simples-com-google-analytics