Chargement

DevOps 101

Crash Report & Issue

What is going on ?

Pour tester / pour le TD :
Projet ms-node-server

Les outils utilisés :
Sentry.io

La documentation utile / pour aller plus loin :
Sentry.io - Getting Started
Atlassian - Gestion des incidents

Usecase

Heu, j'ai une Bad Gateway, alors que j'ai rien fait.

La fonctionwtf()n'est pas définie, tout crash !

Kevin, ptin, l'app crash en boucle ! Qu'est ce que t'as fait ?!

But du jeu

Dans l'optique de garder un système le plus stable possible, la gestion des crashs permet d'être toujours en alerte sur d'éventuels problèmes ccritiques.

Le but premier est bien entendu d'être alerté en cas d'un crash applicatif. Mais d'un point de vue DevOps, la force de ce monitoring extrème est de permettre une automatisation pertinente :

1.L'application crash

2.L'erreur est remontée au service de monitoring

3.Une issue sur Github est créée ainsi qu'une branche git dédiée pour résoudre le problème

4.L'equipe est alertée sur Slack (ou autre) du bug avec le lien de l'issue.

5.Le développeur push la résolution avec un tag particulier, ce qui cloturera automatiquement l'issue, effectuera un merge de la branche de résolution et changera le statut du bug dans le monitoring.

AU-TO-MA-TI-SA-TION !

LeHow ToavecSentry

Pour commencer, nous allons créer un compte surSentry.

Nous allons ensuite créer un nouveau projetNodejs - Expressvia le bouton dédié dans l'espace "Projects" et suivre l'installation conseillée !

Rajoutons enfin une route générant une erreur pour tester :

app.get("/error", function mainHandler(req, res) {

        Sentry.startSpan({
            op: "test",
            name: "My First Test Transaction",
        }, () => {
            setTimeout(() => {
                try {
                    foo();
                } catch (e) {
                    Sentry.captureException(e);
                }
            }, 99);
        });

        throw new Error("My first Sheep-error!");
    });

Une fois le projet relancé, nous pouvons déclancher cette route et une issue devrait apparaître sur Sentry !

A vous de jouer !

Ajoutez la gestion des crashs au projet !

Essayer de pousser l'automatisation des process à l'extrème. C'est uniquement de la configuration sur Sentry.io, Github et votre outil de communication (Slack, Discord, etc...).

Suivant le découpage de votre projet, vous pouvez même assigner directement l'issue générée sur Github au developpeur le plus pertinent :

• La personne qui a créé le fichier ?
• La personne qui a commit le bug ?
• La personne la plus pertinente pour ce type d'erreur (Front, Back, UX, etc...) ?