
AppSignal-Webhook-Anfragen verifizieren
Um die Sicherheit Ihrer Anwendung zu gewährleisten, können Sie überprüfen, ob eingehende Webhook-Anfragen tatsächlich von AppSignal stammen. Die Verifizierung erfolgt mithilfe eines Webhook-Verifizierungstokens, um die Signatur der Anfrage zu validieren.Ihren Webhook-Verifizierungstoken finden
- Navigieren Sie in Ihrem AppSignal-Dashboard zu App settings > Integrations.
- Konfigurieren Sie die Webhook-Integration, die Sie verifizieren möchten.
- Hier finden Sie den Webhook verification token der Integration.
Eine Anfrage verifizieren
Wenn AppSignal eine Webhook-Anfrage sendet, enthält sie eine Signatur im HeaderX-Appsignal-Signature. Sie können die Anfrage wie folgt validieren:
- Verketten Sie das AppSignal-Webhook-Verifizierungstoken mit dem rohen Request-Body.
- Erzeugen Sie einen SHA256-Hash des verketteten Strings.
- Vergleichen Sie den erzeugten Hash mit dem Wert im Header
X-Appsignal-Signature.
Beispielimplementierungen
Nachfolgend einige Beispiele dafür, wie Sie überprüfen können, ob eine Anfrage von AppSignal stammt, in Ruby, Elixir, Node.js und Python. Hinweis: Die folgenden Beispiele dienen nur zur Veranschaulichung; Sie müssen sie je nach den Frameworks, Integrationen und Abhängigkeiten Ihrer App möglicherweise anpassen.Deploy-Marker
Felder
| Feld | Typ | Beschreibung |
|---|---|---|
marker | Hash<String, Any> | Die Webhook-Payload betrifft einen Marker-Incident. |
Unterfelder des Deploy-Markers
| Feld | Typ | Beschreibung |
|---|---|---|
time | String | Zeitstempel, zu dem der Deploy-Marker erstellt wurde. |
marker_id | String | Interne AppSignal-Marker-ID für den Deploy-Marker. |
site | String | App-Name, wie auf AppSignal.com angezeigt. Das Feld site wird aus Legacy-Gründen anstelle von app verwendet. |
environment | String | App-Umgebung der App, wie auf AppSignal.com angezeigt. |
revision | String | Der Revisionsname des Deploy-Markers. |
user | String | Der Benutzer, der den Marker erstellt hat. |
repository | String | URL zum Repository, wie für die App auf AppSignal.com konfiguriert. |
url | String | URL zur App auf AppSignal.com, die den Webhook ausgelöst hat. |
Exception-Incidents
Felder
| Feld | Typ | Beschreibung |
|---|---|---|
exception | Hash<String, Any> | Die Webhook-Payload betrifft einen Exception-Incident. |
Unterfelder der Exception
| Feld | Typ | Beschreibung |
|---|---|---|
time | String | Zeitstempel, zu dem die Exception aufgetreten ist. |
number | Integer | Incident-ID, wie auf AppSignal.com angezeigt. |
site | String | App-Name, wie auf AppSignal.com angezeigt. Das Feld site wird aus Legacy-Gründen anstelle von app verwendet. |
environment | String | App-Umgebung der App, wie auf AppSignal.com angezeigt. |
app_url | String | URL zur App auf AppSignal.com, die den Webhook ausgelöst hat. |
url | String | URL zum spezifischen Sample für den Incident auf AppSignal.com, der diesen Webhook ausgelöst hat. |
revision | String | Der Revisionsname des Deploy-Markers. |
user | String | Der Benutzer, der den Marker erstellt hat. Der Wert von user kann auch null sein, wenn er für eine Deploy-Marker-Revision nicht gesetzt wurde. |
namespace | String | Der Namespace, in dem diese Exception aufgetreten ist. |
exception | String | Der von AppSignal aufgezeichnete Exception-Typ. |
message | String | Die Exception-Nachricht mit weiteren Details zur Exception. |
app_backtrace | Array<String> | Die Zeilen des Backtrace, die die App betreffen, aus der sie stammen. Dies schließt Backtrace-Zeilen aus Bibliotheken aus, die in der App enthalten sind. |
first_backtrace_line | String | Die erste Backtrace-Zeile aus dem Feld app_backtrace. |
action | String | Die Aktion, in der diese Exception aufgetreten ist. Entweder eine Controller-Aktion, ein Background-Worker oder eine manuell gesetzte Aktion. |
path | String | Der Request-Pfad, an dem die Exception aufgetreten ist. Dies wird nur für Web-Anfragen gesetzt. Dies sind Metadaten, die standardmäßig von der AppSignal-Integration gesetzt und auch im Feld metadata enthalten sind. |
hostname | String | Der Hostname des Hosts, auf dem diese Exception aufgetreten ist. |
action_label | String | Eine benutzerfreundliche Bezeichnung für den Aktionstyp, bei dem diese Exception aufgetreten ist. Verwendet request für den Namespace web und job für den Namespace background. Alle anderen Namespaces verwenden action. |
metadata | Hash<String, String> | Dies umfasst vom Benutzer gesetzte Metadaten (siehe Tagging-Funktion). |
Metadaten-Felder
Sie können eigene Metadaten hinzufügen, indem Sie Samples taggen.| Feld | Typ | Beschreibung |
|---|---|---|
demo_sample | String | Wird von der AppSignal-Integration für Demo-Samples gesetzt, die mit unserem Demo-Kommandozeilen-Tool gesendet wurden (Ruby / Elixir). Nicht für alle anderen Samples gesetzt. |
method | String | Die zur Ausführung einer Anfrage verwendete Request-Methode. Nur für (Web-)Anfragen verfügbar. |
path | String | Der Request-Pfad, an dem die Exception aufgetreten ist. Dies wird nur für Web-Anfragen gesetzt. Enthält denselben Wert wie das Feld path. |
Performance-Incidents
Felder
| Feld | Typ | Beschreibung |
|---|---|---|
performance | Hash<String, Any> | Die Webhook-Payload betrifft einen Performance-Incident. |
Unterfelder der Performance
| Feld | Typ | Beschreibung |
|---|---|---|
time | String | Zeitstempel, zu dem der Performance-Incident aufgetreten ist. |
number | Integer | Incident-ID, wie auf AppSignal.com angezeigt. |
site | String | App-Name, wie auf AppSignal.com angezeigt. Das Feld site wird aus Legacy-Gründen anstelle von app verwendet. |
environment | String | App-Umgebung der App, wie auf AppSignal.com angezeigt. |
app_url | String | URL zur App auf AppSignal.com, die den Webhook ausgelöst hat. |
url | String | URL zum spezifischen Sample für den Incident auf AppSignal.com, der diesen Webhook ausgelöst hat. |
revision | String | Der Revisionsname des Deploy-Markers. |
user | String | Der Benutzer, der den Marker erstellt hat. Der Wert von user kann auch null sein, wenn er für eine Deploy-Marker-Revision nicht gesetzt wurde. |
namespace | String | Der Namespace, in dem dieser Performance-Incident aufgetreten ist. |
duration | Float | Die in Millisekunden gemessene Zeit, die der Request/Job/die Aktion bis zum Abschluss benötigt hat. |
action | String | Die Aktion, in der dieser Performance-Incident aufgetreten ist. Entweder eine Controller-Aktion, ein Background-Worker oder eine manuell gesetzte Aktion. |
path | String | Der Request-Pfad, an dem der Performance-Incident aufgetreten ist. Dies wird nur für Web-Anfragen gesetzt. Dies sind Metadaten, die standardmäßig von der AppSignal-Integration gesetzt und auch im Feld metadata enthalten sind. |
hostname | String | Der Hostname des Hosts, auf dem dieser Performance-Incident aufgetreten ist. |
action_label | String | Eine benutzerfreundliche Bezeichnung für den Aktionstyp, bei dem dieser Performance-Incident aufgetreten ist. Verwendet request für den Namespace web und job für den Namespace background. Alle anderen Namespaces verwenden action. |
metadata | Hash<String, String> | Dies umfasst vom Benutzer gesetzte Metadaten, siehe Metadaten. |
Metadaten-Felder
Sie können eigene Metadaten hinzufügen, indem Sie Samples taggen.| Feld | Typ | Beschreibung |
|---|---|---|
demo_sample | String | Wird von der AppSignal-Integration für Demo-Samples gesetzt, die mit unserem Demo-Kommandozeilen-Tool gesendet wurden (Ruby / Elixir). Nicht für alle anderen Samples gesetzt. |
method | String | Die zur Ausführung einer Anfrage verwendete Request-Methode. Nur für (Web-)Anfragen verfügbar. |
path | String | Der Request-Pfad, an dem der Performance-Incident aufgetreten ist. Dies wird nur für Web-Anfragen gesetzt. Enthält denselben Wert wie das Feld path. |
Anomalieerkennung
| Feld | Typ | Beschreibung |
|---|---|---|
alert_id | String | Interne AppSignal-Alert-ID für den Alert. |
state | String | Status des Alerts. |
site | String | Der Anwendungsname, zu dem der Alert gehört. |
environment | String | Der Name der Anwendungsumgebung, zu der der Alert gehört. |
tags | Array | Dem Alert zugeordneter Namespace. |
human_tags | Array | Dem Alert zugeordneter benutzerdefinierter Namespace. |
metric_name | String | Name der Metrik, für die der Alert erstellt wurde. |
field | String | Feldname des Alerts. |
trigger_label | String | Name des Triggers. |
trigger_description | String | Beschreibung des Triggers. |
last_value | String | Letzter für den Alert aufgezeichneter Wert. |
peak_value | String | Höchster für den Alert aufgezeichneter Wert. |
mean_value | String | Durchschnitt aller Werte für den Alert. |
comparison_operator | String | Vom Benutzer festgelegter Vergleichsoperator, basierend auf dem der Alert ausgelöst wird. |
comparison_value | String | Vom Benutzer festgelegter Vergleichswert der Metrik, basierend auf dem der Alert ausgelöst wird. |
human_last_value | String | Letzter Metrikwert, der für den Alert seit dem Öffnen in einem lesbareren Format aufgezeichnet wurde. |
human_peak_value | String | Höchster Wert des Metrikwerts, der für den Alert aufgezeichnet wurde, während er offen war. |
human_mean_value | String | Durchschnittswert des Metrikwerts für den Alert, während er offen war, in einem lesbareren Format. |
human_comparison_value | String | Vom Benutzer festgelegter Vergleichswert für die Alert-Metrik, basierend auf dem der Alert ausgelöst wird, in einem lesbaren Format. |
created_at | String | Zeitstempel, zu dem der Alert erstellt wurde. |
opened_at | String | Zeitstempel (ISO8601), zu dem der Alert geöffnet wurde. |
resolved_at | String | Zeitstempel (ISO8601), zu dem der Alert gelöst wurde. |
closed_at | String | Zeitstempel (ISO8601), zu dem der Alert geschlossen wurde. |
warmup_duration | String | Zeit in Minuten, die AppSignal wartet, bevor ein Alert geöffnet wird. |
cooldown_duration | String | Zeit in Minuten, die AppSignal wartet, bevor ein Alert geschlossen wird. |
alert_url | String | URL des Alerts, damit Benutzer ihn in AppSignal ansehen können. |
edit_trigger_url | String | URL des Alerts, damit Benutzer ihn in AppSignal bearbeiten können. |