Pular para o conteúdo principal
Este endpoint da API de Erros é fornecido para adicionar erros adicionais ao AppSignal, onde uma integração existente não pode ser usada ou a linguagem usada ainda não é suportada.

Endpoint

Método da requisição: POST
EndpointDescrição
https://appsignal-endpoint.net/errorsAceita dados formatados em JSON

Parâmetros de URL

ParâmetroTipoDescrição
api_keyStringChave de API Front-end, pode ser encontrada nas configurações do App.
Shell
https://appsignal-endpoint.net/errors?api_key=<api_key>

Parâmetros do corpo

O corpo do post deve conter um objeto JSON, formatado da seguinte forma:
ParâmetroTipoDescrição
timestampIntegerTimestamp (Epoch) de quando o erro ocorreu
actionString(Opcional) Nome da action onde o erro ocorreu (ex.: BlogpostController#show ou UserInfoLambda#perform)
namespaceStringNamespace onde o erro ocorreu (ex.: frontend ou lambda)
errorErrorObjeto Error, veja a descrição abaixo
revisionString(Opcional) Hash completo de revisão (GIT) da aplicação
tagsObject<String, String>(Opcional) Tags para filtrar o sample ou fornecer contexto adicional. Certifique-se de que tanto as chaves quanto os valores sejam strings (ex.: {"account_id": "abc-123"})
paramsObject<String, String>(Opcional) Parâmetros que foram passados para a função onde o erro ocorreu. Certifique-se de que tanto as chaves quanto os valores sejam strings (ex.: {"id": "abc-123"})
environmentObject<String, String>(Opcional) Valores de ambiente que estavam definidos quando o erro ocorreu. Certifique-se de que tanto as chaves quanto os valores sejam strings (ex.: {"REGION": "eu-central-1"})
breadcrumbsArray<Breadcrumb>(Opcional) Array de breadcrumbs, registrados antes do erro ocorrer. Veja abaixo a descrição do objeto Breadcrumb
languageString(Opcional) String de linguagem, usada para formatar o backtrace. Valores aceitos são ruby, javascript. Deixe vazio ao usar outra linguagem
Error:
ParâmetroTipoDescrição
nameStringNome do erro (ex.: StandardError)
messageString(Opcional) Mensagem do erro
backtraceArray<String>(Opcional) Array de linhas de backtrace, cada linha deve ser uma string
Breadcrumb:
ParâmetroTipoDescrição
categoryStringCategoria para rotular o evento (ex.: network ou navigation)
actionStringInformação contextual relacionada ao evento
messageString(opcional) Uma mensagem de log ou outra string para enviar ao AppSignal
metadataObject<String, String>(opcional) Um objeto de metadados relacionados ao evento
Por exemplo:
{
  "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"
}

Exemplo

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
Nota: Este endpoint é otimizado para grandes volumes de tráfego e não valida a chave da API ou o payload, uma resposta 200 (OK) é retornada quando o tamanho do corpo está dentro do limite de 200k. Isso não significa que a requisição é aceita ao ser recebida.