AWS PrivateLink を介して Datadog に接続する
Datadog PrivateLink は、選択された Datadog サイトをサポートしていません。
概要
このガイドでは Datadog で使用するために AWS PrivateLink の構成方法についてご説明します。まずはローカルの Datadog Agent がデータを送信可能な VPC の内部エンドポイントを構成します。その後、VPC エンドポイントを Datadog の VPC 内にあるエンドポイントと紐付けます。
Datadog は、 で AWS PrivateLink のエンドポイントを公開します。
同じリージョンから接続する
AWS マネジメントコンソールを任意のリージョンに接続します。
VPC ダッシュボードの PrivateLink and Lattice で Endpoints を選択します。
Create Endpoint をクリックします。
Find service by name を選択します。
Service Name テキストボックスに、AWS PrivateLink を構築したいサービスの名前を入力します。
| Datadog | PrivateLink サービス名 | プライベート DNS 名 |
|---|
| ログ (Agent の HTTP 取り込み) | | |
| ログ (ユーザーの HTTP 取り込み) | | |
| API | | |
| Metrics | | |
| Containers | | |
| Process | | |
| Profiling | | |
| Traces | | |
| Database Monitoring | | |
| Remote Configuration | | |
Verify をクリックします。Service name found と表示されない場合は、Datadog サポートにお問い合わせください。
Datadog の VPC サービスエンドポイントと紐付ける VPC およびサブネットを選択します。
Enable DNS name に、Enable for this endpoint がチェックされていることを確認します。
任意のセキュリティグループを選択し、この VPC エンドポイントにトラフィックを送信できる送信元の範囲を指定します。
注: セキュリティグループは、TCP ポート 443 のインバウンドトラフィックを許可する必要があります。
画面下部の Create endpoint をクリックします。作成が完了すると以下が表示されます。
VPC エンドポイントの ID をクリックして、ステータスを確認します。
ステータスが Pending から Available に変わるまでお待ちください。これには約 10 分要する場合があります。Available と表示されれば、AWS PrivateLink を利用することができます。
バージョン v6.19 または v7.19 以前の Datadog Agent を使用している場合、ログデータを収集するため、Agent が HTTPS 経由でログを送信するように構成されていることを確認してください。データがまだない場合は、Agent datadog.yaml コンフィギュレーションファイルに以下を追加します。
logs_config:
force_use_http: true
If you are using the container Agent, set the following environment variable instead:
DD_LOGS_CONFIG_FORCE_USE_HTTP=true
This configuration is required when sending logs to Datadog with AWS PrivateLink and the Datadog Agent, and is not required for the Lambda Extension. For more details, see Agent log collection.
Lambda Extension で、環境変数 DD_API_KEY_SECRET_ARN で指定した ARN を使って AWS Secrets Manager から Datadog API キーを読み込む場合、Secrets Manager 用の VPC エンドポイントを作成する必要があります。
Agent を再起動し、AWS PrivateLink 経由で Datadog にデータを送信します。
他のリージョンから接続する
AWS マネジメントコンソールを任意のリージョンに接続します。
VPC ダッシュボードの PrivateLink and Lattice で Endpoints を選択します。
Create Endpoint をクリックします。
VPC インターフェイスエンドポイントの設定を構成する
- オプションで、Name tag を入力します。
- Type で、PrivateLink Ready partner services を選択します。
クロスリージョンサポート付きのインターフェイスエンドポイントを検出し、構成します。
- Service name で、以下のテーブルから有効な PrivateLink サービス名をサービス名欄に入力します。
- Service region で、Enable Cross Region endpoint をクリックし、****を選択します。
- Verify service をクリックし、_サービス名が確認されました_という通知が表示されるまで待ちます。
注: 上記の手順を完了した後もサービスの確認ができない場合は、Datadog サポートにお問い合わせください。
Network Settingsで、VPC インターフェイスエンドポイントをデプロイするための VPC を選択します。
Enable DNS name のオプションがチェックされていることを確認します。
Subnets で、インターフェイスエンドポイント用 VPC の 1 つ以上のサブネットを選択します。
Security Groupsで、VPC エンドポイントにトラフィックを送信できるセキュリティグループを選択します。
注: セキュリティグループは、TCP ポート 443 のインバウンドトラフィックを許可する必要があります。
オプションで、Name tag を提供し、Create endpoint をクリックします。
エンドポイントステータスが Pending から Available に更新されるまで数分待ちます。これには約 10 分要する場合があります。予想以上に時間がかかる場合は、Datadog サポートにお問い合わせください。
エンドポイントステータスが Available に更新された後、このエンドポイントを利用し、クロスリージョン AWS PrivateLink エンドポイントを使用して Datadog にテレメトリを送信できます。
PrivateLink サービス名
| Datadog | PrivateLink サービス名 | プライベート DNS 名 |
|---|
| ログ (Agent の HTTP 取り込み) | | |
| ログ (ユーザーの HTTP 取り込み) | | |
| API | | |
| Metrics | | |
| Containers | | |
| Process | | |
| Profiling | | |
| Traces | | |
| Database Monitoring | | |
| Remote Configuration | | |
注: クロスリージョン PrivateLink は CloudWatch メトリクスを送信しません。詳細については、AWS PrivateLink の CloudWatch メトリクスを参照してください。
- AWS Console をリージョン に接続し、VPC エンドポイントを作成します。
- Find service by name を選択します。
- Service Name テキストボックスに、AWS PrivateLink を構築したいサービスの名前を入力します。
| Datadog | PrivateLink サービス名 |
|---|
| ログ (Agent の HTTP 取り込み) | |
| ログ (ユーザーの HTTP 取り込み) | |
| API | |
| Metrics | |
| Containers | |
| Process | |
| Profiling | |
| Traces | |
| Database Monitoring | |
| Remote Configuration | |
Verify をクリックします。Service name found と表示されない場合は、[Datadog サポート][14]にお問い合わせください。
次に、Datadog の VPC サービスエンドポイントと紐付ける VPC およびサブネットを選択します。VPC ピアリングでは DNS を手動で構成する必要があるため、Enable DNS name は選択しないでください。
任意のセキュリティグループを選択し、この VPC エンドポイントにトラフィックを送信できる送信元の範囲を指定します。
注: セキュリティグループは、TCP ポート 443 のインバウンドトラフィックを許可する必要があります。
画面下部の Create endpoint をクリックします。作成が完了すると以下が表示されます。
- VPC エンドポイントの ID をクリックして、ステータスを確認します。
- ステータスが Pending から Available に変わるまでお待ちください。これには約 10 分要する場合があります。
- エンドポイントが作成されたら、VPC ピアリングを使って、別のリージョンでも PrivateLink エンドポイントを利用して PrivateLink 経由で Datadog にテレメトリを送信できるようにします。詳しくは、AWS の VPC ピアリング接続での作業ページをご覧ください。
Amazon Route53
- AWS PrivateLink のエンドポイントを作成した各サービスに対して、Route53 プライベートホストゾーンを作成します。プライベートホストゾーンを
の VPC にアタッチします。
以下のリストを使用して、サービスおよび DNS 名を Datadog の各部にマッピングします。
| Datadog | PrivateLink サービス名 | プライベート DNS 名 |
|---|
| ログ (Agent の HTTP 取り込み) | | |
| ログ (ユーザーの HTTP 取り込み) | | |
| API | | |
| Metrics | | |
| Containers | | |
| Process | | |
| Profiling | | |
| Traces | | |
| Database Monitoring | | |
| Remote Configuration | | |
また、AWS API の DescribeVpcEndpointServices を問い合わせるか、次の CLI コマンドを使用してもこの情報を見つけることができます。
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.を返します。このレコードを上書きすると、メトリクスに関連するインテークホスト名がすべて取得されます。
- それぞれの新しい Route53 プライベートホストゾーン内に、同じ名前で A レコードを作成します。Alias オプションをトグルし、Route traffic to で、Alias to VPC endpoint、****を選び、DNS 名と関連付けられた VPC エンドポイントの DNS 名を入力します。注:
- DNS 名を取得するには、エンドポイントサービスのプライベート DNS 名構成ドキュメントを表示するを参照してください。
Agent はバージョン付きのエンドポイント (例:
[version]-app.agent. ) にテレメトリを送信します。エンドポイントでは CNAME エイリアスを通じた名前解決が行われ、 metrics.agent. にルーティングされます。したがって、 metrics.agent.のプライベートホストゾーンのセットアップのみが必要となります。
Datadog PrivateLink のエンドポイントを含む の VPC と、Datadog Agent を実行する地域の VPC の間で、VPC ピアリングとルーティングを構成します。
VPC が異なる AWS アカウントにある場合、続行する前に Datadog Agent を含む VPC が Route53 プライベートホストゾーンとの関連付けを許可されている必要があります。Datadog Agent が実行する VPC のリージョンと VPC ID を使用して、各 Route53 プライベートホストゾーンに対して VPC 関連付け承認を作成します。このオプションは、AWS Console では利用できません。AWS CLI、SDK、または API を使用して構成する必要があります。
Route53 ホストゾーンを編集して、他のリージョンの VPC を追加します。
プライベートホストゾーン (PHZ) が接続されている VPC では、特定の設定、特に enableDnsHostnames と enableDnsSupport をオンにする必要があります。プライベートホストゾーンを使用する際の注意点を参照してください。
Agent を再起動し、AWS PrivateLink 経由で Datadog にデータを送信します。
DNS の解決と接続のトラブルシューティング
DNS 名は、 の VPC の CIDR ブロックに含まれる IP アドレスに解決し、port 443 への接続に成功するはずです。
DNS がパブリック IP アドレスに解決している場合、Route53 ゾーンが代替地域の VPC に関連付けされていないか、A レコードが存在しないことが原因です。
DNS は正しく解決しているのに、port 443 への接続に失敗する場合、VPC のピアリングまたはルーティングが誤って構成されているか、ポート 443 が の VPC の CIDR ブロックへのアウトバウンドを許可されていない可能性があります。
プライベートホストゾーン (PHZ) が接続されている VPC は、いくつかの設定をオンにする必要があります。具体的には、PHZ が関連付けられている VPC で、enableDnsHostnames と enableDnsSupport がオンになっている必要があります。Amazon VPC 設定を参照してください。
Datadog Agent
ログデータを収集する場合は、Agent が HTTPS 経由でログを送信するように構成されていることを確認してください。データがまだない場合は、Agent datadog.yaml コンフィギュレーションファイルに以下を追加します。
logs_config:
force_use_http: true
If you are using the container Agent, set the following environment variable instead:
DD_LOGS_CONFIG_FORCE_USE_HTTP=true
This configuration is required when sending logs to Datadog with AWS PrivateLink and the Datadog Agent, and is not required for the Lambda Extension. For more details, see Agent log collection.
Lambda Extension で、環境変数 DD_API_KEY_SECRET_ARN で指定した ARN を使って AWS Secrets Manager から Datadog API キーを読み込む場合、Secrets Manager 用の VPC エンドポイントを作成する必要があります。
Agent を再起動します。
データが PrivateLink {#verify-that-data-is-being-sent-using-privatelink}を使用して送信されていることを確認する
PrivateLink を設定した後、PrivateLink を使用してデータが送信されていることを確認するため、その VPC 上のマシンでdig コマンドを実行します。例えば、エンドポイント http-intake.logs.datadoghq.com に PrivateLink を設定した場合は、このコマンドを実行します。
dig http-intake.logs.datadoghq.com
ログが PrivateLink 経由で送信されている場合、出力の ANSWER Section セクションには以下の例のように http-intake.logs.datadoghq.com が表示されます。注: 返される IP アドレスはプライベート IP 空間内である必要があります。
;; ANSWER SECTION:
http-intake.logs.datadoghq.com. 60 IN A 172.31.57.3
http-intake.logs.datadoghq.com. 60 IN A 172.31.3.10
http-intake.logs.datadoghq.com. 60 IN A 172.31.20.174
http-intake.logs.datadoghq.com. 60 IN A 172.31.34.135
ログが PrivateLink 経由で送信されていない場合、出力の ANSWER SECTION にはログが送信されているロードバランサー (4-logs-http-s1-e721f9c2a0e65948.elb.us-east-1.amazonaws.com) が表示されます。
;; ANSWER SECTION:
http-intake.logs.datadoghq.com. 177 IN CNAME http-intake-l4.logs.datadoghq.com.
http-intake-l4.logs.datadoghq.com. 173 IN CNAME l4-logs-http-s1-e721f9c2a0e65948.elb.us-east-1.amazonaws.com.
l4-logs-http-s1-e721f9c2a0e65948.elb.us-east-1.amazonaws.com. 42 IN A 3.233.158.48
l4-logs-http-s1-e721f9c2a0e65948.elb.us-east-1.amazonaws.com. 42 IN A 3.233.158.49
l4-logs-http-s1-e721f9c2a0e65948.elb.us-east-1.amazonaws.com. 42 IN A 3.233.158.50
参考資料