Premier retour d'expérience sur Sentry

Ecrit le , 5 minutes de bouquinage

J'ai installé Sentry il y a maintenant quelques mois. Je voudrais faire un petit retour d'expérience, même si j'ai encore tout plein de fonctionnalités à découvrir.

Situer le contexte

Ce serait pas mal de situer le contexte. J'ai un projet où il m'a fallu un moyen de prendre les erreurs lancées et de les présenter d'une manière... plus détaillée, dira-t-on, afin de les corriger dans un second temps.

J'avais entendu parler de Sentry ci et là et là, puis je l'ai mis dans son container LXC avec une installation manuelle.

L'installation

Sentry en lui-même

L'installation a été... un peu chaotique, pour ne pas dire que la procédure était documentée nulle part pour un humain. La seule chose qui est documentée et bien mise en évidence est l'installation via Docker via le dépôt "On-Premise".

Je ne dis pas que le manuel est impossible, loin de là. J'ai fait une installation manuelle qui marche. L'installation de Sentry en lui-même est à un pip install sentry de distance sur Python 2.7 sur un virtualenv. Les dépendances elles... ont dû être "devinées" depuis leur docker-compose.yml.

Non, je ne considère pas un docker-compose.yml ni un DockerFile comme de la documentation, mais soit. J'imagine que chacun a son avis sur le sujet.

Les dépendances

Il y en a quelques unes dont l'installation n'est pas documentée pour un humain. Juste un DockerFile pour les services internes utilisés par Sentry. Fichiers qu'il faut ensuite s'amuser à chercher soit sur le Docker Hub, soit dans les dépôts sur GitHub.

Ces services internes sont eux-mêmes dépendants d'autres services qu'il faut également installer. C'est là que les choses se sont gâtées. Sans regarder ces fichiers qui servent à Docker, difficile de deviner les dépendances et leurs versions.

Bref. Pour finir, j'ai réussi à faire quelque chose qui fonctionne, ce qui est pas mal.

L'installation me laisse donc un premier avis. Il faudrait écrire une page sur leur documentation afin de permettre aux gens qui souhaitent installer Sentry sans Docker puissent le faire. En attendant, quand tu vois les dépendances, tu te demandes s'ils ont pas voulu "masquer" la complexité des rouages ou bien faire les choses en microservices. Ils sont certainement voulu faire les choses en microservices, mais bon. Continuons.

La mise en route

La mise en route, toujours dans la partie installation, a été moins chaotique. Il s'agissait d'écrire des fichiers de service pour Systemd. Certes, certains trucs et astuces ont été utilisés sans gêne pour n'écrire qu'un fichier pour lancer trois services.

L'utilisation

On passe au vif du sujet. L'interface utilisateur est simple à prendre en main, malgré la multitude de boutons. Ceci dit, il n'y a pas pas un excès de boutons et ils sont bien indiqués.

Les erreurs capturées sont présentées sur ce genre de page:

Capture d'écran de la page de listing des erreurs capturées sur Sentry

(sauf que y'a un joli "Congrats!" chez moi parce que y'a pas eu de nouelles erreurs attrapées depuis le temps)

La page qui détaille les erreurs ressemble plutôt à cela:

Capture d'écran de la page détaillant une erreur sur Sentry

Comme je l'ai dit, c'est une mine d'or pour chercher les informations des bugs et les traquer. On peut aussi voir en bas de la capture d'écran le détail de la pile d'appels et un peu de contexte quant au code appelé.

Certes, il y a des fonctionnalités que je n'utilise pas encore mais, avec un peu de temps, je pourrais tenter de les intégrer et les faire fonctionner. Ceci étant dit, même sans les intégrations ou les quelques trucs en plus, Sentry reste un outil agréable à utiliser pour capturer et mettre en forme les erreurs inopinées.

Bonus: on peut rajouter des valeurs perosnnalisées pour détailler d'avantage les erreurs qui débarquent.

Performances

Au niveau performances, avec deux projets qui lâchent une erreur de temps en temps ou rarement, Sentry semble plutôt bien tourner malgré qu'un bon gigabyte se retrouve dans le swap, dans de la zram. Il tourne sans broncher sur deux vcores.

Lors de la première migration de la base de données pour sa création, j'ai eu quelques surprises au niveau de la consommation de mémoire qui est montée haut: 2.5 à 3 GB pour migrer une base de données ? Soit.

En tout cas, ça tourne ! C'est une partie importante du puzzle, non ?

En conclusion

En conclusion de cet article, Sentry est un bon service pour traquer les erreurs et les afficher de manière claire et compréhensible. Les informations recueillies sont une mine d'or d'informations utiles à la résolution d'erreurs qui arrivent.

Cependant, l'installation manuelle, sans Docker, est un peu tordue si on ne fait pas attention aux détails des DockerFiles et docker-compose.yml.

De plus, un autre élément qui m'embête un peu mais qui n'est pas directement en relation avec Sentry lui-même, est l'empreinte mémoire. En effet, Sentry dépend d'autres services qui peuvent, à leur tour, dépendre d'autre services. Tout cela a, évidemment, un impact sur la mémoire utilisée (merci Capitain Obvious).

S'il y a d'autres moyens de réduire ladite empeinte, en plus de changer l'allocateur de mémoire à Jemalloc, je prends volontiers :)