このページでは、ワークフロー自動化を使用して構築できる一般的な自動化シナリオを示します。これらの例を独自のワークフローの開始点として使用するか、すぐにデプロイできるソリューションのテンプレート ライブラリを探索してください。
インシデント対応と修復
APIゲートウェイのロールバック
API ゲートウェイの構成を以前の状態に戻して、エラーや誤った構成を修正できるようにします。
このワークフローの機能:
- New Relic Change Tracking (変更追跡機能) を使用して、問題に関連する最近のデプロイメントを検出します
- 承認ボタン(:+1: または :-1:)付きの Slack 通知を送信します
- 承認後、ロールバックを自動化するための AWS Systems Manager ドキュメントを作成します。
- API Gateway 統合を以前のLambdaバージョンにロールバックします
- ロールバックを適用するための新しいデプロイメントを作成します
- Slackに成功または失敗の通知を送信します
- 完了後にSSMドキュメントをクリーンアップします
要件:
- API Gateway および Systems Manager の権限を持つ AWS 認証情報
- 通知と承認を受け取るための設定済みSlackアプリ
- 変更追跡によるNew Relicエンティティ監視 (変更追跡機能)
キーアクション: newrelic.nerdgraph.execute 、 slack.chat.postMessage 、 slack.chat.getReactions 、 aws.systemsManager.writeDocument 、 aws.systemsManager.startAutomation 、 aws.systemsManager.waitForAutomationStatus 、 aws.systemsManager.deleteDocument
EC2インスタンス管理
EC2 インスタンスのプロビジョニング、スケーリング、終了を自動化して、最適なパフォーマンスとコストを実現します。
このワークフローの機能:
- New RelicからCPU使用率が高いというアラートを受信する
- 大量の詳細を取得し、影響を受ける EC2 インスタンスを特定します
- インスタンスの詳細を含む Slack 通知を送信し、サイズ変更の承認requests
- 承認後、インスタンスのサイズ変更を自動化するための SSM ドキュメントを作成します。
- インスタンスを停止し、インスタンスタイプを変更して再起動します
- サイズ変更プロセス中に進捗状況を Slack に送信します
- 完了を待ち、成功または失敗のステータスを送信します
- SSM文書をクリーンアップし、最終確認を送信します
要件:
- EC2 および Systems Manager の権限を持つ AWS 認証情報
- EC2 メトリクスのアクティブな New Relic アラート条件
- 通知と承認を受け取るための設定済みSlackアプリ
キーアクション: newrelic.nerdgraph.execute 、 newrelic.nrdb.query 、 slack.chat.postMessage 、 slack.chat.getReactions 、 aws.systemsManager.writeDocument 、 aws.systemsManager.startAutomation 、 aws.systemsManager.waitForAutomationStatus 、 aws.systemsManager.deleteDocument 、 utils.datetime.fromEpoch 、 utils.uuid.generate
デプロイメントのロールバック
エンティティが異常になった場合はデプロイメントをロールバックし、AWS SQS または HTTP のいずれかで通知します。
このワークフローの機能:
- エンティティの重大度を指定された期間 (デフォルトは 30 分) 監視します。
- エンティティの健全性を1分ごとにチェックします
- エンティティがCRITICALまたはWARNINGになった場合、不健全な状態をログに記録します。
- エンティティの詳細を含むロールバック通知を AWS SQS (設定されている場合) 経由で送信します。
- HTTP Webhook 経由でロールバック通知を送信します (設定されている場合)
- エンティティが全期間健全なままであれば、成功をログに記録します
- エンティティが見つからない場合は監視を停止します
要件:
- New Relicエンティティの重大度監視
- (オプション) ロールバック通知を受信するための AWS SQS キューとロール
- (オプション) ロールバック通知を受信する HTTP エンドポイント
キーアクション: newrelic.nerdgraph.execute 、 newrelic.ingest.sendLogs 、 aws.execute.api (sqs.send_message)、 http.post
データ処理とレポート
Slackにレポートを送信する
NRQL クエリ出力を CSV ファイルとして Slack に送信します。
このワークフローの機能:
- 指定された New Relic アカウントに対して NRQL クエリを実行します。
- クエリ結果からCSVファイルを生成します
- CSVファイルを指定されたSlackチャンネルにメッセージとともに投稿する
要件:
- New Relic 認証情報と機能的な NRQL クエリ
- トークンとターゲットチャンネルが設定されたSlackアプリ
キーアクション: newrelic.nrdb.query 、 utils.transform.toCSV 、 slack.chat.postMessage
JSON解析
New Relic パブリック ステータス API JSON (HTTP) を解析し、オプションで運用コンポーネントと非運用コンポーネントをログに記録します。
このワークフローの機能:
- New RelicステータスAPIからJSONデータを取得します
- コンポーネントを動作状態別に抽出し分類します
- 条件付きで運用コンポーネントをログに記録する(有効な場合)
- 条件付きで非動作コンポーネントをログに記録する(有効な場合)
- HTTPエラーを処理し、エラーメッセージをログに記録します
要件:
- New Relic ステータス API (summary.json) へのアクセス
- newrelic.ingest.sendLogs 経由でログを送信する権限
キーアクション: http.get 、 newrelic.ingest.sendLogs
利用可能なテンプレートワークフロー
上記のテンプレートはNew Relicワークフロー Automation UIで直接利用できます。 アクセスするには:
- one.newrelic.com > All Capabilities > Workflow Automationにアクセスしてください。
- Create workflow [ワークフローの作成を]クリック
- Use a template [テンプレートを使用するを]選択
- テンプレートライブラリを参照して、ユースケースに合ったワークフローを選択します
各テンプレートには以下が含まれます。
- 事前設定されたワークフローステップとロジック
- 入力例
- 必要な認証情報と統合
- 期待される成果の文書化
テンプレートをそのまま使用することも、特定の要件に合わせてカスタマイズすることもできます。
ステップ間でのデータの受け渡し
すべてのワークフローは、テンプレート構文を使用して前のステップからの出力を参照できます。これにより、アクションを連結し、複雑な自動化ロジックを構築できます。
基本的なデータの受け渡し
steps: - name: getAlert action: newrelic.nerdgraph.execute inputs: query: | { actor { account(id: 123456) { alerts { violation(id: 789) { condition entity { name guid } } } } } }
- name: sendToSlack action: slack.chat.postMessage inputs: channel: "#incidents" text: "Alert: ${{ .steps.getAlert.outputs.data.actor.account.alerts.violation.condition }}"ループ内でのデータの使用
steps: - name: listInstances type: action action: aws.ec2.describeInstances version: 1 inputs: filters: - name: "tag:Environment" values: ["production"]
- name: checkEachInstance type: loop for: in: "${{ .steps.listInstances.outputs.reservations }}" steps: - name: getInstanceMetrics type: action action: newrelic.nerdgraph.execute version: 1 inputs: query: "SELECT average(cpuPercent) FROM SystemSample WHERE instanceId = '${{ .steps.checkEachInstance.loop.element.instanceId }}'"データを使った条件付きロジック
steps: - name: checkCPU type: action action: newrelic.nerdgraph.execute version: 1 # ... query configuration
- name: decideAction type: switch switch: - condition: "${{ .steps.checkCPU.outputs.data.actor.account.nrql.results[0].average > 90 }}" next: resizeInstance - condition: "${{ .steps.checkCPU.outputs.data.actor.account.nrql.results[0].average > 70 }}" next: sendWarning next: normalOperation
- name: resizeInstance type: action action: aws.ec2.modifyInstanceAttribute version: 1 # ... resize configuration
- name: sendWarning type: action action: slack.chat.postMessage version: 1 # ... warning message
- name: normalOperation type: action action: newrelic.ingest.sendLogs version: 1 # ... log normal status次のステップ
- 独自のワークフローを作成する- ワークフローを構築するためのステップバイステップ ガイド
- アクションカタログ- 利用可能なすべてのアクションを参照します
- テンプレートを使用する- デプロイの構築済みワークフロー
- AWS 認証情報の設定- AWS 認証を構成する