• /
  • EnglishEspañolFrançais日本語한국어Português
  • Inicia sesiónComenzar ahora

Te ofrecemos esta traducción automática para facilitar la lectura.

En caso de que haya discrepancias entre la versión en inglés y la versión traducida, se entiende que prevalece la versión en inglés. Visita esta página para obtener más información.

Crea una propuesta

RCA de alerta con Autopilot y Slack

|View as Markdown (English)

Esta plantilla ejecuta Autopilot en una alerta de New Relic y publica el análisis de causa raíz en un canal de Slack. Si Autopilot no devuelve ninguna respuesta útil, el flujo de trabajo envía un aviso de error en su lugar. Para ver los requisitos previos compartidos y las notas de configuración, consulte Plantillas de flujo de trabajo de Autopilot RCA.

Antes de usar este flujo de trabajo, asegúrese de tener:

  • Un destino de Slack configurado en New Relic — consulte Crear destinos
  • El UUID del destino y el nombre del canal de Slack objetivo

Este flujo de trabajo completa los siguientes pasos:

  1. Envía un mensaje inicial de Slack para confirmar la alerta y avisar al equipo que el RCA está en marcha
  2. Ejecuta Autopilot con un símbolo de análisis de causa raíz limitado al ID del problema de la alerta
  3. Comprueba si Autopilot devolvió una respuesta utilizable
  4. Reformatea la respuesta como bloques de Slack Block Kit y publica los hallazgos en Slack (si Autopilot devuelve una respuesta)
  5. Publica un mensaje de error con el ID del problema (si Autopilot no devuelve ninguna respuesta)

Este flujo de trabajo usa newrelic.autopilot.run y 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

Cómo funciona

El paso runAutopilot usa dos selectores para manejar la variabilidad de forma de finalAnswer en la capa de extracción de datos:

  • analysisRaw captura el valor finalAnswer sin procesar. El paso checkAgentResponse usa esto para determinar si Autopilot devolvió algo.
  • analysisText normaliza el valor —si finalAnswer es una cadena codificada en JSON, la analiza primero y luego extrae el contenido de texto de .card.body. El paso buildSlackBlocks utiliza analysisText directamente, sin ningún análisis adicional.

buildSlackBlocks convierte los marcadores de encabezado **bold** y ###/## al formato mrkdwn de Slack, divide el resultado en saltos de línea y envuelve cada línea no vacía en un bloque section de Block Kit.

Plantillas de flujo de trabajo de RCA de Autopilot

Requisitos previos compartidos y notas de configuración para todas las plantillas de RCA de Autopilot

Descripción general de Autopilot

Aprenda cómo Autopilot investiga alertas e incidentes

Lógica condicional

Usar declaraciones de cambio para ramificar en caso de éxito o fracaso

Enviar notificaciones de Slack

Referencia completa para la acción sendSlack

Crear destinos

Configure el destino de Slack requerido por este flujo de trabajo

RCA de alerta con Autopilot y correo electrónico

Enviar los hallazgos del RCA por correo electrónico en lugar de Slack

Solucionar problemas de automatización de flujo de trabajo

Soluciones para problemas comunes de integración de Autopilot y Slack

Copyright © 2026 New Relic Inc.

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