> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aciona.me/llms.txt
> Use this file to discover all available pages before exploring further.

# New Relic

> Conecte o New Relic ao aciona.me com Workflows e um Webhook destination.

## Visão geral

O New Relic envia os alertas por um **Webhook destination**, renderizando um template Handlebars sobre o payload do issue. Um **Workflow** decide quais issues são enviados e em quais transições.

|                    |                                     |
| ------------------ | ----------------------------------- |
| **Tipo de fonte**  | `New Relic`                         |
| **Mecanismo**      | Workflows + Webhook destination     |
| **Correlação**     | `issueId`                           |
| **Auto-resolução** | ✅ (exige `Closed` em "Notify when") |

## Pré-requisitos

* Permissão para criar destinations e workflows no New Relic.
* Um serviço criado no aciona.me e vinculado a um time com escala ativa.

## 1. Crie a fonte de alerta no aciona.me

Em **Fontes de alerta**, crie uma fonte do tipo **New Relic**. Copie a URL e o token.

## 2. Crie o Webhook destination

Em **Alerts → Destinations → Webhook → Create**:

<Steps>
  <Step title="Name">
    `aciona-me`
  </Step>

  <Step title="URL">
    `https://ingress.aciona.me/webhooks/<idDaFonte>`
  </Step>

  <Step title="Secure custom header">
    Nome `X-Aciona-Token`, valor `<tokenDaFonte>`. O New Relic mascara o valor depois de salvar.
  </Step>

  <Step title="Payload template">
    Cole o template Handlebars recomendado:

    ```handlebars theme={null}
    {
      "issueId": {{json issueId}},
      "state": {{json state}},
      "triggerEvent": {{json triggerEvent}},
      "priority": {{json priority}},
      "issueTitle": {{json issueTitle}},
      "issuePageUrl": {{json issuePageUrl}},
      "issueCreatedAt": {{json issueCreatedAt}},
      "issueClosedAt": {{json issueClosedAt}},
      "accountId": {{json accountId}},
      "accountName": {{json accountName}},
      "conditionName": {{json accumulations.conditionName}},
      "conditionDescription": {{json accumulations.conditionDescription}},
      "policyName": {{json accumulations.policyName}},
      "policyUrl": {{json accumulations.policyUrl}},
      "runbookUrl": {{json accumulations.runbookUrl}},
      "entityName": {{json entitiesData.entities.[0].name}},
      "entityType": {{json entitiesData.entities.[0].type}},
      "entityGuid": {{json entitiesData.entities.[0].guid}},
      "tags": {{json tags}},
      "details": {{json details}}
    }
    ```
  </Step>
</Steps>

## 3. Crie o Workflow

Em **Alerts → Workflows → New workflow**:

<Steps>
  <Step title="Filtro (opcional)">
    Por exemplo, apenas issues com prioridade `CRITICAL` ou `HIGH`.
  </Step>

  <Step title="Notify → Add destination → Webhook">
    Selecione `aciona-me`.
  </Step>

  <Step title="Notify when — o passo crítico">
    Abra o menu **"Notify when"** e garanta que **AMBOS** estejam marcados:

    * ✅ `Activated`
    * ✅ `Closed`
  </Step>
</Steps>

<Warning>
  **`Closed` desmarcado é o problema número um das integrações com New Relic.** Sem ele, o New Relic só envia o evento de abertura e os acionamentos no aciona.me nunca fecham sozinhos. É o equivalente ao `send_resolved: true` do Alertmanager.
</Warning>

## 4. Teste

Use **Test workflow** para enviar um payload de exemplo. Confirme o acionamento em **Acionamentos**.

Para validar a auto-resolução, espere um issue fechar naturalmente (ou feche-o manualmente) e confirme que o acionamento correspondente foi resolvido.

## Como os campos são traduzidos

### Estado

A decisão segue esta ordem de precedência:

| Origem          | Valores                                                                                                       |
| --------------- | ------------------------------------------------------------------------------------------------------------- |
| `state`         | `CREATED`, `ACTIVATED` → abre · `CLOSED` → resolve                                                            |
| `triggerEvent`  | `CLOSE_INACTIVE`, `CLOSE_TTL`, `USER_ACTION` → resolve · `STATE_CHANGE`, `INCIDENT_ADDED`, `ACTIVATED` → abre |
| `issueClosedAt` | Preenchido → resolve                                                                                          |
| Padrão          | Abre (prefere notificar)                                                                                      |

<Note>
  `triggerEvent = INCIDENT_CLOSED` **não** resolve o acionamento. No modelo de Issues do New Relic, um issue pode conter vários sub-eventos; o fechamento de um deles não significa que o issue acabou. Resolver nesse momento fecharia o acionamento cedo demais.
</Note>

### Severidade

| `priority` | Severidade |
| ---------- | ---------- |
| `CRITICAL` | `critical` |
| `HIGH`     | `high`     |
| `MEDIUM`   | `warning`  |
| `LOW`      | `info`     |

### Serviço

A pista vem, nesta ordem, da tag de serviço afetado, do nome da entidade, do nome da condição e do nome da política. Marque suas entidades com uma tag de serviço que bata com o nome no aciona.me.

## Solução de problemas

<AccordionGroup>
  <Accordion title="O acionamento abre, mas nunca fecha sozinho" icon="triangle-alert">
    `Closed` não está marcado em "Notify when" no Workflow. Marque e teste de novo.
  </Accordion>

  <Accordion title="Pararam de chegar webhooks de repente" icon="bell-off">
    O New Relic coloca destinations em **snooze** automático depois de erros consecutivos (4xx, 5xx ou timeouts). Verifique o status do destination no painel do New Relic. Para detectar isso proativamente, crie um alerta NRQL sobre `NrIntegrationError` com `category='NotificationError'`.
  </Accordion>

  <Accordion title="Título aparece como Untitled alert" icon="type">
    O template não emite `issueTitle`. Use o template recomendado.
  </Accordion>

  <Accordion title="Severidade menor do que o esperado" icon="gauge">
    O template histórico do New Relic mapeia `HIGH` para `WARNING` em um campo legado. Emita `priority` explicitamente, como no template acima — ele tem precedência.
  </Accordion>
</AccordionGroup>
