DatadogとAWS Fargateの連携について
はじめに
サービスの安定した稼働を実現するためには、モニタリングを導入する必要があります。本記事では、モニタリングサービスを提供するDatadogについて、AWS Fargateとの連携も合わせて紹介します。
AWS Fargateとは
AWS Fargateは、Amazon ECSとAmazon EKSの両方で動作するコンテナ向けサーバーレスコンピューティングエンジンです。AWS FargateとAmazon ECSを一緒に使用するAmazon ECS on AWS Fargateでは、Amazon EC2インスタンスでサーバーやクラスターを管理することなく、コンテナを実行することができます。AWS Fargateを利用すると、コンテナを実行するための仮想マシンのクラスターのプロビジョニングや設定、スケーリングが不要になります。
Datadogとは
Datadogは、クラウド型のモニタリングと分析を提供するサービスです。サーバーやデータベース、ツール、サービスのモニタリング機能をSaaS形式で提供しています。また、システム全体の状況をメトリクスにタグを付けてドリルダウンで分析を行う、多次元解析を行うことができます。それでは、Datadogの主な特徴を以下で紹介します。
シームレスなモニタリング
Datadogでは、以下に関する400以上のインテグレーションをサポートしています。
SaaS、クラウドプロバイダー、自動化ツール、監視、データの収集、ソース制御、バグの追跡、データベース、一般的なサーバーコンポーネント
Datadogのインテグレーションを利用して、DevOpsスタック全体のメトリクスとイベントをシームレスに集約できます。
アプリケーションの可視性
- スタック全体の可視性 - 分散型アーキテクチャ全体からトレースの収集、検索、分析を行うことができます。
- Service Map - データフローとクラスターサービスの相互依存性に基づき、リアルタイムかつ自動的にマッピングし、サービスの根本原因をリアルタイムで分析することで迅速な問題解決ができます。
- 検索と分析 - すべてのリクエストを追跡し、タグを使用して素早く分散したAPMデータを分類できます。
- 可視化とアラート - Datadogでは、Watchdogによる異常の検知と通知までの自動化や、APIからのダッシュボードの自動生成が可能です。これにより、オーバーヘッドを減らし、誰もが必要なデータに的確にアクセスすることができます。
- 自動のデータ収集 - Datadog APMは、LaravelやSpringをはじめとする、多くの一般的なライブラリやフレームワークのリクエストを自動的にトレースすることができます。
ログデータの分析と調査
- 迅速なトラブルシューティング - すべてのサービスやアプリケーション、プラットフォームから収集したログを、自動生成されるフィルタ機能を利用して素早く検索し、分析できます。また、ダッシュボードでのログの可視化や高度なアラートの作成も可能です。
- システム全体の把握 - 「タグを利用した関連ログへの移動」や「ログエントリからのメトリクス情報を表示したダッシュボードへの遷移」といったように、ログとメトリクス、リクエストトレースの間をスムーズにナビゲートして、システム全体を明確に把握することができます。
- すべてのログの収集・監視 - アプリケーションやインフラストラクチャによって生成されるすべてのログを収集します。収集されたログは、サーバーに残らず、全履歴が一元的に保存され、動的なインデックス化やLive Tailによるリアルタイムの監視が行われます。
- シームレスなインテグレーション - 前述のように多数あるDatalogの組み込みインテグレーションを使用して、あらゆるソースから自動的にログを収集します。
インタラクティブなダッシュボード
- インフラストラクチャ全体の可視性 - 過去に収集したものも含めて、すべてのアプリケーション、ホスト、コンテナ、サービスから収集したメトリクスとイベントを組み合わせたり照合したりできます。
- 多数のオプションによるデータの可視化 - ヒートマップや積み上げグラフなどによるメトリクスのグラフ化や、メトリクスやKPIの重要値のハイライトといった、幅広いオプションから可視化のタイプを選択して、インフラストラクチャへのインサイトを取得できます。
- メトリクス変換 - メトリクスに組み込みの数式や付属データマイニングアルゴリズムを適用したり、コードエディタを使用して独自の変数式を記述できます。
アラート
- 一時システムの監視 - タグを利用して、ホスト、コンテナ、その他のメトリクスのセットにアラートを設定できます。新しいホストには、自動的にアラートが適用されます。
- 機械学習を活用したアラート - 前述のWatchdogを利用して、エラーやレイテンシーなどの予期せぬ異常の自動検知ができます。関連する異常、メトリクス、スタックトレースは自動的にグループ化されます。
- スマートアラート - 複数のトリガー条件を使用した複雑なアラートロジックを構築して、誤検知を排除し、重要な問題についてのみアラートを受信することができます。また、アラートを調整して、許容可能な障害レベルと計画的なダウンタイムを認識させることができます。
AWS FargateとDatadogの連携
AWS FargateにDatadogを連携させることで、次のことができます。
- CPUとメモリの使用量と制限メトリクスを収集する
- Datadog インテグレーションもしくはカスタムメトリクスによる、AWS Fargateで実行しているアプリケーションを監視する
タスク定義のコンテナのメトリクスは、Datadog AgentがECSのタスクメタデータエンドポイントから収集します。このエンドポイントは、タスクに関連付けられたすべてのコンテナのDocker統計JSONを返します。
連携の手順
DatadogでAWS Fargate上のECSタスクを監視するには、アプリケーションと同じタスク定義内のコンテナとしてDatadog Agentを実行する必要があります。Datadogでメトリクスを収集するには、各タスク定義にアプリケーションコンテナだけでなくDatadog Agentコンテナを含める必要があります。手順を以下に示します。
- Amazon ECS on AWS Fargateタスクの作成 - AWS Fargateの主要な作業単位であるタスクは、タスク定義内で設定されます。Datadog Agentを実行するには、アプリケーションコンテナとDatadog Agentコンテナを実行するためのタスク定義を作為する必要があります。
- IAMポリシーの作成または修正 - Amazon ECS on AWS Fargateのメトリクスを収集する権限を付与するために、クラスタやリソース、実行中のタスクに関わるAWS アクセス許可をDatadog IAM ポリシーに追加します。
- レプリカサービスとしてタスクを実行 - Amazon ECS on AWS Fargateでは、レプリカサービスとしてタスクが実行されます。
上記の手順で、Datadog Agentをセットアップすると、オートディスカバリーを有効にしておくことで、ecs_fargate_checkがメトリクスを収集します。その他、メトリクスの収集について以下に示します。
- DogStatsDの利用 - DogStatsDは、Datadog Agentに付属するメトリクス集計サービスです。DogStatsDの利用すると、メトリクスはUDPポート8125を介して収集されます。
- クローラーベースのメトリクス - Datadog Agentによる収集だけでなく、Amazon CloudWatchベースのECSインテグレーションがあります。このインテグレーションは、Amazon ECS CloudWatchメトリクスを収集します。(※注意点として、この方法はDatadog Agentを使用しないため、DatadogのAWSインテグレーションの構成が必要です。また、Amazon CloudWatchのデータの粒度は低く、Datadogへの報告に遅延が生じます。)
- ログの収集 - AWS FireLens インテグレーションを利用したDatadogへのログの送信や、awslogsログドライバーとLambda関数を使用したログのルーティングによって、AWS Fargateのログを監視できます。
まとめ
本記事では、AWS Fargateとクラウド時代のモニタリングツールであるDatadogの連携について紹介しました。Datadogは、ビジュアライズ機能だけでなく、タグによる多次元解析にも優れるモニタリングサービスです。前述のようにAWS Fargate以外にも多数のサポートがあるため、サービスの監視ツールの選択で悩まれている方は、利用を検討してみてはいかかでしょうか。