5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

New Relic Workflow Automationでアラート通知を動的に制御してみる

5
Last updated at Posted at 2026-04-01

New Relic 上で運用フローを自動化することで運用のトイルを削減できるようになりました!設定例についてご紹介です!

最新のアップデートの詳細はこちら
New Relic アップデート一覧

無料のアカウントで試してみよう!
New Relic フリープランで始めるオブザーバビリティ!

Workflow Automation とは?

image.png

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の名前に応じて条件を分岐させて、アラート通知のメール内容を動的に変えて通知するフローの定義例になります。

Workflow Automation 例
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から呼び出す設定を試しています。

image.png

image.png

まとめ

Workflow Automationで運用フローを自動化することで、複雑な運用タスクや障害対応を自動化でき、対応工数を削減することができます。是非、お試しください!

New Relicでは、新しい機能やその活用方法について、QiitaやXで発信しています!
無料でアカウント作成も可能なのでぜひお試しください!

New Relic株式会社のX(旧Twitter)Qiita Organizationでは、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。

無料のアカウントで試してみよう!
New Relic フリープランで始めるオブザーバビリティ!

image.png

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?