Você pode usar a APIde eventos para relatar um evento de gatilho de incidente de alerta personalizado para New Relic. Este evento não cria diretamente um incidente, mas aciona a criação do incidente.
A API é um endpoint assíncrono. Isso significa que você pode enviar um grande volume de POSTS, de forma confiável e com baixa latência de resposta.
Usando a API: uma visão geral
Este é o processo geral para enviar eventos de incidente personalizados para o New Relic por meio da API de evento de incidente:
- Gere um para a conta para a qual você deseja relatar dados.
- Antes de começar a criar um atributo personalizado, revise os limites e caracteres restritos da API do evento.
- Gere o JSON para o seu evento de incidente que segue nossas diretrizes de formato JSON.
- Envie uma carga JSON compactada (por exemplo, gzip ou deflate) para o endpoint HTTPS usando curl em uma solicitação POST.
Depois de começar a enviar dados de eventos de incidente para o New Relic, recomendamos que você configure a condição do alerta do NRQL para receber notificações sobre erros de análise.
Exemplo JSON
Sua carga JSON pode ser semelhante a este exemplo.
[ { "eventType": "NrAiIncidentExternal", "title": "Test", "description": "The latency is above threshold of 500000 MS", "state": "trigger", "source": "luna", "entityName": "testEntity", "entity.guid": "testEntity123", "aggregationTag.serviceId": 5, "aggregationTag.environment": "testing", "aggregationTag.errorId": 10543, "tag.stackTrace": "some stack trace...", "version": 1 }]
O campo eventType
deve usar NrAiIncidentExternal
.
Envie seu evento de incidente pela linha de comando
Aqui está um exemplo de como usar curl para enviar sua carga JSON.
$gzip -c example_incidents.json | curl --data-binary @- \>-X POST -H "Content-Type: application/json" \>-H "Api-Key: YOUR_LICENSE_KEY" -H "Content-Encoding: gzip" \>https://insights-collector.newrelic.com/v1/accounts/YOUR_ACCOUNT/events
Response{"success":true, "uuid":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}%
Depois de enviar com sucesso os dados do evento incidente, você poderá vê-los na interface de alertas ou consultando esses dados.
Exemplo de consulta para evento de incidente
Você pode consultar seus dados com a API Nerdgraph.
Aqui está um exemplo de consulta NerdGraph e seu resultado.
{ actor { account(id: YOUR_ACCOUNT_ID) { nrql(query: "SELECT * FROM NrAiInternalIncident since 3 days ago") { results } } }}
"results": [ { "timestamp": 1641910123824, "totalViolations": 3, "violationIds": "[416e2e55069764086ad83e97a1160be0cb4c545b7950522f7c86baaa2a11b9b6]", "triggeredAt": 1641909163980, "entitiesData.ids": "testEntity123", "entitiesData.types": "unknown", "labelsHash": "91f938318e899dcd62965e2724548f4844f2898f3cf1c5411397ecc0eec87fc1", "annotations.description": "[\"The latency is above threshold of 500000 MS\"]", "labels.originalAccountIds": "YOUR_ACCOUNT_ID", "entitiesData.names": "testEntity", "entitiesData.entities": "{\"id\":\"testEntity123\",\"name\":\"testEntity\",\"type\":\"unknown\"}", "priority": "HIGH", "labels.serviceId": "5", "labels.environment": "testing", "closedAt": "", "updatedAt": 1641910123824, "annotations.title": "[\"Test\",\"Test2222\",\"Test3\"]", "nrAccountId": YOUR_ACCOUNT_ID, "accumulations": "{\"source\":[\"rest\"],\"origin\":[\"luna\"],\"entity_guid\":[\"testEntity123\"],\"tag.stackTrace\":[\"some stack trace...\"]}", "labels.accountIds": "YOUR_ACCOUNT_ID", "createdAt": 1641909163997, "priority.order": 2, "labels.aggregationKeys": "416e2e55069764086ad83e97a1160be0cb4c545b7950522f7c86baaa2a11b9b6", "accumulations.origins": "[\"luna\"]", "accumulations.entity_guid": "[\"testEntity123\"]", "incidentId": "a06ffb92-2f7e-473b-953f-151ff4777cb0", "labels.errorId": "10543", "dataMLModules": "{}", "triggerEvent": "VIOLATION_ADDED", "accumulations.tag.stackTrace": "[\"some stack trace...\"]", "isIint": false, "accumulations.sources": "[\"rest\"]", "entitiesData": "{\"name\":\"testEntity\",\"id\":\"testEntity123\",\"type\":\"unknown\",\"entities\":\"{\\\"id\\\":\\\"testEntity123\\\",\\\"name\\\":\\\"testEntity\\\",\\\"type\\\":\\\"unknown\\\"}\"}", "annotations": "{\"title\":[\"Test\",\"Test2222\",\"Test3\"],\"description\":[\"The latency is above threshold of 500000 MS\"]}", "labels": "{\"accountId\":\"XXXXXXX\",\"originalAccountId\":\"XXXXXXX\",\"entityId\":\"testEntity123\",\"entityName\":\"testEntity\",\"entityType\":\"unknown\",\"aggregationKey\":\"416e2e55069764086ad83e97a1160be0cb4c545b7950522f7c86baaa2a11b9b6\",\"serviceId\":\"5\",\"errorId\":\"10543\",\"environment\":\"testing\"}", "state": "CREATED" }]
Especificação da API de evento de incidente
A API de evento de incidente usa os tipos de valor da API de evento. Para obter descrições desses tipos de valor e diretrizes sobre como usá-los, consulte nossas diretrizes JSON da API de eventos.
Cuidado
Se você criar dois eventos de gatilho com exatamente o mesmo aggregationTag
, eles serão agregados ao mesmo incidente. Ou seja, apenas um incidente é criado a partir de múltiplos gatilhos.
Campo | Descrição |
---|---|
string, número ou timestamp | REQUIRED Qualquer atributo prefixado com Em outras palavras, dois eventos de gatilho com a mesma tag de agregação são agregados ao mesmo incidente. (Assumindo que nenhum dos eventos de gatilho são eventos de resolução). Ao resolver um incidente, é importante que o evento de resolução inclua a mesma tag de agregação. A tag de agregação com palavras-chave reservadas é filtrada. Por exemplo, em uma carga JSON com
|
enumeração: ( | REQUIRED Se o evento deve desencadear um novo incidente ou resolver um existente. As atualizações do incidente também podem ser enviadas usando o gatilho. |
enumeração: ( | A prioridade do incidente. Padrão: A prioridade mais alta será usada quando prioridades diferentes forem enviadas. |
corda | REQUIRED, when O título do evento acionador. |
corda | REQUIRED, when A origem do incidente, ou o sistema de monitoramento que o desencadeou (não a entidade que causou a falha). |
corda | A descrição do evento desencadeador. |
corda | Um link direto para uma página relacionada ao incidente. |
corda | Uma URL de runbook. |
corda | Um ID externo que você pode anexar ao evento. Por exemplo, pode ser usado para consultar erros relacionados à ingestão deste evento. |
corda | O nome da entidade que gerou o incidente. |
corda | O ID da entidade que gerou o incidente. |
float | A versão do formato atual. |