New Relic 上で運用フローを自動化することで運用のトイルを削減できるようになりました!設定例についてご紹介です!
最新のアップデートの詳細はこちら
New Relic アップデート一覧
無料のアカウントで試してみよう!
New Relic フリープランで始めるオブザーバビリティ!
Workflow Automation とは?
New RelicのWorkflow Automationは、コードを書くことなく、インシデント対応からインフラ管理までを自動化できる強力な機能です。
AWSやAzure、Slack、Jira、PagerDutyといった外部ツールと連携し、複雑な運用タスクを自動実行することができます。
主なメリット
インシデント対応の圧倒的な迅速化
アラート検知をトリガーに、EC2インスタンスのサイズ変更、デプロイメントのロールバック、サービスの再起動などを自動実行。人間が介在することなく、システムを即座に正常な状態へ引き戻せます。
ツール間の壁を取り払う連携力
AWS、Azure、Slack、Jira、ServiceNow、さらには任意のHTTP APIなど様々なサービスと連携した運用フロー自動化をNew Relicで組める。
安心の「承認ゲート」機能
「自動化は怖いが、手動は面倒」という課題を解決します。本番環境の拡張やロールバックといった重要な処理の前に**人間の監視(承認ボタン)**を組み込むことで、安全性と効率を両立できます。
複雑な業務ロジックの再現
条件分岐、ループ処理、データ変換といったロジックをノーコードで構築可能。各組織固有の「独自の運用プロセス」をそのまま自動化できます。
活用例
例えば、以下の様な運用フローを作ることができます。
| カテゴリ | 具体的な活用例(オートメーション) |
|---|---|
| インシデント対応 | ・CPU高負荷時にEC2インスタンスを自動スケール ・デプロイ失敗時に数分以内で自動ロールバックを実行 ・エラー率急上昇時にサービスを自動再起動(手動介入を排除) |
| インフラ管理 | ・スケジュールに基づいたリソースの自動拡張/縮小 ・条件合致時のランブック自動実行 ・AWSリソースの自動作成およびクリーンアップ |
| 通知の最適化 | ・Slackへグラフ・詳細データ付きのリッチな通知を送信 ・定期的なCSVレポートの自動生成 ・ダッシュボード表示に向けたデータの自動フォーマット |
| 外部ツール統合 | ・アラート発生に連動したJiraチケットの自動更新 ・サードパーティAPIのトリガー(条件ベース) ・New Relicのデータを外部ダッシュボードへ同期 |
公式ドキュメントでワークフロー例が公開されてますのでご参考にして下さい。
利用にあたっての要件
Workflow Automationを利用するにはAdvanced CCUのオプションが必要になります。
Advanced CCUの詳細は以下記事をご確認ください。
Workflow Automationの作成方法
Workflow Automationの作成方法は2つあります。
①テンプレートを使用してワークフローを作成
予め用意されてたテンプレートからすぐにワークフローを作成することができます。

②独自のワークフローを作成する
テンプレートを使わず、独自のワークフローを一から作成することもできます。

ワークフローで定義できるアクションが豊富にあります。詳細は以下ドキュメントをご確認下さい。
ワークフローはノーコードで作成できますが、YAMLでルールが定義されています。
ワークフローを定義するビュー下の以下アイコンをクリックすると定義されているYAMLを確認できます。

他フローで定義されたYAMLを流用してフローを作ることも可能です。

YAMLの定義については以下ドキュメントをご確認下さい。
サンプルのフロー
発生したIssueの名前に応じて条件を分岐させて、アラート通知のメール内容を動的に変えて通知するフローの定義例になります。


name: alert-enrich
description: ''
workflowInputs:
issuename1: # 条件分岐で発生したアラートIssueのタイトルでメール通知の条件を変更する
type: String
defaultValue: >-
catalogue-web - Largest Contentful Paint query result is < 95.0 on
'catalogue-web - Largest Contentful Paint (SLO compliance)'
validations: []
required: true
issuename2:
type: String
defaultValue: Web performance warning
validations: []
required: true
emailaddress: # 通知先メールアドレスを設定
type: String
defaultValue: sample@sample.com
validations: []
required: true
steps:
- name: CheckIncident # Workflowが発動した直前で作成されたIssueの情報を取得
type: action
action: newrelic.nrdb.query
version: 1
inputs:
query: >-
SELECT title,event,issueId,issueLink FROM `NrAiIssue` SINCE 24 hours ago
WHERE title like '%catalog%' and event = 'create' limit 1
format: JSON
accountIds:
- NewRelicアカウントID
selectors: # メール通知のアクションで使う対象Issueのタイトル、リンクなどを取得
- expression: .results[0].title
name: title
- name: issueId
expression: .results[0].issueId
- name: issueLink
expression: .results[0].issueLink
- name: SendToLog # デバッグのため、NRQLの実行結果をログとして出力
type: action
action: newrelic.ingest.sendLogs
version: 1
inputs:
logs:
- message: ${{.steps.CheckIncident.outputs.title}}
- message: ${{ .steps.CheckIncident.outputs.results[0].title}}
- name: switch_1 # Issueのタイトルに応じて、メール通知のアクションを変更する
type: switch
switch:
- condition: >-
${{ .steps.CheckIncident.outputs.title == .workflowInputs.issuename1
}}
next: CheckLogMessage1
- condition: >-
${{ .steps.CheckIncident.outputs.title == .workflowInputs.issuename2
}}
next: CheckLogMessage2
next: end
- name: CheckLogMessage1 # メール文面に入れるログのメッセージを取得
type: action
action: newrelic.nrdb.query
version: 1
inputs:
query: select message FROM Log limit 1
accountIds:
- NewRelicアカウントID
selectors:
- name: message
expression: .results[0].message
next: sendEmail1
- name: CheckLogMessage2 # メール文面に入れるログのメッセージを取得
type: action
action: newrelic.nrdb.query
version: 1
inputs:
query: select message FROM Log limit 1
accountIds:
- NewRelicアカウントID
selectors:
- name: message
expression: .results[0].message
next: sendEmail2
- name: sendEmail1 # メール通知のアクション設定
type: action
action: newrelic.notification.sendEmail
version: 1
inputs:
destinationId: ${{ .workflowInputs.emailaddress }}
subject: ${{ .steps.CheckIncident.outputs.title}}
message: |- # メール文面にNRQLで取得した対象Issueのタイトルやリンク、ログのメッセージを含める
<h2>Issue Name</h2>
${{ .steps.CheckIncident.outputs.title}}
<h2>Issue Link</h2>
${{ .steps.CheckIncident.outputs.issueLink}}
<h2>Log Message</h2>
${{ .steps.CheckLogMessage1.outputs.message}}
attachments: # NRQLの実行結果をCSVとしてメールにアタッチすることもできる
- type: QUERY
filename: log
format: CSV
query: SELECT * FROM Log limit 5
accountIds:
- NewRelicアカウントID
next: end
- name: sendEmail2
type: action
action: newrelic.notification.sendEmail
version: 1
inputs:
destinationId: ${{ .workflowInputs.emailaddress }}
subject: ${{ .steps.CheckIncident.outputs.title}}
message: |-
<h2>Issue Name</h2>
${{ .steps.CheckIncident.outputs.title}}
<h2>Issue Link</h2>
${{ .steps.CheckIncident.outputs.issueLink}}
<h2>Log Message</h2>
${{ .steps.CheckLogMessage1.outputs.message}}
attachments:
- type: QUERY
filename: log
format: JSON
query: SELECT * FROM Log limit 5
accountIds:
- NewRelicアカウントID
next: end
ワークフローの実行方法
ワークフローは次の3つの方法で実行できます。
アラートから: アラート条件に違反したときにワークフローを自動的に開始します
オンデマンド: 必要に応じて API 経由でワークフローを手動でトリガーします
スケジュールに従って: cron 式を使用して特定の時間にワークフローを自動的に実行します。
今回のサンプルフローはアラートの発火をトリガーに通知を動的に変更するフローなので、アラートのWorkflowから呼び出す設定を試しています。
まとめ
Workflow Automationで運用フローを自動化することで、複雑な運用タスクや障害対応を自動化でき、対応工数を削減することができます。是非、お試しください!
New Relicでは、新しい機能やその活用方法について、QiitaやXで発信しています!
無料でアカウント作成も可能なのでぜひお試しください!
New Relic株式会社のX(旧Twitter) や Qiita Organizationでは、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。
無料のアカウントで試してみよう!
New Relic フリープランで始めるオブザーバビリティ!



