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

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

このガイドでは、Datadog で使用するための AWS PrivateLink の構成方法を説明します。

概要

全体的なプロセスは、ローカルの Datadog Agent がデータを送信できる VPC に内部エンドポイントを構成することで成り立ちます。その後、VPC エンドポイントは、Datadog の VPC 内のエンドポイントにピアリングされます。

VPC ダイアグラムスキーマ

設定

Datadog は、 の AWS PrivateLink エンドポイントを公開しています。

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

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

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

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

    VPC サービス名
DatadogPrivateLink サービス名プライベート DNS 名
ログ (Agent HTTP インテーク)
ログ (ユーザー HTTP インテーク)
APIapi.
メトリクスmetrics.agent.
コンテナorchestrator.
プロセスprocess.
プロファイリングintake.profile.
トレースtrace.agent. 
データベースモニタリングdbm-metrics-intake.
リモート構成config.
  1. Verify をクリックします。Service name found と表示されない場合は、Datadog サポートまでお問い合わせください。

  2. Datadog VPC サービスエンドポイントとピアリングされるべき VPC とサブネットを選択します。

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

    Enable DNS private
  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
    

    Container Agent を使用している場合は、代わりに以下の環境変数を設定します。

    DD_LOGS_CONFIG_USE_HTTP=true
    

    この構成は、AWS PrivateLink と Datadog Agent でログを Datadog に送信する場合に必要で、Lambda 拡張機能では不要です。詳細は Agent ログ収集を参照してください。

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

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

Amazon VPC ピアリング

  1. AWS Console をリージョン に接続し、VPC エンドポイントを作成します。
VPC エンドポイントの作成
  1. Find service by name を選択します。
  2. AWS PrivateLink を構築したいサービスに応じて Service Name テキストボックスに入力します。
VPC サービス名
DatadogPrivateLink サービス名
ログ (Agent HTTP インテーク)
ログ (ユーザー HTTP インテーク)
API
メトリクス
コンテナ
プロセス
プロファイリング
トレース
データベースモニタリング
リモート構成
  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 プライベートホストゾーンを作成します。プライベートホストゾーンを の VPC にアタッチします。
Route53 プライベートホストゾーンの作成

以下のリストを使用して、サービス名と DNS 名を Datadog のさまざまな部分にマッピングします。

DatadogPrivateLink サービス名プライベート DNS 名
ログ (Agent HTTP インテーク)agent-http-intake.logs.
ログ (ユーザー HTTP インテーク)http-intake.logs.
APIapi.
メトリクスmetrics.agent.
コンテナorchestrator.
プロセスprocess.
プロファイリングintake.profile.
トレースtrace.agent.
データベースモニタリングdbm-metrics-intake.
リモート構成config.

この情報は、AWS API の DescribeVpcEndpointServices に問い合わせるか、以下のコマンドを使用しても見つけることができます。

aws ec2 describe-vpc-endpoint-services --service-names <service-name>`

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

aws ec2 describe-vpc-endpoint-services --service-names  | jq '.ServiceDetails[0].PrivateDnsName'

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

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

    :

    • DNS 名を取得するには、エンドポイントサービスのプライベート DNS 名構成ドキュメントを表示するを参照してください。
    • Agent は、バージョン管理されたエンドポイントにテレメトリーを送信します。例えば、[version]-app.agent. は、CNAME エイリアスを介して metrics.agent. に解決されます。したがって、必要なのは metrics.agent. 用のプライベートホストゾーンを設定することだけです。
A レコードの作成
  1. Datadog PrivateLink のエンドポイントを含む の 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 ホストゾーンを編集して、他のリージョンの VPC を追加します。

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

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

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

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

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

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

DNS は正しく解決しているのに、port 443 への接続に失敗する場合、VPC のピアリングまたはルーティングが誤って構成されているか、ポート 443 が の 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 を再起動します

参考資料

PREVIEWING: rtrieu/product-analytics-ui-changes