AWS PrivateLink を介して Datadog に接続する

Datadog PrivateLink は、選択された Datadog サイトをサポートしていません。

このガイドでは Datadog で AWS PrivateLink を構成および使用する方法についてご説明します。

概要

まずはローカルの Datadog Agent がデータを送信可能な VPC の内部エンドポイントを構成します。その後、VPC エンドポイントを Datadog の VPC 内にあるエンドポイントと紐付けます。

VPC ダイアグラムスキーマ

セットアップ

Datadog は、us-east-1 で AWS PrivateLink のエンドポイントを公開します。

ただし、他のリージョンから us-east-1 にある Datadog の PrivateLink サービスにトラフィックをルーティングするには、リージョン間の Amazon VPC peering を使用します。リージョン間 VPC ピアリングは、異なる AWS リージョンにまたがる VPC 間の接続を確立することができます。これにより、異なるリージョンの VPC リソース同士がプライベート IP アドレスで通信できるようになります。詳しくは、Amazon VPC ピアリングをご参照ください。

  1. AWS Console をリージョン us-east-1 に接続し、VPC エンドポイントを作成します。

    VPC エンドポイントを作成
  2. Find service by name を選択します。

  3. Service Name テキストボックスに、AWS PrivateLink を構築したいサービスの名前を入力します。

    VPC サービス名
DatadogPrivateLink サービス名プライベート DNS 名
ログ (Agent の HTTP 取り込み)com.amazonaws.vpce.us-east-1.vpce-svc-025a56b9187ac1f63agent-http-intake.logs.datadoghq.com
ログ (ユーザーの HTTP 取り込み)com.amazonaws.vpce.us-east-1.vpce-svc-0e36256cb6172439dhttp-intake.logs.datadoghq.com
APIcom.amazonaws.vpce.us-east-1.vpce-svc-064ea718f8d0ead77api.datadoghq.com
メトリクスcom.amazonaws.vpce.us-east-1.vpce-svc-09a8006e245d1e7b8metrics.agent.datadoghq.com
コンテナcom.amazonaws.vpce.us-east-1.vpce-svc-0ad5fb9e71f85fe99orchestrator.datadoghq.com
プロセスcom.amazonaws.vpce.us-east-1.vpce-svc-0ed1f789ac6b0bde1process.datadoghq.com
Profilingcom.amazonaws.vpce.us-east-1.vpce-svc-022ae36a7b2472029intake.profile.datadoghq.com
トレースcom.amazonaws.vpce.us-east-1.vpce-svc-0355bb1880dfa09c2trace.agent.datadoghq.com
  1. Verify をクリックします。Service name found と表示されない場合は、Datadog サポートにお問い合わせください。

  2. Datadog の VPC サービスエンドポイントと紐付ける VPC およびサブネットを選択します。

  3. Enable DNS name に、Enable for this endpoint がチェックされていることを確認します。

    プライベート DNS を有効化
  4. 任意のセキュリティグループを選択し、この VPC エンドポイントにトラフィックを送信できる送信元の範囲を指定します。

    : セキュリティグループは、TCP ポート 443 のインバウンドトラフィックを許可する必要があります

  5. 画面下部の Create endpoint をクリックします。作成が完了すると以下が表示されます。

    VPC エンドポイントの作成完了
  6. VPC エンドポイントの ID をクリックしてステータスを確認します。

  7. ステータスが Pending から Available に変わるまでお待ちください。約 10 分要する場合があります。Available と表示されれば、AWS PrivateLink を利用することができます。

    VPC のステータス
  8. ログデータを収集する場合は、Agent が HTTPS 経由でログを送信するように構成されていることを確認してください。データがまだない場合は、Agent datadog.yaml コンフィギュレーションファイルに以下を追加します。

    logs_config:
        use_http: true
    

    コンテナ Agent をお使いの場合は、代わりに環境変数を設定してください。

    DD_LOGS_CONFIG_USE_HTTP=true
    

    この構成は、AWS PrivateLink と Datadog Agent で Datadog にログを送信する際に必要で、Lambda Extension では必要ありません。詳しくは、Agent のログ収集をご参照ください。

  9. Lambda 拡張機能で、環境変数 DD_API_KEY_SECRET_ARN で指定した ARN を使って AWS Secrets Manager から Datadog API キーを読み込む場合、Secrets Manager 用の VPC エンドポイントを作成する必要があります。

  10. Agent を再起動し、AWS PrivateLink 経由で Datadog にデータを送信します。

Amazon VPC ピアリング

  1. AWS Console をリージョン us-east-1 に接続し、VPC エンドポイントを作成します。
VPC エンドポイントを作成
  1. Find service by name を選択します。
  2. Service Name テキストボックスに、AWS PrivateLink を構築したいサービスの名前を入力します。
VPC サービス名
DatadogPrivateLink サービス名
メトリクスcom.amazonaws.vpce.us-east-1.vpce-svc-09a8006e245d1e7b8
ログ (Agent の HTTP 取り込み)com.amazonaws.vpce.us-east-1.vpce-svc-025a56b9187ac1f63
ログ (ユーザーの HTTP 取り込み)com.amazonaws.vpce.us-east-1.vpce-svc-0e36256cb6172439d
APIcom.amazonaws.vpce.us-east-1.vpce-svc-064ea718f8d0ead77
プロセスcom.amazonaws.vpce.us-east-1.vpce-svc-0ed1f789ac6b0bde1
Profilingcom.amazonaws.vpce.us-east-1.vpce-svc-022ae36a7b2472029
トレースcom.amazonaws.vpce.us-east-1.vpce-svc-0355bb1880dfa09c2
コンテナcom.amazonaws.vpce.us-east-1.vpce-svc-0ad5fb9e71f85fe99
  1. Verify をクリックします。Service name found と表示されない場合は、Datadog サポートにお問い合わせください。

  2. 次に、Datadog VPC サービスエンドポイントでピアリングする VPC とサブネットを選択します。VPC ピアリングでは DNS を手動で構成する必要があるため、Enable DNS name は選択しないでください。

  3. 任意のセキュリティグループを選択し、この VPC エンドポイントにトラフィックを送信できる送信元の範囲を指定します。

    : セキュリティグループは、TCP ポート 443 のインバウンドトラフィックを許可する必要があります

  4. 画面下部の Create endpoint をクリックします。作成が完了すると以下が表示されます。

VPC エンドポイントの作成完了
  1. VPC エンドポイントの ID をクリックしてステータスを確認します。
  2. ステータスが Pending から Available に変わるまでお待ちください。約 10 分要する場合があります。
  3. エンドポイントが作成されたら、VPC ピアリングを使って、別のリージョンでも PrivateLink エンドポイントを利用して PrivateLink 経由で Datadog にテレメトリーを送信できるようにします。詳しくは、AWS の VPC ピアリング接続での作業ページをご覧ください。
VPC のステータス

Amazon Route53

  1. AWS PrivateLink のエンドポイントを作成した各サービスに対して、Route53 プライベートホストゾーンを作成します。プライベートホストゾーンをus-east-1 の VPC にアタッチします。
Route53 のプライベートホストゾーンを作成する

以下のリストを使用して、サービスおよび DNS 名を Datadog の各部にマッピングします。

DatadogPrivateLink サービス名プライベート DNS 名
メトリクスcom.amazonaws.vpce.us-east-1.vpce-svc-09a8006e245d1e7b8metrics.agent.datadoghq.com
ログ (Agent の HTTP 取り込み)com.amazonaws.vpce.us-east-1.vpce-svc-025a56b9187ac1f63agent-http-intake.logs.datadoghq.com
ログ (ユーザーの HTTP 取り込み)com.amazonaws.vpce.us-east-1.vpce-svc-0e36256cb6172439dhttp-intake.logs.datadoghq.com
APIcom.amazonaws.vpce.us-east-1.vpce-svc-064ea718f8d0ead77api.datadoghq.com
プロセスcom.amazonaws.vpce.us-east-1.vpce-svc-0ed1f789ac6b0bde1process.datadoghq.com
Profilingcom.amazonaws.vpce.us-east-1.vpce-svc-022ae36a7b2472029intake.profile.datadoghq.com
トレースcom.amazonaws.vpce.us-east-1.vpce-svc-0355bb1880dfa09c2trace.agent.datadoghq.com
コンテナcom.amazonaws.vpce.us-east-1.vpce-svc-0ad5fb9e71f85fe99orchestrator.datadoghq.com

また、AWS API の DescribeVpcEndpointServices を問い合わせるか、CLI コマンド aws ec2 describe-vpc-endpoint-services --service-names <service-name> を使用してもこの情報を見つけることができます。

例えば、Datadog のメトリクスエンドポイントの場合:

aws ec2 describe-vpc-endpoint-services --service-names com.amazonaws.vpce.us-east-1.vpce-svc-09a8006e245d1e7b8 | jq '.ServiceDetails[0].PrivateDnsName'

これは、Agent トラフィックの発信元となる VPC と関連付けるために必要な、プライベートホストゾーン名である metrics.agent.datadoghq.com を返します。このレコードを上書きすると、メトリクスに関連するインテークホスト名がすべて取得されます。

  1. それぞれの新しい Route53 プライベートホストゾーン内に、同じ名前で A レコードを作成します。Alias オプションをトグルし、Route traffic to で、Alias to VPC endpointus-east-1 を選び、DNS 名と関連付けられた VPC エンドポイントの DNS 名を入力します。

    :

    • DNS 名を取得するには、エンドポイントサービスのプライベート DNS 名構成ドキュメントを表示するを参照してください。
    • Agent はバージョン付きのエンドポイント (例: <version>-app.agent.datadoghq.com) にテレメトリーを送信します。エンドポイントでは CNAME エイリアスを通じた名前解決が行われ、metrics.agent.datadoghq.com にルーティングされます。したがって、 metrics.agent.datadoghq.com のプライベートホストゾーンのセットアップのみが必要となります。
A レコードの作成
  1. Datadog PrivateLink のエンドポイントを含む us-east-1 の VPC と、Datadog Agent を実行する地域の VPC の間で、VPC ピアリングとルーティングを構成します。

  2. VPC が異なる AWS アカウントにある場合、続行する前に Datadog Agent を含む VPC が Route53 プライベートホストゾーンとの関連付けを許可されている必要があります。Datadog Agent が実行する VPC のリージョンと VPC ID を使用して、各 Route53 プライベートホストゾーンに対して VPC 関連付け承認を作成します。このオプションは、AWS Console では利用できません。AWS CLI、SDK、または API を使用して構成する必要があります。

  3. Route53 のホストゾーンを編集して、non-us-east-1 の VPC を追加します。

Route53 のプライベートホストゾーンを編集する
  1. プライベートホストゾーン (PHZ) が接続されている VPC では、特定の設定、特に enableDnsHostnamesenableDnsSupport をオンにする必要があります。プライベートホストゾーンを使用する際の注意点を参照してください。

  2. Agent を再起動し、AWS PrivateLink 経由で Datadog にデータを送信します。

DNS の解決と接続のトラブルシューティング

DNS 名は、us-east-1 の VPC の CIDR ブロックに含まれる IP アドレスに解決し、port 443 への接続に成功するはずです。

443 番ポートへの接続に成功

DNS がパブリック IP アドレスに解決している場合、Route53 ゾーンが代替地域の VPC に関連付けされていないか、A レコードが存在しないことが原因です。

DNS は正しく解決しているのに、port 443 への接続に失敗する場合、VPC のピアリングまたはルーティングが誤って構成されているか、ポート 443 が us-east-1 の VPC の CIDR ブロックへのアウトバウンドを許可されていない可能性があります。

プライベートホストゾーン (PHZ) が接続されている VPC は、いくつかの設定をオンにする必要があります。具体的には、PHZ が関連付けられている VPC で、enableDnsHostnamesenableDnsSupport がオンになっている必要があります。Amazon VPC 設定を参照してください。

Datadog Agent

  1. ログデータを収集する場合は、Agent が HTTPS 経由でログを送信するように構成されていることを確認してください。データがまだない場合は、Agent datadog.yaml コンフィギュレーションファイルに以下を追加します。

    logs_config:
        force_use_http: true
    

    コンテナ Agent をお使いの場合は、代わりに環境変数を設定してください。

    DD_LOGS_CONFIG_FORCE_USE_HTTP=true
    

    この構成は、AWS PrivateLink と Datadog Agent で Datadog にログを送信する際に必要で、Lambda Extension では必要ありません。詳しくは、Agent のログ収集をご参照ください。

  2. Lambda 拡張機能で、環境変数 DD_API_KEY_SECRET_ARN で指定した ARN を使って AWS Secrets Manager から Datadog API キーを読み込む場合、Secrets Manager 用の VPC エンドポイントを作成する必要があります。

  3. Agent を再起動します

その他の参考資料

お役に立つドキュメント、リンクや記事: