SlideShare une entreprise Scribd logo
1  sur  21
Télécharger pour lire hors ligne
Sentry
                         Xavier Ordoquy
                   Freelance Python & Django




lundi 9 avril 12
Sentry




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

lundi 9 avril 12
Historique

                   • Développé pour Disqus
                   • 250 serveurs
                   • 4 milliards de pages / mois
                   • Mises en production perpétuelles

lundi 9 avril 12
Environnement

                   • Sites Django
                   • Scripts Python
                   • Sites Flask
                   • Autre langages:
                    • PHP
                    • Java

lundi 9 avril 12
Architectures


                   • Un serveur, plusieurs sites
                   • Un site, plusieurs serveurs
                   • Des scripts isolés


lundi 9 avril 12
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
Avec Sentry




lundi 9 avril 12
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
Les atouts

                   • Gestion par projet
                   • Filtrages
                   • Plugins


lundi 9 avril 12
Projets




lundi 9 avril 12
Filtres




lundi 9 avril 12
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
Utiliser Sentry

                   • Installation
                   • Mise en place avec :
                    • Django
                    • Python
                    • Logging

lundi 9 avril 12
Installer Sentry

                   • $ pip install sentry
                   • $ sentry start
                     OU
                   • http://www.getsentry.com/

lundi 9 avril 12
Raven

                   • $ pip install raven
                   • Créer un projet sur sentry
                   • Noter le DSN du projet / serveur
                   • $ raven test <DSN>

lundi 9 avril 12
Django
                             Editez votre settings.py :
                   # 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',
                   )




lundi 9 avril 12
Scripts Python

                   from raven import Client

                   client = Client('http://public:secret@example.com/1')


                   try:
                      1/0
                   except ZeroDivisionError:
                      ident = client.get_ident(client.captureException())
                      print "Exception caught; reference is %%s" %% ident




lundi 9 avril 12
Intégration avec
                                logging

                   import logging
                   from raven.handlers.logging import SentryHandler

                   # Setup logging
                   handler = SentryHandler('http://public:secret@example.com/1')
                   base_logger = logging.getLogger()
                   base_logger.addHandler(handler)




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




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




lundi 9 avril 12

Contenu connexe

En vedette

Sentry - An Introduction
Sentry - An Introduction Sentry - An Introduction
Sentry - An Introduction Alexander Alten
 
Les mécanismes de contrôle d'accès du kernel linux
Les mécanismes de contrôle d'accès du kernel linuxLes mécanismes de contrôle d'accès du kernel linux
Les mécanismes de contrôle d'accès du kernel linuxAnne Nicolas
 
Hemos de salvaguardar la dignidad de toda persona
Hemos de salvaguardar la dignidad de toda personaHemos de salvaguardar la dignidad de toda persona
Hemos de salvaguardar la dignidad de toda personaAdrián Herrera
 
Le partitif impresspdf
Le partitif impresspdfLe partitif impresspdf
Le partitif impresspdfpr0ffrances
 
Fiche de révision chap 2 svt
Fiche de révision chap 2 svtFiche de révision chap 2 svt
Fiche de révision chap 2 svtAhmad Nehme
 
Sandra , la salamandra de Roberto Herrero Bermejo 5º curso.
Sandra , la salamandra de Roberto Herrero Bermejo  5º curso.Sandra , la salamandra de Roberto Herrero Bermejo  5º curso.
Sandra , la salamandra de Roberto Herrero Bermejo 5º curso.pilardr8
 
Séance 05, Pratique de la promotion de la publication des données dans la for...
Séance 05, Pratique de la promotion de la publication des données dans la for...Séance 05, Pratique de la promotion de la publication des données dans la for...
Séance 05, Pratique de la promotion de la publication des données dans la for...Alberto González-Talaván
 
Présentation réalités virtuelles
Présentation réalités virtuellesPrésentation réalités virtuelles
Présentation réalités virtuellesScander1005
 

En vedette (20)

ClearPass 6.3.6 Release Notes
ClearPass 6.3.6 Release NotesClearPass 6.3.6 Release Notes
ClearPass 6.3.6 Release Notes
 
ClearPass Policy Manager 6.3 User Guide
ClearPass Policy Manager 6.3 User GuideClearPass Policy Manager 6.3 User Guide
ClearPass Policy Manager 6.3 User Guide
 
ClearPass 6.4.0 Release Notes
ClearPass 6.4.0 Release NotesClearPass 6.4.0 Release Notes
ClearPass 6.4.0 Release Notes
 
Sentry - An Introduction
Sentry - An Introduction Sentry - An Introduction
Sentry - An Introduction
 
Les mécanismes de contrôle d'accès du kernel linux
Les mécanismes de contrôle d'accès du kernel linuxLes mécanismes de contrôle d'accès du kernel linux
Les mécanismes de contrôle d'accès du kernel linux
 
Hemos de salvaguardar la dignidad de toda persona
Hemos de salvaguardar la dignidad de toda personaHemos de salvaguardar la dignidad de toda persona
Hemos de salvaguardar la dignidad de toda persona
 
Le partitif impresspdf
Le partitif impresspdfLe partitif impresspdf
Le partitif impresspdf
 
Clase ii (1)
Clase ii (1)Clase ii (1)
Clase ii (1)
 
BOTÓN BOTÓN
BOTÓN BOTÓNBOTÓN BOTÓN
BOTÓN BOTÓN
 
SÓCRATES
SÓCRATESSÓCRATES
SÓCRATES
 
Effet miroir1
Effet miroir1Effet miroir1
Effet miroir1
 
Acentuación
AcentuaciónAcentuación
Acentuación
 
Fiche de révision chap 2 svt
Fiche de révision chap 2 svtFiche de révision chap 2 svt
Fiche de révision chap 2 svt
 
Les actions du Conseil de l'europe en matière de migration
Les actions du Conseil de l'europe en matière de migrationLes actions du Conseil de l'europe en matière de migration
Les actions du Conseil de l'europe en matière de migration
 
La Celestina
La CelestinaLa Celestina
La Celestina
 
Sandra , la salamandra de Roberto Herrero Bermejo 5º curso.
Sandra , la salamandra de Roberto Herrero Bermejo  5º curso.Sandra , la salamandra de Roberto Herrero Bermejo  5º curso.
Sandra , la salamandra de Roberto Herrero Bermejo 5º curso.
 
Court terme 1 edds 4545
Court terme 1 edds 4545Court terme 1 edds 4545
Court terme 1 edds 4545
 
Séance 05, Pratique de la promotion de la publication des données dans la for...
Séance 05, Pratique de la promotion de la publication des données dans la for...Séance 05, Pratique de la promotion de la publication des données dans la for...
Séance 05, Pratique de la promotion de la publication des données dans la for...
 
Présentation réalités virtuelles
Présentation réalités virtuellesPrésentation réalités virtuelles
Présentation réalités virtuelles
 
Urdu 57
Urdu 57Urdu 57
Urdu 57
 

Similaire à Sentry

Une application en deux heure - PHP Québec Janvier 2009
Une application en deux heure - PHP Québec Janvier 2009Une application en deux heure - PHP Québec Janvier 2009
Une application en deux heure - PHP Québec Janvier 2009Philippe Gamache
 
AT2010 Principes Integration Continue
AT2010 Principes Integration ContinueAT2010 Principes Integration Continue
AT2010 Principes Integration ContinueNormandy JUG
 
Distribuer une librairie via maven
Distribuer une librairie via mavenDistribuer une librairie via maven
Distribuer une librairie via mavenFranck SIMON
 
Java 9 modulo les modules devoxx fr 2017
Java 9 modulo les modules devoxx fr 2017Java 9 modulo les modules devoxx fr 2017
Java 9 modulo les modules devoxx fr 2017Jean-Michel Doudoux
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et DockerStephane Manciot
 
AlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPAlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPjulien pauli
 
OpenStack dans la pratique
OpenStack dans la pratiqueOpenStack dans la pratique
OpenStack dans la pratiqueOsones
 
Hacking Open source et Sécurité, préconisations
Hacking Open source et Sécurité, préconisationsHacking Open source et Sécurité, préconisations
Hacking Open source et Sécurité, préconisationsCertilience
 
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Silicon Comté
 
Des solutions de synchronisation de données
Des solutions de synchronisation de donnéesDes solutions de synchronisation de données
Des solutions de synchronisation de donnéespprem
 
Xcode Server - Jeffrey Macko
Xcode Server - Jeffrey MackoXcode Server - Jeffrey Macko
Xcode Server - Jeffrey MackoCocoaHeads France
 
Devoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le CloudDevoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le CloudTugdual Grall
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptxJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptxAnisSalhi3
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Jérôme Petazzoni
 
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Ippon
 
Liferay Portail Web Enterprise Plateforme Collaborative
Liferay Portail Web Enterprise Plateforme CollaborativeLiferay Portail Web Enterprise Plateforme Collaborative
Liferay Portail Web Enterprise Plateforme CollaborativeSavoir-faire Linux
 

Similaire à Sentry (20)

OpenNMS
OpenNMSOpenNMS
OpenNMS
 
Une application en deux heure - PHP Québec Janvier 2009
Une application en deux heure - PHP Québec Janvier 2009Une application en deux heure - PHP Québec Janvier 2009
Une application en deux heure - PHP Québec Janvier 2009
 
Maven
MavenMaven
Maven
 
AT2010 Principes Integration Continue
AT2010 Principes Integration ContinueAT2010 Principes Integration Continue
AT2010 Principes Integration Continue
 
Distribuer une librairie via maven
Distribuer une librairie via mavenDistribuer une librairie via maven
Distribuer une librairie via maven
 
Java 9 modulo les modules devoxx fr 2017
Java 9 modulo les modules devoxx fr 2017Java 9 modulo les modules devoxx fr 2017
Java 9 modulo les modules devoxx fr 2017
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et Docker
 
AlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPAlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHP
 
OpenStack dans la pratique
OpenStack dans la pratiqueOpenStack dans la pratique
OpenStack dans la pratique
 
Installation open erp
Installation open erpInstallation open erp
Installation open erp
 
Hacking Open source et Sécurité, préconisations
Hacking Open source et Sécurité, préconisationsHacking Open source et Sécurité, préconisations
Hacking Open source et Sécurité, préconisations
 
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
Introduction à Docker et utilisation en production /Digital apéro Besançon [1...
 
Des solutions de synchronisation de données
Des solutions de synchronisation de donnéesDes solutions de synchronisation de données
Des solutions de synchronisation de données
 
Xcode Server - Jeffrey Macko
Xcode Server - Jeffrey MackoXcode Server - Jeffrey Macko
Xcode Server - Jeffrey Macko
 
Devoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le CloudDevoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le Cloud
 
Octo Maven.pdf
Octo Maven.pdfOcto Maven.pdf
Octo Maven.pdf
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptxJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
 
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
 
Liferay Portail Web Enterprise Plateforme Collaborative
Liferay Portail Web Enterprise Plateforme CollaborativeLiferay Portail Web Enterprise Plateforme Collaborative
Liferay Portail Web Enterprise Plateforme Collaborative
 

Sentry

  • 1. Sentry Xavier Ordoquy Freelance Python & Django lundi 9 avril 12
  • 3. Qu’est-ce que Sentry ? • Logs applicatifs • Pile d’exécution Python • Client ( Raven ) / Serveur ( Sentry ) • Centralisé lundi 9 avril 12
  • 4. Historique • Développé pour Disqus • 250 serveurs • 4 milliards de pages / mois • Mises en production perpétuelles lundi 9 avril 12
  • 5. Environnement • Sites Django • Scripts Python • Sites Flask • Autre langages: • PHP • Java lundi 9 avril 12
  • 6. Architectures • Un serveur, plusieurs sites • Un site, plusieurs serveurs • Des scripts isolés lundi 9 avril 12
  • 7. 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
  • 9. 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
  • 10. Les atouts • Gestion par projet • Filtrages • Plugins lundi 9 avril 12
  • 13. 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
  • 14. Utiliser Sentry • Installation • Mise en place avec : • Django • Python • Logging lundi 9 avril 12
  • 15. Installer Sentry • $ pip install sentry • $ sentry start OU • http://www.getsentry.com/ lundi 9 avril 12
  • 16. Raven • $ pip install raven • Créer un projet sur sentry • Noter le DSN du projet / serveur • $ raven test <DSN> lundi 9 avril 12
  • 17. Django Editez votre settings.py : # 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', ) lundi 9 avril 12
  • 18. Scripts Python from raven import Client client = Client('http://public:secret@example.com/1') try: 1/0 except ZeroDivisionError: ident = client.get_ident(client.captureException()) print "Exception caught; reference is %%s" %% ident lundi 9 avril 12
  • 19. Intégration avec logging import logging from raven.handlers.logging import SentryHandler # Setup logging handler = SentryHandler('http://public:secret@example.com/1') base_logger = logging.getLogger() base_logger.addHandler(handler) lundi 9 avril 12
  • 20. Logs de base # Log logger = logging.getLogger(‘demo’) logger.warning(‘log de base’) lundi 9 avril 12
  • 21. Logs avec pile # Log logger = logging.getLogger(‘demo’) logger.warning('log avec pile 2', extra={'stack': True}) lundi 9 avril 12