Ce modĂšle exĂ©cute Autopilot sur une alerte New Relic et publie lâanalyse de la cause racine sur un canal Slack. Si Autopilot ne renvoie aucune rĂ©ponse utilisable, le workflow envoie une notification dâerreur Ă la place. Pour les prĂ©requis partagĂ©s et les notes de configuration, consultez les modĂšles de workflow Autopilot RCA.
Avant d'utiliser ce workflow, assurez-vous d'avoir :
- Destination Slack configurĂ©e dans New Relic â voir CrĂ©er des destinations
- LâUUID de la destination et le nom du canal Slack cible
Ce workflow effectue les étapes suivantes :
- Envoie un message Slack initial pour accuser réception de l'alerte et informer l'équipe que la RCA est en cours
- Exécute Autopilot avec un prompt d'analyse des causes profondes limité à l'ID du problÚme de l'alerte
- Vérifie si Autopilot a renvoyé une réponse utilisable
- Reformate la réponse sous forme de blocs Slack Block Kit et publie les résultats sur Slack (si Autopilot renvoie une réponse)
- Publie un message dâerreur avec l'ID du problĂšme (si Autopilot ne renvoie aucune rĂ©ponse)
Ce workflow utilise newrelic.autopilot.run et newrelic.notification.sendSlack.
name: autopilotSlackRCAdescription: Automatically analyze New Relic alerts with Autopilot and send cleanly formatted findings to SlackworkflowInputs: 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: truesteps: - 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: endComment ça marche
LâĂ©tape runAutopilot utilise deux sĂ©lecteurs pour gĂ©rer la variabilitĂ© de forme de finalAnswer au niveau de la couche dâextraction de donnĂ©es :
analysisRawcapture la valeur brute definalAnswer. LâĂ©tapecheckAgentResponseutilise cela pour dĂ©terminer si Autopilot a renvoyĂ© quelque chose.analysisTextnormalise la valeur â sifinalAnswerest une chaĂźne encodĂ©e en JSON, il lâanalyse dâabord, puis extrait le contenu textuel de.card.body. L'Ă©tapebuildSlackBlocksutilise directementanalysisText, sans aucune analyse supplĂ©mentaire.
buildSlackBlocks convertit les marqueurs dâen-tĂȘte **bold**, et ###/## au format mrkdwn de Slack, divise le rĂ©sultat au niveau des sauts de ligne, et enveloppe chaque ligne non vide dans un bloc Block Kit section.
Sujets connexes
ModĂšles de workflow Autopilot RCA
Prérequis communs et notes de configuration pour tous les modÚles RCA Autopilot
Vue dâensemble dâAutopilot
DĂ©couvrez comment Autopilot enquĂȘte sur les alertes et les incidents
Logique conditionnelle
Utilisez des instructions switch pour bifurquer en cas de succÚs ou d'échec
Envoyer des notifications Slack
RĂ©fĂ©rence complĂšte pour lâaction sendSlack
Créer des destinations
Configurez la destination Slack requise par ce workflow
RCA des alertes avec Autopilot et e-mail
Envoyer les résultats de la RCA par e-mail au lieu de Slack
Dépannage de l'automatisation des workflows
Solutions pour les problĂšmes courants dâintĂ©gration dâAutopilot, et de Slack