AWS 環境で発生した問題をスムーズに解決し、デプロイされた修正による影響を監視するためには、AWS のメトリクスと健全性シグナルにすばやくアクセスすることが最優先です。Datadog はこの度、AWS とのパートナーシップを通じて、新機能である CloudWatch メトリクスストリームを発表しました。これを利用して、AWS ユーザーは Amazon Kinesis Data Firehose 経由で、主要な AWS サービスから Datadog を含む異なるエンドポイントへと迅速にメトリクスを転送することができるようになります。
CloudWatch メトリクスストリームを使用して AWS メトリクスを Datadog に送信すれば、GetMetricData の API コールを用いた場合よりもレイテンシーを最大 80% 抑えることができます。Kinesis Data Firehose を介したログデータの取り込みをサポートしていることに加えて、Datadog で AWS インフラストラクチャーを監視することでメトリクスとログをタイムリーに取得し、AWS サービスの健全性とパフォーマンスを総合的に可視化できるようになりました。
この記事ではまず、Datadog にメトリクスを送信し、ELB、RDS、ElastiCache といった主要な AWS サービスの分析とトラブルシューティングを行うメリットをいくつかご紹介します。
Kinesis で Datadog + CloudWatch メトリクスストリームを使用する
お使いの環境で Datadog と AWS のインテグレーションを既に有効化している場合は、AWS インテグレーションタイルからパッケージに含まれている CloudFormation テンプレートを使用してプリセット済みのコンフィギュレーションを起動することができます。テンプレートをデプロイすると、Amazon CloudWatch メトリクスストリーム (指定したサービスからメトリクスを収集) と新規の Kinesis Data Firehose (収集したデータを Datadog に転送) のプロビジョニングが自動で行われます。特に、カスタム設定が不要なアカウントおよびリージョンを複数お持ちの場合はテンプレートをご利用いただくことをお勧めします。
または、以下のステップに従って [Kinesis Data Firehose の新規設定](#Kinesis Data Firehose の新規設定)と[CloudWatch メトリクスストリームのプロビジョニング](#CloudWatch メトリクスストリームをリンクする)を行うこともできます。このステップで設定を進める場合は、アカウント内の各リージョンについてこれを繰り返します。
Kinesis Data Firehose の新規設定
Kinesis Data Firehose は AWS によるフルマネージド型のサービスで、データのスループットに応じて自動で拡張します。Firehose デリバリーストリームは AWS のマネジメントコンソールで数回クリックするだけで作成できます。CloudWatch メトリクスストリームを使用して Datadog にメトリクスを送信するために、まず AWS コンソールで Kinesis Firehose のデリバリーストリームを新規作成します。「Name and source」タブでソースの Direct PUT
を選択します。これで、データ作成者が直接書き込み可能なデリバリーストリームが作成されます。Kinesis Datadog にメトリクスを転送するよう Firehose デリバリーストリームを構成するには、「Choose a destination」タブの「Third-party service provider」で Datadog
を選択します。その後、適切なリージョンの Datadog AWS メトリクス HTTP エンドポイントを選択し、Datadog API キーに接続します。
また、HTTP エンドポイントのバッファ条件では、再試行間隔 60 秒、バッファ間隔 60 秒、バッファサイズ 4 MB を選択することをお勧めします。デリバリーストリームの構成について詳しくは、ドキュメントを参照してください。
CloudWatch メトリクスストリームをリンクする
Kinesis Firehose の設定と Datadog へのデータ転送構成が完了したら、CloudWatch メトリクスストリームのプロビジョニングを行い、指定の AWS サービスから CloudWatch メトリクスを取り込んで宛先を Firehose に指定します。
AWS コンソールの CloudWatch ダッシュボードで、ナビゲーションメニューの「Metrics」グループ下にある Streams
を選択します。その後、「Create metric stream」をクリックして新しいデータストリームを作成します。このコンフィギュレーションでは、CloudWatch メトリクスのすべてをストリーム対象とするか、特定のネームスペースを含める / 除外するかを選択することができます。この設定を活用してより希望に近いデータのみを収集し、コストを削減できます。その後、上記のセクションで設定した Kinesis Data Firehose ストリームをメトリクスストリームの宛先として選択します。また、新しいサービスロールを作成して OpenTelemetry 0.7 の出力フォーマットを選択します。設定プロセスが完了し、メトリクスストリームが正常に作成されたら、数分でメトリクスが Datadog に表示されます。
ストリームが Datadog 内の AWS インテグレーションタイルで適切に構成され、データ送信を行うアクティブ状態のストリームが画面に表示されていることを確認します。Datadog はストリームにどのメトリクスが含まれているのかを自動で検知し、データの重複が考えられる場合には CloudWatch API へのコールを使用して収集を停止します。より詳細な手順はドキュメント内の設定ガイドを参照してください。
主要な AWS サービスをすばやく可視化する
CloudWatch メトリクスストリームを使用してメトリクスを Datadog に転送すれば、AWS サービスを極めて迅速に監視することができます。開発に関する問題をタイムリーに把握できるだけでなく、チームが提示するソリューションの有効性についても迅速なフィードバックが得られます。
たとえば ELB を監視する場合、HTTP のエラー率、リクエスト量、レイテンシーをすばやく可視化することが重要となります。こうすることで、スパイクが発生した場合に迅速にアラートを生成し、エンドユーザーのエクスペリエンスをできる限り軽減するようチームに対応を依頼できます。例としては、バックエンドのレイテンシーとサージキューの長さを監視して、レイテンシーが急上昇するなどの深刻な事態を特定する場合が挙げられます。このとき、原因としてキューに入れられるリクエスト数が極めて多いことが考えられる場合は、サージキューの長さがキューの容量 (1,024 リクエスト) と同等またはそれに近い数になればアラートを生成するなどの対策を講じることができます。メトリクスがこのしきい値をまたいだ直後にアラートをトリガーすることで、予期せぬ事態にすばやく対応することが可能となります。こうしておけば、キューがオーバーロードしたことでリクエストが取り下げられ、クライアントエンドでタイムアウトが発生するといった事態を回避できる確率が高まります。CloudWatch メトリクスストリームを使用して Datadog にデータを送信すれば、修正をデプロイしてからわずか数分以内に、その修正の効果をダッシュボードから確認することができます。
Datadog で AWS サービスを監視するためのベストプラクティスについて詳しくは、 モニタリングガイドを参照してください。
Amazon と Datadog でメトリクスのストリーミングを開始する
Amazon CloudWatch メトリクスストリームを使用すれば、お使いの AWS サービスの主要なパフォーマンスと健全性のメトリクスをこれまでにないほど迅速に監視することができます。ストリームの設定について詳しくは、ドキュメントを参照してください。また、AWS および Instacart と共同で今後開催予定のウェビナーにもぜひご登録ください。ウェビナーでは Instacart のメンバーが、Datadog と Amazon CloudWatch メトリクスストリームを活用して、需要が急増する中で食料品配達サービスの動向を監視した際のストーリーをお伝えします。Datadog をまだご利用でないお客様は、14 日間の無料トライアルをお試しください。