Tout foire tout le temps. Le site (ou app) sans erreur n’existe pas. Après chaque mise à jour on croise les doigts et on espère que tout va bien se passer.
Les plus courageux auront fait des tests unitaires en amont qu’ils lanceront avant l’update, les autres comme moi vont commiter leurs changements et redémarrer le serveur prod. On est boucher de père en fils dans la famille…
Avant toute chose Sentry qui avant était un projet Django serveur/client a depuis évolué et est devenu un serveur uniquement, laissant le choix du client suivant votre framework/language de travail. Sentry est disponible sur à peu près toutes les plateformes (Python, PHP, Ruby, JavaScript, Java, Node.js, iOS) et les frameworks Rails et Django. La documentation est très fournie et le projet très actif.
Dans le cas d’un site web en général on a tellement de pages qu’on ne peut pas prédire à l’avance ce qui va foirer ou pas (mais ça foire toujours, tout foire, etc…). Même si vous avez fait les tests unitaires vous aurez forcément oublié quelque chose.
Cette page spéciale sur les nains obèses unijambistes scatophiles pour lesquels vous avez créé un tag unique et qui ne supporte pas que vous ayez changé votre mode de cache va lamentablement planter et vous priver de la fidélité de DSK sur votre site pour longtemps.
Heureusement nous allons pouvoir logger toutes ces erreurs et avoir des jolis graphiques post-mortems. Bien évidement ça va vous faire du taf en plus bande de feignasses.
Sentry vient en standalone ou en version gratuite limitée, hebergée par les créateurs.
J’ai voulu installer la standalone parceque je revenais de l’apéro et qu’au 8ème Ricard on veut tout faire soit-même mais la raison et 14heures de sommeil l’ont emporté, c’est à mon réveil que je me suis alors décidé à installer la version trial limitée à 7 jours de log et 2800 evenements loggés (qui au passage suffit sur un de nos plus gros sites).
la mise en place est vraiment des plus simples:
Créez un compte et ensuite récupérez la clef API dans les préférences sur votre compte en ligne Sentry.
Du côté de votre projet Django:
Installez Raven, qui est un client Python pour Sentry. Il va se charger de collecter vos erreurs et les transmettre à Sentry.
Comme d’habitude une bonne PIP:
pip install raven |
Dans le fichier settings.py de votre projet Django:
Utilisez la clef Api fournie par Sentry (voir plus haut)
# used for sentry login RAVEN_CONFIG = { 'dsn': 'https://aboudouboudousplish:aboudouboudousplash@app.getsentry.com/1984', } |
Vous pouvez faire un test pour voir si tout est bien configuré:
Dans votre projet Django tapez
python manage.py raven test |
Vous devriez recevoir un email de Sentry avec le récapitulatif du test raven.
L’interface Sentry:
Sur le flux vous allez avoir la liste de tous les évènements loggés, vous pouvez les trier en choisissant parmi une pléthore d’options. Vous pouvez nettoyer ce flux en un seul clic (lors d’un redémarrage de serveur vous risquez d’avoir beaucoup d’erreurs qui n’en sont en fait pas, donc inutile de les traiter).
Chaque évènement du flux a une vue détail où vous allez pouvoir tracer le bug, c’est clair et plein d’informations (un peu comme les pages de debug Django). Il y a la possibilité d’ajouter des notes, de relancer la requête afin de vérifier la correction effectuée.
Le mode Team:
Sentry vous permet de bosser en équipe, vous créez un projet, des utilisateurs et chacun peut monitorer, corriger des bugs etc (pas dispo dans la version trial). Vous pouvez aussi créer des groupes d’utilisateurs qui n’auront accès qu’à certains projets. Le côté équipe a bien été intégré. Vous saurez sur qui gueuler lorsque le bug aura été mal corrigé.
Conclusion:
Monitorer ses apps est un vrai calvaire quand on n’a pas les bons outils ou que ces derniers sont chiants à installer/maintenir.
Sentry offre deux possibilités d’installation et leur mode trial vaut vraiment le coup (gratuit je le répète), les plus courageux se farciront l’install.
Pour la version standalone j’ai lu un peu partout qu’il était préférable de l’installer sur un serveur à part, à méditer avant de se lancer. Les logs sont en temps réél, vous n’avez pas à attendre le lendemain pour savoir ce qui a planté la veille, vous pouvez donc corriger vos bugs rapidement.
Le plus gros problème de Sentry je pense c’est qu’on tombe accroc, je m’y rend désormais plusieurs fois par jour pour voir si il n’y a pas un petit bug à corriger :)
PS: je cherche l’équivalent pour monitorer les serveurs, Munin est trop vieux et tous les autres outils que j’ai pu tester demandent à installer (entendez passer des heures à compiler) toute une machinerie. L’idéal serait des paquets à installer sur les serveurs à monitorer + service en ligne à la Sentry.
Tu as testé New Relic pour le monitoring de serveur?
ça va changer des milliers de mail dégueulasse que je reçois en mode clodo. je t’aime max :D
Sympa comme outil, juste un point qui m’aurait intéressé dans l’article:
Il y a quoi en plus dans la standalone par rapport à la version limitée ? Et pourquoi ne pas avoir continué sur la standalone ?
Et pour ceux qui se poseraient les mêmes questions bizarres que moi, les screenshot ne sont pas de max et donc ce n’est pas lui sur l’avatar (ou alors il est extrêmement malicieux et prépare son coup depuis plus de 6 mois).
New Relic est absolument génial (et comme le hosted Sentry installable en 3 coups de cuillère à pot) pour monitorer les serveur mais surtout les application (Django y compris donc) et le code Python. Je suis devenu accro pendant la période d’essai, et je n’ai pas suffisamment de fonds pour payer l’abo mais dès que c’est le cas je le ferai sans hésiter.
Je vais tester Sentry de ce pas, ca me paraît être un complément parfait.
mode rabats-joie on :
c’est pas python 3.4 compliant
mode rabats-joie off :
c’est cool comme truc qd meme :)
@ ludwig
Je ne connais pas relic, vais aller voir merci :)
@golgotha
Il vous en prie
@zangua
ben…elle est pas limité :)
Je n’ai pas continué à l’installer car c’est chiant car long, et qu’ensuite ils conseillent de l’installer sur un serveur à part (trou de sécu possibles ou gros bouffage de ressources ?). Et que la version trial suffit et s’installe en 5 mins :)
les screenshoot sont ceux de la doc :p , petit détail l’interfance est en français chez moi, doit y avoir moyen de régler quelque part la langue, c’est plutôt sympa.
@foxmask
Mais qui donc est asser fou pour être sous Python 3.4 ? :)
Bon je viens de regarder new relic et je sens que ça va faire l’objet d’un autre billet…
je vais le laisser en test quelques temps et vous ferait un retour .
Penses tu qu’il soit pertinent d’utiliser Sentry pour faire du datalogging ?
Pour monitorer les machines, Zabbix. Installé sur un petit serveur *nix au boulot, monitoring de 180 vm tranquille… Un serveur central et des agents sur les machines à surveiller.
L’interface aurait bien besoin d’un design sympa (comme sentry).
Mais il fait bien son taf avec des tas de graphes, alertes, … j’adore.
Pour remplacer Munin, j’ai trouvé collectd qui, combiné à graphite (et accessoirement, graphana comme dashboard graphite) donne quelque chose de vachement pas mal ;)
Sur l’image, la dame a une croix sur la poitrine, mais implanté sous la peau, ce qui sous-entend qu’elle est adepte du jeu de morpion.
Cependant, son collant forme des hexagones, ce qui sous-entend qu’elle aime les jeux de plateaux plus élaborés, comme Full Metal Planet.
Elle est là l’erreur. Elle aurait dû avoir, soit pas de croix, soit un collant qui fait des ronds. (Puisque le morpion se joue avec des croix et des ronds).
mais où va-t’il chercher tout ça ?…
Fini la version gratuite !
https://www.getsentry.com/pricing/
Arrête moi si je dis une grosse bêtise, mais comme tu es boucher de père en fils, tu as souvent des erreurs donc ça fait qu’une entreprise tierce peut connaître le code source de ton produit ?
Sentry étant open source, si on peut monter sa propre instance : https://github.com/getsentry/sentry
@Labrut : C’est pas bien le debug en front à coup de ‘alert’ ? Je comprends pas votre monde les jeun’s … et de mon temps on baisait sans capotes.