[RUBY] Der Name ist und das Alter ist Senden Sie eine Benachrichtigung an Slack mit der Java-freien Version von Sentry (mit Lambda)

Über diesen Artikel

Es gibt eine Sentry-Integration, um Slack zu benachrichtigen, aber nur die kostenpflichtige Version ist verfügbar.

Ich hatte nicht vor, für persönliche Projekte eine Gebühr zu erheben, deshalb habe ich versucht, es in der kostenlosen Version verfügbar zu machen. Da der Fokus nur auf dem Benachrichtigungsteil liegt, werden Erklärungen wie Wachposteneinstellungen weggelassen.

Ziel

Über die Methode

Verwenden Sie den Webhook von Sentry. Geben Sie den Lambda-URI als Ziel und die Anforderung von Lamda an den Slack-Webhook an.

Verfahren

--Stellen Sie den eingehenden Webhook auf Slack ein und bereiten Sie das Anforderungsziel vor. (Da es verschiedene Artikel gibt, wird es weggelassen) --Erstellen Sie ein Lambda und setzen Sie den Slack-URI in der Umgebungsvariablen SLACK_INCOMING_WEBHOOK_URL

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

Ergebnis

Sie erhalten folgende Benachrichtigung. (Das Beispiel ist ein Fehler, der durch Rails verursacht wurde.)

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

Schließlich

Da die Verarbeitung von Lambda auf einem Fehler in Rails beruht, besteht die Möglichkeit, dass die Informationen mit anderen Frameworks nicht korrekt angezeigt werden. Die Anpassung kann anhand der Sentry-Webhook-Parameter erfolgen.

Recommended Posts

Der Name ist und das Alter ist Senden Sie eine Benachrichtigung an Slack mit der Java-freien Version von Sentry (mit Lambda)
Versuchen Sie, die Idee eines zweidimensionalen Arrays mit einem eindimensionalen Array nachzuahmen
Ist die von Ihnen verwendete Version von Elasticsearch mit Java 11 kompatibel?
So finden Sie heraus, welche Java-Version der Klassendatei kompiliert wurde
[Java] Wie man mit der String-Klasse an die Spitze eines bestimmten Strings kommt
Ich habe versucht, den Zugriff von Lambda → Athena mit AWS X-Ray zu visualisieren
Senden Sie nach eindeutiger Authentifizierung mit Spring Cloud Gateway eine Anfrage an das Backend
So erhalten Sie die ID eines Benutzers, der sich in Swift bei Firebase authentifiziert hat
Bis zum Start eines Docker-Containers, der mit RedHat Quarkus erstellt wurde
Ein kurzer Hinweis zur Verwendung von jshell mit dem offiziellen Docker-Image des JDK
Machen Sie einen Rand links vom TextField
Stellen Sie die Zeit von LocalDateTime auf eine bestimmte Zeit ein
Verwalten Sie die Version von Ruby selbst mit rbenv
Probieren Sie Progate Free Edition [Java II]
Probieren Sie Progate Free Edition [Java I]
[Endgültige Version] Überprüfen Sie den Betrieb des japanischen Kalenders auf der Intensivstation, um das neue Yuan-Problem zu unterstützen.
[Docker] So sehen Sie den Inhalt von Volumes. Starten Sie einen Container mit Root-Rechten.
So legen Sie ein Wiederholungslimit für Sidekiq fest und benachrichtigen tote Warteschlangen mit Slack
Ich habe versucht, den Mechanismus von Emscripten mit einem deutschen Löser zu untersuchen
Implementieren wir eine Funktion, um die Anzahl der Zugriffe auf die API mit SpringBoot + Redis zu begrenzen
Die Geschichte, einen Reverse-Proxy mit ProxyServlet zu erstellen
So laden Sie eine ältere Version von Apache Tomcat herunter
Die Geschichte, wie ein Docker-Container mit GitHub-Aktionen in die GitHub-Paketregistrierung und den Docker-Hub verschoben wird
Die Geschichte des Erstellens einer Java-Version des Minecraft-Servers mit GCP (und dem Festlegen einer weißen Liste)
Ein Java-Benutzer hat vor einem Dutzend Jahren versucht, die Funktionen von Java8 (Lambda Style Edition) zu untersuchen.
Benachrichtigen Sie Slack of AWS-Rechnungen täglich mit Lambda für Ruby
So machen Sie einen Screenshot mit dem Android Studio-Emulator
Port C-Code mit vielen Typecasts zu Swift
Eine Geschichte voller Grundlagen von Spring Boot (gelöst)
Überprüfen Sie die Funktion von zwei Rollen mit einer Chat-Anwendung
Die Idee von C # (Lambda-Ausdruck, für Satz) zu kauen
Eine Geschichte, die von String () von Interface abhängig ist und von JdkDynamicAopProxy vertreten wird
Eine Reihe von Schritten zum Erstellen von Ergebnissen für Portfolios mit Rails
So verschieben Sie eine andere Klasse mit einer Schaltflächenaktion einer anderen Klasse.
[Version 2020] So senden Sie eine E-Mail mit Android Studio Javamail
[Ruby] So rufen Sie den Inhalt des Doppel-Hash ab
Takashi! Ich habe Reis! Benachrichtigung von Reis nach dem Ovserver-Muster
Erläutern Sie die Vorzüge des staatlichen Musters anhand des Bewertungsurteils des Films
Die Geschichte, Java mithilfe der BitBucket-Pipeline nach Heroku zu bringen
Ein Memo zum Starten der Java-Programmierung mit VS Code (Version 2020-04)
Stellen Sie sicher, dass Sie das Java compareTo-Ergebnis mit 0 vergleichen
[jsoup] So erhalten Sie die gesamte Dokumentation
Finden Sie mit Kotlin die Anzahl der Tage in einem Monat
So registrieren Sie sich mit Tomcat als Kunde in Square
Aktualisieren Sie auf die neueste Version, ohne die Version mit dem Gradle-Wrapper anzugeben
[Apache Tomcat] Die Geschichte der Verwendung von Apache OpenWebBeans zum Aktivieren von CDI
Erstellen Sie mit der Datei Ruby on Rails seeds.rb eine große Anzahl von Datensätzen mit einem einzigen Befehl
[Rails] Implementierung einer mehrschichtigen Kategoriefunktion unter Verwendung der Abstammung "Ich habe versucht, ein Fenster mit Bootstrap 3 zu erstellen"
Ich habe versucht, die Ergebnisse vor und nach der Date-Klasse mit einer geraden Zahl auszudrücken