Slide 1

Slide 1 text

Sentry Xavier Ordoquy Freelance Python & Django lundi 9 avril 12

Slide 2

Slide 2 text

Sentry lundi 9 avril 12

Slide 3

Slide 3 text

Qu’est-ce que Sentry ? • Logs applicatifs • Pile d’exécution Python • Client ( Raven ) / Serveur ( Sentry ) • Centralisé lundi 9 avril 12

Slide 4

Slide 4 text

Historique • Développé pour Disqus • 250 serveurs • 4 milliards de pages / mois • Mises en production perpétuelles lundi 9 avril 12

Slide 5

Slide 5 text

Environnement • Sites Django • Scripts Python • Sites Flask • Autre langages: • PHP • Java lundi 9 avril 12

Slide 6

Slide 6 text

Architectures • Un serveur, plusieurs sites • Un site, plusieurs serveurs • Des scripts isolés lundi 9 avril 12

Slide 7

Slide 7 text

Avant Django permet l’envoi de mails : Traceback (most recent call last): File "[..]/django/core/handlers/base.py", line 111, in get_response response = callback(request, *callback_args, **callback_kwargs) File "/sentry_talk/views.py", line 9, in demo total = array1[i]*array2[i] IndexError: list index out of range lundi 9 avril 12

Slide 8

Slide 8 text

Avec Sentry lundi 9 avril 12

Slide 9

Slide 9 text

Problèmes résolus par Sentry • Des fichiers de logs tronqués • Des problèmes difficilement reproductibles • Un centraliseur de logs à mettre en place ( complexité, services différents ). lundi 9 avril 12

Slide 10

Slide 10 text

Les atouts • Gestion par projet • Filtrages • Plugins lundi 9 avril 12

Slide 11

Slide 11 text

Projets lundi 9 avril 12

Slide 12

Slide 12 text

Filtres lundi 9 avril 12

Slide 13

Slide 13 text

Plugins • Lors d’un évènement : • Mails • Messageries instantanées • Analyse post mortem : • Création d’un bug dans votre outil lundi 9 avril 12

Slide 14

Slide 14 text

Utiliser Sentry • Installation • Mise en place avec : • Django • Python • Logging lundi 9 avril 12

Slide 15

Slide 15 text

Installer Sentry • $ pip install sentry • $ sentry start OU • http://www.getsentry.com/ lundi 9 avril 12

Slide 16

Slide 16 text

Raven • $ pip install raven • Créer un projet sur sentry • Noter le DSN du projet / serveur • $ raven test lundi 9 avril 12

Slide 17

Slide 17 text

Django # Set your DSN value SENTRY_DSN = 'http://xxxx:yyyy@host:8000/5' # Add raven to the list of installed apps INSTALLED_APPS = INSTALLED_APPS + ( # ... 'raven.contrib.django', ) Editez votre settings.py : lundi 9 avril 12

Slide 18

Slide 18 text

Scripts Python from raven import Client client = Client('http://public:[email protected]/1') try: 1/0 except ZeroDivisionError: ident = client.get_ident(client.captureException()) print "Exception caught; reference is %%s" %% ident lundi 9 avril 12

Slide 19

Slide 19 text

Intégration avec logging import logging from raven.handlers.logging import SentryHandler # Setup logging handler = SentryHandler('http://public:[email protected]/1') base_logger = logging.getLogger() base_logger.addHandler(handler) lundi 9 avril 12

Slide 20

Slide 20 text

Logs de base # Log logger = logging.getLogger(‘demo’) logger.warning(‘log de base’) lundi 9 avril 12

Slide 21

Slide 21 text

Logs avec pile # Log logger = logging.getLogger(‘demo’) logger.warning('log avec pile 2', extra={'stack': True}) lundi 9 avril 12