• /
  • EnglishEspañolFrançais日本語한국어Português
  • EntrarComeçar agora

Esta tradução de máquina é fornecida para sua comodidade.

Caso haja alguma divergência entre a versão em inglês e a traduzida, a versão em inglês prevalece. Acesse esta página para mais informações.

Criar um problema

RCA de alerta com Autopilot e Slack

|View as Markdown (English)

Este modelo executa Autopilot em um alerta do New Relic e publica a análise de causa raiz em um canal do Slack. Se Autopilot não retornar uma resposta utilizável, o fluxo de trabalho enviará um aviso de erro em vez disso. Para pré-requisitos compartilhados e notas de configuração, consulte Modelos de fluxo de trabalho do Autopilot RCA.

Antes de usar este fluxo de trabalho, certifique-se de ter:

  • Um destino do Slack configurado no New Relic — consulte Criar Destinos
  • O UUID do destino e o nome do canal do Slack de destino

Este fluxo de trabalho completa as seguintes etapas:

  1. Envia uma mensagem inicial do Slack para reconhecer o alerta e informar à equipe que a RCA está em andamento
  2. Executa Autopilot com um prompt de análise de causa raiz com escopo no ID do problema do alerta
  3. Verifica se Autopilot retornou uma resposta utilizável
  4. Reformata a resposta como blocos do Slack Block Kit e publica as descobertas no Slack (se Autopilot retornar uma resposta)
  5. Publica uma mensagem de erro com o ID do problema (se Autopilot não retornar nenhuma resposta)

Este fluxo de trabalho usa newrelic.autopilot.run e newrelic.notification.sendSlack.

name: autopilotSlackRCA
description: Automatically analyze New Relic alerts with Autopilot and send cleanly formatted findings to Slack
workflowInputs:
issueId:
type: String
required: true
validations:
- errorMessage: Must be a valid New Relic issue ID in UUID format
pattern: '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$'
type: regex
slackDestinationId:
type: String
required: true
validations:
- pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
errorMessage: "Invalid format. Please provide a valid UUID."
type: regex
channel:
type: String
required: true
steps:
- name: notifyAlertReceived
type: action
action: newrelic.notification.sendSlack
version: 1
inputs:
destinationId: ${{ .workflowInputs.slackDestinationId }}
channel: ${{ .workflowInputs.channel }}
text: |-
🔔 *Alert Received — Starting Root Cause Analysis*
⏳ Running Autopilot for RCA, please wait...
- name: runAutopilot
type: action
action: newrelic.autopilot.run
version: 1
inputs:
prompt: >-
Perform a root cause analysis for the following New Relic alert:
Issue ID: ${{ .workflowInputs.issueId }}
Provide your comprehensive analysis including Summary, Root Cause, and Remediation Actions.
selectors:
- name: analysisRaw
expression: .response.finalAnswer
- name: analysisText
expression: '(.response.finalAnswer | if type=="string" then fromjson else . end).card.body | map(.value) | join("\n\n")'
ignoreErrors: true
- name: checkAgentResponse
type: switch
switch:
- condition: ${{ (.steps.runAutopilot.outputs.analysisRaw // "") != "" }}
next: buildSlackBlocks
next: sendAutopilotError
- name: buildSlackBlocks
type: assign
inputs:
blocks: '${{ (.steps.runAutopilot.outputs.analysisText // "") | gsub("\\*\\*"; "*") | gsub("### "; "*") | gsub("## "; "*") as $text | ([ $text / "\n" ]) as $lines | [ { "type": "header", "text": { "type": "plain_text", "text": "✅ Autopilot RCA Complete" } }, { "type": "divider" } ] + [ $lines[][] | select(. != "") | { "type": "section", "text": { "type": "mrkdwn", "text": . } } ] }}'
next: sendRcaFindings
- name: sendRcaFindings
type: action
action: newrelic.notification.sendSlack
version: 1
inputs:
destinationId: ${{ .workflowInputs.slackDestinationId }}
channel: ${{ .workflowInputs.channel }}
blocks: ${{ .steps.buildSlackBlocks.outputs.blocks }}
next: end
- name: sendAutopilotError
type: action
action: newrelic.notification.sendSlack
version: 1
inputs:
destinationId: ${{ .workflowInputs.slackDestinationId }}
channel: ${{ .workflowInputs.channel }}
text: |-
🟥 *Autopilot RCA Failed*
Could not extract findings from Autopilot response for issue: ${{ .workflowInputs.issueId }}
Please investigate manually.
next: end

Como funciona

A etapa runAutopilot usa dois seletores para lidar com a variabilidade de formato de finalAnswer na camada de extração de dados:

  • analysisRaw captura o valor bruto de finalAnswer. A etapa checkAgentResponse usa isso para determinar se Autopilot retornou algo.
  • analysisText normaliza o valor — se finalAnswer for uma string codificada em JSON, ele a analisa primeiro e, em seguida, extrai o conteúdo de texto de .card.body. A etapa buildSlackBlocks utiliza analysisText diretamente, sem qualquer análise adicional.

buildSlackBlocks converte os marcadores de cabeçalho **bold** e ###/## para o formato mrkdwn do Slack, divide o resultado por quebras de linha e envolve cada linha não vazia em um bloco section do Block Kit.

Modelos de fluxo de trabalho de RCA do Autopilot

Pré-requisitos e notas de configuração compartilhados para todos os templates de RCA do Autopilot

Visão geral do Autopilot

Saiba como o Autopilot investiga alertas e incidentes

Lógica condicional

Utilize instruções switch para ramificar em caso de sucesso ou falha

Enviar notificações do Slack

Referência completa para a ação sendSlack

Criar destinos

Configure o destino do Slack exigido por este fluxo de trabalho

RCA de alerta com Autopilot e e-mail

Enviar resultados da RCA por e-mail em vez do Slack

Solução de problemas de automação de fluxo de trabalho

Soluções para problemas comuns de integração do Autopilot e Slack

Copyright © 2026 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.