Passer au contenu principal
Ce point de terminaison de l’API Error est fourni pour ajouter des erreurs supplémentaires à AppSignal, lorsqu’une intégration existante ne peut pas être utilisée ou que le langage utilisé n’est pas (encore) pris en charge.

Point de terminaison

Méthode de requête : POST
Point de terminaisonDescription
https://appsignal-endpoint.net/errorsAccepte les données formatées JSON

Paramètres d’URL

ParamètreTypeDescription
api_keyStringClé d’API Front-end, peut être trouvée dans les paramètres de l’application.
Shell
https://appsignal-endpoint.net/errors?api_key=<api_key>

Paramètres du corps

Le corps de la requête POST doit contenir un objet JSON, formaté comme suit :
ParamètreTypeDescription
timestampIntegerTimestamp (Epoch) auquel l’erreur s’est produite
actionString(Optionnel) Nom de l’action où l’erreur s’est produite (par exemple BlogpostController#show ou UserInfoLambda#perform)
namespaceStringEspace de noms où l’erreur s’est produite (par exemple frontend ou lambda)
errorErrorObjet Error, voir la description ci-dessous
revisionString(Optionnel) Hash complet de la révision (GIT) de l’application
tagsObject<String, String>(Optionnel) Tags pour filtrer l’échantillon ou fournir un contexte supplémentaire. Assurez-vous que les clés et les valeurs sont des chaînes (par exemple {"account_id": "abc-123"})
paramsObject<String, String>(Optionnel) Paramètres qui ont été passés à la fonction où l’erreur s’est produite. Assurez-vous que les clés et les valeurs sont des chaînes (par exemple {"id": "abc-123"})
environmentObject<String, String>(Optionnel) Valeurs d’environnement définies au moment où l’erreur s’est produite. Assurez-vous que les clés et les valeurs sont des chaînes (par exemple {"REGION": "eu-central-1"})
breadcrumbsArray<Breadcrumb>(Optionnel) Tableau de breadcrumbs, enregistrés avant que l’erreur ne se produise. Voir ci-dessous la description de l’objet Breadcrumb
languageString(Optionnel) Chaîne de langage, utilisée pour formater la backtrace. Les valeurs acceptées sont ruby, javascript. Laissez vide lorsque vous utilisez un autre langage
Error :
ParamètreTypeDescription
nameStringNom de l’erreur (par exemple StandardError)
messageString(Optionnel) Message d’erreur
backtraceArray<String>(Optionnel) Tableau des lignes de backtrace, chaque ligne doit être une chaîne
Breadcrumb :
ParamètreTypeDescription
categoryStringCatégorie pour étiqueter l’événement (par exemple network ou navigation)
actionStringInformations contextuelles liées à l’événement
messageString(optionnel) Un message de log ou une autre chaîne à envoyer à AppSignal
metadataObject<String, String>(optionnel) Un objet de métadonnées lié à l’événement
Par exemple :
{
  "action": "BlogpostController#show",
  "namespace": "frontend",
  "timestamp": 1559201249,
  "error": {
    "name": "StandardError",
    "message": "Error message",
    "backtrace": ["backtrace/line:1", "backtrace/line:2"]
  },
  "environment": {
    "os": "windows",
    "agent": "super secret user agent"
  },
  "params": {
    "foo": "bar"
  },
  "tags": {
    "account_id": "abc-123"
  },
  "revision": "revision-abc",
  "breadcrumbs": [
    {
      "timestamp": 1559201249,
      "category": "request",
      "action": "http://google.com",
      "message": "request failed",
      "metadata": {
        "code": "not_found"
      }
    }
  ],
  "language": "javascript"
}

Exemple

require "uri"
require "json"
require "net/http"

url = URI("https://appsignal-endpoint.net/errors?api_key=FRONTEND-API-KEY")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request.body = JSON.dump({
  "action": "BlogpostController#show",
  "namespace": "frontend",
  "timestamp": 1640327525,
  "error": {
    "name": "StandardError",
    "message": "Error message",
    "backtrace": [
      "backtrace/line:1",
      "backtrace/line:2"
    ]
  },
  "environment": {
    "os": "windows",
    "agent": "super secret user agent"
  },
  "params": {
    "foo": "bar"
  },
  "tags": {
    "account_id": "abc-123"
  },
  "revision": "revision-abc-123",
  "breadcrumbs": [
    {
      "timestamp": 1640327525,
      "category": "request",
      "action": "http://google.com",
      "message": "request failed",
      "metadata": {
        "code": "not_found"
      }
    }
  ],
  "language": "javascript"
})

response = https.request(request)
puts response.read_body
Note : Cet endpoint est optimisé pour de grands volumes de trafic et ne valide pas la clé API ni la charge utile. Une réponse 200 (OK) est renvoyée lorsque la taille du corps est dans la limite de 200k. Cela ne signifie pas que la requête est acceptée lors de sa réception.