Amazon CloudWatch Metric StreamsによるAmazon Web Services (AWS)クラウドオブザーバビリティに関して、知見を広げ、深めたいと考えている場合、CloudWatch Metric Streams と New Relic Oneを使って、運用イベントを検知し、迅速に対応するための対策を講じることができます。

AWS Well-Architected Framework は、AWS上でワークロードを構築する際に行う決定のメリットとリスクを理解するのに役立てることができ、信頼性、安全性、効率性、費用対効果に優れたクラウド上のワークロードを設計、運用するためのベストプラクティスを学ぶことができます。また、ベストプラクティスに照らして運用やアーキテクチャを一貫して測定し、改善すべき点を特定する方法を提供します。運用を考慮して設計されたワークロードは、ビジネス成功の可能性を飛躍的に高めます。

オペレーショナル・エクセレンスを実現するためには、ワークロードとその期待される動作を理解する必要があります。そして、ワークロードをサポートするための手順を構築し、ワークロードの状態をより深く理解することができます。オペレーショナルエクセレンスを達成するための最初のステップは、ワークロードの内部状態を理解するために必要な情報(メトリクス、ログ、イベント、トレースなど)を提供するために、ワークロードのテレメトリ監視を設計することです。あなたは、アプリケーションアーキテクチャのすべてのコンポーネントにわたって完全なオブザーバビリティを実現するための全体的なソリューションを構築します。AWSでは、アプリケーションやワークロードのコンポーネントからログ、メトリクス、イベントを発信、収集することができ、Amazon CloudWatchで内部状態や健全性を理解するのに役立ちます。そして、このデータを使用して、アプリケーションと基礎となるコンポーネントがどのように相互作用するかを理解し、問題とパフォーマンスを分析します。

New Relic One は、AWS からのすべての遠隔測定データを一箇所に集め、探索し、アラートを出すためのプラットフォームを提供します。また、このプラットフォームは、遠隔測定データを便利に取り込むためのAPIエンドポイントを提供します。この図は、CloudWatch Metric StreamsとNew Relic Oneがどのように連携するかを示しています。

テレメトリーデータを扱う際には、最新のデータを使用することが重要です。特に運用イベント時には、システムの状態を即座に可視化して理解する必要があります。これまでは、社内システムに最新のデータを反映させるために、CloudWatchに継続的に問い合わせを行う必要がありました。CloudWatch Metric Streamsを使えば、データをリフレッシュするための負担を背負う必要はありません。New Relic Oneは、CloudWatch Metric Streamsと統合することで、AWSクラウド上の、深いアプリケーション監視やインフラ監視を実現する統合ソリューションを提供します。

Workiva社のエンジニアリング・ディレクターであるスティーブン・オズボーン氏は、「業務上のインシデントは1分1秒を争うものですが、メトリクス・ストリーミングによって貴重な時間が解放され、サービスレベルの懸念事項を以前よりも迅速に検出、対応、軽減できるようになりました」と述べています。

このブログ記事では、Amazon CloudWatch Metric StreamsとNew Relic Oneを使って運用イベントを検知し、迅速に対応するための手順を紹介しています。

Step 1: Enable integration on New Relic One上でインテグレーションを有効にする

one.newrelic.comTip: Infrastructure > AWS をクリックし、Add an AWS account をクリックし、 Use metric streams をクリックし、画面の手順従い、AWSのコンソール上でIAM Roleを作成し、作成したRoleのARNをNew Relicに設定してください。

続く、Step2及び3は、以降の手順に従いマニュアルで設定することもできますが、このAWS CloudFormation templateを使って、自動化することでスキップすることもできます。

Step 2: Amazon Kinesis data firehose delivery streamの作成

CloudWatchのコンソールを開き、目的のリージョンを選択します。次に、Kinesisにアクセスし、Create a new data firehose delivery streamを選択します。Kinesisのプロンプトに従います。この例では、us-east-1に配信ストリームを作成しています。これらの値を使用することができます。(最新のパラメータは、こちらでご確認いただけます)

  • Source: Direct PUT またはその他のソース
  • Destination:  New Relic を選択してください
  • 配信ストリーム名: new-relic-metric-stream-us-east-1(任意のストリーム名をつけてください)
  • Transform records: Disabled
  • HTTP endpoint URL: New Relic Metrics–US を選択してください。(EUのDatacenterを利用されている場合は、New Relic Metrics–EU を選択)
  • API key: New Relicのライセンスキーを入力
  • Content encoding: GZIP
  • Retry duration: 60
  • S3 backup mode: Failed data only
  • S3 bucket: 送信失敗したメトリクスデータを保存するバケツを選択または新規作成
  • Buffer size: 1 MB
  • Buffer interval: 60 (seconds)
  • Permissions IAM role: IAM roleの作成または更新

Step 3: Amazon CloudWatch metrics dataを配信する

CloudWatchのコンソールを開き、目的のリージョンを選択します。次に、CloudWatchにアクセスし、左のメニューのストリームを選択後、メトリクスストリームの作成を選択します。設定は以下のようにし、作成します。

  • ストリーミングする名前空間の選択: すべてのメトリクス
  • 設定オプションの選択
    • アカウントが所有する既存の Firehose を選択するを選択する
    • 作成済みのストリーム名(new-relic-metric-stream-us-east-1等)を指定する

数分後には、CloudWatchのメトリクスデータがNew Relic Oneのアカウントに流れ始めます。

Step 4: アラートポリシーの設定

New Relic One プラットフォームを開き、Alerts & AI タブを選択します。そして、以下のアクションを起こします。

  • 既存のポリシーを使用するか、新しいアラートポリシーを作成します。
  • コンディションを追加し、カテゴリーとして、NRQLを選択します。
  • 任意の名前をつけます。
  • 以下のクエリーを設定します。

 

SELECT max(`aws.ec2.CPUUtilization`) FROM Metric FACET tags.Name WHERE `collector.name` = 'cloudwatch-metric-streams'
  • 任意のしきい値を設定します。
  • コンディションを保存します。

Step 5: テスト

すべてが正しく設定されていることを確認するために、one.newrelic.com > Infrastructure > AWSのページから、Amazon Metric Streamsのステータスページを確認します。Account Status ダッシュボードを使用して設定を確認し、Metric Streams のデータを確認します。Account Statusダッシュボードでは、メトリクス、ネームスペース、メトリクス名、ネームスペースごとの総メトリクスを横断的に見ることができます。

次に、Amazon EC2インスタンスを起動し、CPU使用率が急上昇するようなコマンドを実行します。ここでの意図は、CloudWatch Metric StreamsとNew Relic Oneを使って、ほぼリアルタイムで、アラートを取得できるかどうかをテストして確認することです。インスタンスタイプはt2.nanoを使用します。作成したら、インスタンスにSSHで入り、dd if=/dev/zero of=/dev/nullを実行すると、CPUが急上昇します。数分以内に、New Relic からの通知が表示されるはずです。