Logilab bottom bottom right

Collecter les erreurs de description d'infrastructure avec Salt et Sentry

image

Introduction

Meetup Salt Paris - mai 2016

Arthur Lutz (Logilab) @arthurlutz @logilab

SaltStack Certified Engineer (0x1A5AAB35)

Problématiques

  • états en echec sans notification
  • erreurs silencieuses dans les logs
  • décider quels parties de la description corriger
  • répartir le travail au sein d'une équipe

Solution(s)

  • gestion des states et pillars dans un DVCS (mercurial)
  • gestionnaire de ticket
  • centralisation et exploration des logs
  • métriques sur l'état de l'application de la description
  • collecte des erreurs et des logs avec Sentry

Sentry

image

Sentry provides real-time crash reporting for your web apps, mobile
apps, and games.
  • application django (python)
  • clients en plein de languages de programmation

Sentry - logiciel libre

image

Mise en place du sentry

  • postgresql
  • redis
  • celery
  • celery-beat
  • sentry

Features sentry

  • regroupements
  • assignations
  • moteur de recherche
  • classication des erreurs
  • gestion de version
  • notifications
  • intégration gestion de tickets

Integrations sentry

image

Integrations sentry

image

Salt returner

/etc/salt/minion.d/returners.conf:

return: sentry

/srv/salt/pillars/sentry.sls

raven:
   dsn: https://TOKEN:TOKENPASS@sentry/PROJECTID?timeout=10
   tags:
     - os
     - saltversion
.       

Attention: le returner inclus les pillars dans son retour

salt.returners.sentry_return

Salt logger

/etc/salt/minion.d/log_to_sentry.conf :

sentry_handler:
  dsn: {{ pillar.get('sentry_dsn_minion_log') }}

salt.log.handlers.sentry_mod

Salt master logger

/etc/salt/master.d/log_to_sentry.conf :

sentry_handler:
  dsn: {{ pillar.get('sentry_dsn_master_log') }}

salt.log.handlers.sentry_mod

Consultation - projets

image

Consultation - erreurs

image

Consultation - détail d'un erreur

image

Gestion des version

  • Gestion des version deployées, avec
    • possibilité d'indiquer qu'un problème est résolu à la prochaine version
    • possibilité de détecter les regressions
  • Pour l'utiliser :
    • intégrer la version dans le rapport sentry
    • notifier sentry en utilisant l'API de sentry

Autres usages de sentry

  • retours d'erreurs python, javascript, nodejs, php, etc.
  • retour de violation de policy CSP

Suite

  • Améliorer le contexte des erreurs
  • Proposer un patch pour rendre l'inclusion des pillar optionelle
  • Proposer un patch pour selectionner uniquement les erreurs
  • Continuous / scheduled state.apply

Fin