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

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

概要

このガイドでは、AWS PrivateLink を Datadog で使用するための設定手順について説明します。大まかな流れとしては、VPC 内にローカルの Datadog Agent がデータを送信できる内部エンドポイントを設定し、その VPC エンドポイントを Datadog 側の VPC 内にあるエンドポイントとピアリングすることで構成します。

VPC の概要図

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

  • 同一リージョン内で Datadog へのトラフィックをルーティングする必要がある場合は、同一リージョンからの接続の手順に従ってエンドポイントをセットアップしてください。
  • 他のリージョンから 内の Datadog の PrivateLink を利用するには、Datadog ではクロスリージョン PrivateLink エンドポイントを推奨しています。Cross-region PrivateLink を使用すると、異なる AWS リージョン間でもプライベート IP アドレスを使って VPC リソース同士を通信させることができます。あるいは、VPC Peering を使用することも可能です。

同一リージョンからの接続

  1. 使用するリージョンに AWS Management Console を接続します。

  2. VPC ダッシュボードの PrivateLink and Lattice から Endpoints を選択します。

  3. Create Endpoint をクリックします:

    VPC ダッシュボードの Endpoints ページ
  4. Find service by name を選択します。

  5. AWS PrivateLink を確立したいサービスに応じて、Service Name テキストボックスに以下の値を入力します:

    VPC サービス名
DatadogPrivateLink サービス名プライベート DNS 名
ログ (Agent HTTP インテーク)
ログ (ユーザー HTTP インテーク)
APIapi.
メトリクスmetrics.agent.
コンテナorchestrator.
プロセスprocess.
プロファイリングintake.profile.
トレースtrace.agent.
Database Monitoringdbm-metrics-intake.
Remote Configurationconfig.
  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. Datadog Agent のバージョンが v6.19 または v7.19 より古い場合、ログデータを収集するには Agent が HTTPS 経由でログを送信するように設定してください。設定ファイル datadog.yaml に以下の内容がない場合は追記します:

    logs_config:
        force_use_http: true
    

    コンテナ Agent を使用している場合は、代わりに次の環境変数を設定します:

    DD_LOGS_CONFIG_FORCE_USE_HTTP=true
    

    これは、AWS PrivateLink と Datadog Agent を使用してログを Datadog に送信する場合に必要な設定であり、Lambda Extension には必要ありません。詳細については、Agent によるログ収集 を参照してください。

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

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

他のリージョンからの接続

  1. 使用するリージョンに AWS Management Console を接続します。

  2. VPC ダッシュボードの PrivateLink and Lattice から Endpoints を選択します。

  3. Create Endpoint をクリックします:

    VPC ダッシュボードの Endpoints ページ
  4. VPC インターフェイスエンドポイントの設定を行います

    1. 任意で Name tag を入力します。
    2. TypePrivateLink Ready partner services を選択します。
  5. クロスリージョン対応のインターフェイスエンドポイントを検出し、設定します:

    1. Service name に以下のにある有効な PrivateLink サービス名を入力します。
    2. Service regionEnable Cross Region endpoint にチェックを入れ、 を選択します。
    3. Verify service をクリックし、Service name verified の通知が表示されるまで待ちます。 注: 上記の手順を完了してもサービスを検証できない場合は、Datadog サポートにお問い合わせください。
  6. Network Settings で、VPC インターフェイスエンドポイントをデプロイする VPC を選択します。

  7. Enable DNS name が有効になっていることを確認します。

  8. Subnets で、VPC インターフェイスエンドポイントを配置する 1 つ以上のサブネットを選択します。

  9. Security Groups で、この VPC エンドポイントにトラフィックを送信できるかどうかを制御するセキュリティグループを選択します。

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

  10. 任意で Name tag を設定し、Create endpoint をクリックします。

  11. ステータスが Pending から Available に変わるまで数分かかる場合があります。最大 10 分ほどかかる場合があります。想定より長引く場合は Datadog サポートにお問い合わせください。

エンドポイントのステータスが Available に更新されたら、クロスリージョンの AWS PrivateLink エンドポイントを使用して Datadog にテレメトリを送信できます。

DatadogPrivateLink サービス名プライベート DNS 名
ログ (Agent HTTP インテーク)agent-http-intake.logs.
ログ (ユーザー HTTP インテーク)http-intake.logs.
APIapi.
メトリクスmetrics.agent.
コンテナorchestrator.
プロセスprocess.
プロファイリングintake.profile.
トレースtrace.agent.
Database Monitoringdbm-metrics-intake.
Remote Configurationconfig.
  1. AWS コンソールを に接続し、VPC エンドポイントを作成します。
VPC エンドポイントの作成
  1. Find service by name を選択します。
  2. 接続したいサービスに応じて、Service Name テキストボックスに次の値を入力します:
VPC サービス名
DatadogPrivateLink サービス名
ログ (Agent HTTP インテーク)
ログ (ユーザー HTTP インテーク)
API
メトリクス
コンテナ
プロセス
プロファイリング
トレース
Database Monitoring
Remote Configuration
  1. Verify をクリックします。Service name found が表示されない場合は、Datadog サポートにお問い合わせください。

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

  3. 任意のセキュリティグループを選択して、どのトラフィックがこの VPC エンドポイントに送信されるかを制御します。

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

  4. 画面下部の Create endpoint をクリックします。成功すると次のように表示されます:

VPC エンドポイントの作成完了
  1. VPC エンドポイント ID をクリックし、そのステータスを確認します。
  2. ステータスが Pending から Available に変わるまで待ちます。最大 10 分ほどかかる場合があります。
  3. エンドポイントを作成した後は、VPC Peering を使用して別のリージョンでもこの PrivateLink エンドポイントを利用できるようにし、PrivateLink 経由で Datadog にテレメトリを送信します。詳細は AWS ドキュメントの Work With VPC Peering connections を参照してください。
VPC ステータス

Amazon Route53

  1. 使用するサービスごとにRoute53 プライベートホストゾーンを作成し、プライベートホストゾーンを 内の VPC にアタッチします。
Route53 プライベートホストゾーンの作成

以下の一覧を参考に、サービスと DNS 名をマッピングします:

DatadogPrivateLink サービス名プライベート DNS 名
ログ (Agent HTTP インテーク)agent-http-intake.logs.
ログ (ユーザー HTTP インテーク)http-intake.logs.
APIapi.
メトリクスmetrics.agent.
コンテナorchestrator.
プロセスprocess.
プロファイリングintake.profile.
トレースtrace.agent.
Database Monitoringdbm-metrics-intake.
Remote Configurationconfig.

この情報は 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 を再起動します

参考資料