[RUBY] Envoyez des notifications à Slack avec la version gratuite de sentry (en utilisant lambda)

À propos de cet article

Il existe une intégration sentinelle pour notifier Slack, mais seule la version payante est disponible.

Je n'avais pas l'intention de le facturer pour des projets personnels, j'ai donc essayé de le rendre disponible dans la version gratuite. Étant donné que l'accent est uniquement mis sur la partie notification, les explications telles que les paramètres de sentinelle sont omises.

Cible

À propos de la méthode

Utilisez le webhook de sentinelle. Spécifiez l'URI lambda comme destination et faites la demande de lamda au webhook slack.

procédure

--Définissez le webhook entrant de slack et préparez la destination de la requête. (Puisqu'il existe divers articles, il est omis) --Créez un lambda et définissez l'URI slack dans la variable d'environnement SLACK_INCOMING_WEBHOOK_URL --Copiez et collez le processus lambda suivant pour enregistrer et déployer (l'exemple est ruby)

require 'json'

def lambda_handler(event:, context:)

    body = JSON.parse(event['body'])
    
    post_query = {
      "attachments": [
        "pretext": "<#{body['url']}|Exception>\r\nproject: #{body['project_slug']}\r\nenvironment: #{body['event']['environment']}\r\ndetail: #{body['event']['metadata']['filename']}`#{body['event']['metadata']['function']}`",
        "color": "#D00000",
        "fields": [
          "title": "#{body['event']['title']}",
          "value": "#{body['culprit']}"
        ]
      ]
    }
    
    uri = URI.parse(ENV['SLACK_INCOMING_WEBHOOK_URL'])
    http = Net::HTTP.new(uri.host, uri.port)
    http.use_ssl = true
    http.post(uri.path, post_query.to_json)

    { statusCode: 200, body: JSON.generate('') }
end

résultat

Vous recevrez la notification suivante. (L'échantillon est une erreur causée par Rails)

スクリーンショット 2020-11-01 19.34.16.png

finalement

Étant donné que le traitement de lambda est fondé sur une erreur dans Rails, il est possible que les informations ne s'affichent pas correctement avec d'autres frameworks. La personnalisation peut être effectuée en consultant les paramètres du webhook de sentinelle.

Recommended Posts

Envoyez des notifications à Slack avec la version gratuite de sentry (en utilisant lambda)
Essayez d'imiter l'idée d'un tableau à deux dimensions avec un tableau à une dimension
La version d'Elasticsearch que vous utilisez est-elle compatible avec Java 11?
Comment savoir quelle version Java d'un fichier de classe a été compilée
[Java] Comment accéder au début d'une chaîne spécifique à l'aide de la classe String
J'ai essayé de visualiser l'accès de Lambda → Athena avec AWS X-Ray
Envoyez une demande au backend après une authentification unique avec Spring Cloud Gateway
Comment obtenir l'ID d'un utilisateur qui s'est authentifié avec Firebase dans Swift
Jusqu'au lancement d'un conteneur Docker construit avec RedHat Quarkus
Une note rapide sur l'utilisation de jshell avec l'image Docker officielle du JDK
Faire une marge à gauche du TextField
Définir l'heure de LocalDateTime à une heure spécifique
Gérez la version de Ruby elle-même avec rbenv
Essayez Progate Free Edition [Java II]
Essayez Progate Free Edition [Java I]
[Version finale] Vérifiez le fonctionnement du calendrier japonais en utilisant ICU pour prendre en charge le nouveau problème du yuan.
[Docker] Comment voir le contenu des volumes. Démarrez un conteneur avec les privilèges root.
Comment définir une limite de relance pour sidekiq et notifier les files d'attente mortes avec Slack
J'ai essayé d'étudier le mécanisme d'Emscripten en l'utilisant avec un solveur allemand
Implémentons une fonction pour limiter le nombre d'accès à l'API avec SpringBoot + Redis
L'histoire de la création d'un proxy inverse avec ProxyServlet
Comment télécharger une ancienne version d'Apache Tomcat
L'histoire du transfert d'un conteneur Docker vers le registre de packages GitHub et Docker Hub avec des actions GitHub
L'histoire de la création d'une version Java du serveur Minecraft avec GCP (et également de la création d'une liste blanche)
Il y a une dizaine d'années, un utilisateur de Java a tenté d'étudier les fonctions de Java8 (édition de style Lambda).
Notifier quotidiennement Slack des factures AWS avec Lambda pour Ruby
Comment faire une capture d'écran avec l'émulateur Android Studio
Code du port C avec de nombreux typecasts vers Swift
Une histoire remplie des bases de Spring Boot (résolu)
Vérifier le fonctionnement de deux rôles avec une application de chat
L'idée de C # (expression lambda, pour phrase) à mâcher
Une histoire à laquelle j'étais accro avec toString () d'Interface qui était proxy avec JdkDynamicAopProxy
Une série d'étapes pour créer des livrables pour les portefeuilles avec Rails
Comment déplacer une autre classe avec une action de bouton d'une autre classe.
[Version 2020] Comment envoyer un e-mail à l'aide d'Android Studio Javamail
[Ruby] Comment récupérer le contenu du double hachage
Takashi! J'ai du riz! Notification de riz en utilisant le modèle Ovserver
Expliquez les mérites du modèle d'État avec le jugement de notation du film
L'histoire de la transmission de Java à Heroku à l'aide du pipeline BitBucket
Un mémo pour démarrer la programmation Java avec VS Code (version 2020-04)
Assurez-vous de comparer le résultat Java compareTo avec 0
[jsoup] Comment obtenir la totalité de la documentation
Trouvez le nombre de jours dans un mois avec Kotlin
Comment s'inscrire en tant que client dans Square à l'aide de Tomcat
Mettre à jour vers la dernière version sans spécifier la version avec le wrapper gradle
[Apache Tomcat] L'histoire de l'utilisation d'Apache OpenWebBeans pour activer CDI
Créez un grand nombre d'enregistrements avec une seule commande à l'aide du fichier seeds.rb Ruby on Rails
[Rails] Implémentation de la fonction de catégorie multicouche en utilisant l'ascendance "J'ai essayé de créer une fenêtre avec Bootstrap 3"
J'ai essayé d'exprimer les résultats avant et après de la classe Date avec une ligne droite numérique