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
| Endpoint | Descrição |
|---|
| https://appsignal-endpoint.net/errors | Aceita dados formatados em JSON |
Parâmetros de URL
| Parâmetro | Tipo | Descrição |
|---|
| api_key | String | Chave de API Front-end, pode ser encontrada nas configurações do App. |
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âmetro | Tipo | Descrição |
|---|
| timestamp | Integer | Timestamp (Epoch) de quando o erro ocorreu |
| action | String | (Opcional) Nome da action onde o erro ocorreu (ex.: BlogpostController#show ou UserInfoLambda#perform) |
| namespace | String | Namespace onde o erro ocorreu (ex.: frontend ou lambda) |
| error | Error | Objeto Error, veja a descrição abaixo |
| revision | String | (Opcional) Hash completo de revisão (GIT) da aplicação |
| tags | Object<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"}) |
| params | Object<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"}) |
| environment | Object<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"}) |
| breadcrumbs | Array<Breadcrumb> | (Opcional) Array de breadcrumbs, registrados antes do erro ocorrer. Veja abaixo a descrição do objeto Breadcrumb |
| language | String | (Opcional) String de linguagem, usada para formatar o backtrace. Valores aceitos são ruby, javascript. Deixe vazio ao usar outra linguagem |
Error:
| Parâmetro | Tipo | Descrição |
|---|
| name | String | Nome do erro (ex.: StandardError) |
| message | String | (Opcional) Mensagem do erro |
| backtrace | Array<String> | (Opcional) Array de linhas de backtrace, cada linha deve ser uma string |
Breadcrumb:
| Parâmetro | Tipo | Descrição |
|---|
| category | String | Categoria para rotular o evento (ex.: network ou navigation) |
| action | String | Informação contextual relacionada ao evento |
| message | String | (opcional) Uma mensagem de log ou outra string para enviar ao AppSignal |
| metadata | Object<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.