• /
  • EnglishEspañolFrançais日本語한국어Português
  • ログイン今すぐ開始

この機械翻訳は、参考として提供されています。

英語版と翻訳版に矛盾がある場合は、英語版が優先されます。詳細については、このページを参照してください。

問題を作成する

AutopilotとSlackを使用した集計RCA

|View as Markdown (English)

集計が発生した場合、Autopilotをトリガーして根本原因分析を実行し、調査結果を直接Slackチャンネルに投稿します。Autopilotが使用可能な応答を返さない場合、チームが手動で調査する必要があることを把握できるように、ワークフローは代わりにエラー通知を送信します。

このワークフローを使用する前に、以下のことを確認してください:

  • UUID形式のNew Relic集計のイシューID
  • New Relicで設定されたSlackの宛先 — 宛先の作成を参照してください
  • 宛先のUUIDとターゲットのSlackチャンネル名

ヒント

Alert Workflows からこのワークフローをトリガーする場合は、issueId 入力の値として {{ issueId }} を使用してください。この変数は、トリガーとなった集計の問題IDをワークフローに自動的に渡します。

このワークフローでは、次の手順を完了します:

  1. 集計を認識し、RCAが進行中であることをチームに知らせるための最初のSlackメッセージを送信します
  2. 集計の課題IDにスコープされた根本原因分析プロンプトを使用して、Autopilotを実行します
  3. Autopilot が使用可能なレスポンスを返したかどうかを確認します
  4. Autopilot が成功した場合、レスポンスを Slack Block Kit ブロックとして再フォーマットし、結果を Slack に投稿します
  5. Autopilotが失敗した場合、課題IDを含むエラーメッセージを投稿します。

このワークフローはnewrelic.autopilot.runとnewrelic.notification.sendSlackを使用します。

重要

セレクター expression の値は1行で記述する必要があります。複数行のYAMLブロックスカラー(| または |-)はセレクター式に対して評価されず、エラーを出さずに何も出力されません。

ヒント

プロンプトのコンテキストに応じて、AutopilotのfinalAnswerフィールドはプレーン文字列またはJSONエンコードされたオブジェクトのいずれかとして返される場合があります。このワークフローのanalysisTextセレクターは、両方の形式を自動的に処理します。

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

使い方

runAutopilotステップでは、データ抽出レイヤーにおけるfinalAnswerのシェイプのばらつきに対応するために、2つのセレクターを使用します:

  • analysisRawは生のfinalAnswer値をキャプチャします。checkAgentResponseステップでは、これを使用してAutopilotが何かを返したかどうかを判断します。
  • analysisTextは値を正規化します — finalAnswerがJSONエンコードされた文字列の場合、最初にそれを解析し、次に.card.bodyからテキストコンテンツを抽出します。buildSlackBlocksステップではanalysisTextを直接使用するため、フォーマットロジックをシンプルに保つことができます。

buildSlackBlocks **bold** および ###/## の見出しマーカーを Slack mrkdwn 形式に変換し、結果を改行で分割して、空ではない各行を Block Kit の section ブロックでラップします。

Autopilotの概要

Autopilotがアラートとインシデントを調査する方法について学習します

コンディショナル・ロジック

switch文を使用して、成功または失敗に応じて分岐します。

Slack通知の送信

sendSlackアクションの完全なリファレンス

目的地を作成する

このワークフローで必要なSlackの送信先を設定します。

ワークフロー自動化のトラブルシューティング

一般的なAutopilotとSlackのインテグレーションに関する問題の解決策

Copyright © 2026 New Relic株式会社。

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