
近年、クラウドの利活用が進み、ゼロトラストアーキテクチャが注目されている一方で、依然として閉域接続のニーズは根強く残っています。Datadog への監視データ送信も、その一例です。この記事では、AWS PrivateLink を使って、インターネットを経由せずに監視データをDatadog へ送信する方法を解説します。Datadog を扱っているが、閉域接続を試したことがないエンジニア向けに手順を解説します。
- ライター:猪子 亮
- 2019年ネットワンシステムズに新卒入社。
社内/外 向けサービス開発、事業部門の支援などを行っています。
主にWeb アプリケーションのフロントエンド、バックエンド開発(オンプレ/AWS)。
他には社内の自動化推進(Ansible)、業務改善活動、開発エンジニア育成などに取り組んでいます。
目次
はじめに
この記事では、閉域接続でDatadog へ監視データを送るためにAWS 上で行った検証内容を記載しています。
構成は図1 の通りです。
これまでDatadog はUS リージョンなど日本以外のサイトを使う必要がありましたが、2023年4月から日本リージョンが利用可能となっています。
これにより日本国内でデータの保存、処理が可能になり、各種規制に対応可能となっています。
本記事においてもAWS、Datadog 共に日本リージョンを用いて検証を行っています。
準備
今回の検証に必要な環境です。
- Datadog アカウントの準備
AP1-Japanリージョンに対応した有効なDatadog アカウントが必要です。
Datadog は14日間の無料トライアルが利用可能であり、無料アカウントでも今回の構成を試すことが可能です。 - AWS 環境の準備
インターネット接続のない環境を模した閉域ネットワークでDatadog Agent をインストールし、監視データを送る仕組みを構築します。
詳細は後述しますが、VPC の作成、インターネット接続のない環境でのDatadog Agent のインストール、PrivateLink の設定などを行っていきます。
手順
PrivateLink を設定し、Datadog に閉域で監視データを送るまでの大まかな手順は以下の通りです。
- Private Subnet にEC2 インスタンスを作成
- Datadog Agent インストール
- VPC エンドポイントの作成
- Datadog に送信されたデータの確認
Private Subnet にEC2 インスタンスを作成
EC2 作成前準備
VPC、サブネット、セキュリティグループ、EC2 インスタンスへSSM セッションマネージャーを使ってアクセスするためのVPCエンドポイントを作成します。
VPC 作成時はDNS ホスト名とDNS 解決の有効化を行ってください。
図1 の通り、サブネットはインターネットゲートウェイ へのルートは作らずPrivate サブネットとして作成します。
また、セキュリティグループでは443/TCP インバウントを受け入れる必要がある点に注意してください。
今回は容易に検証を行いたいため、EC2 インスタンスはDatadog Agent をインストールするインスタンス1台のみで構築します。
Private サブネット内のEC2 インスタンスへのアクセスは通常パブリックサブネットに配置された踏み台ホストからアクセスすることが多いと思いますが、今回はSSM セッションマネージャーを使いマネージメントコンソールからアクセスします。
そのため、EC2 インスタンス作成前にセッションマネージャーからアクセスするためのVPC エンドポイントの作成も行っておきます。
さらに、Session Manager の前提条件を満たす に記載されたVPC エンドポイントに加え、後述のDatadog Agent のインストール時にS3 もアクセスしたいので、S3 接続用のVPC エンドポイントの作成も行います。
図3 SSM セッションマネージャーを利用するためのVPC エンドポイントの作成
EC2 作成とセッションマネージャーでのアクセス
Datadog Agent が対応しており、SSM Agent がプリインストールされている AMIs を見つける に記載されたAMI であれば特に制約はありませんが、今回はUbuntu 22.04 を使用します。
起動後、EC2 インスタンス画面からインスタンスを選択し、接続を押下することでセッションマネージャーからアクセスするためのメニューが表示されます。
図4 インスタンス接続画面
なお接続ボタンがグレーアウトされているなど、うまく接続できない場合はSession Manager の前提条件の確認をおすすめします。
Datadog Agent インストール
インターネット環境のない場所でのDatadog Agent のインストール
インターネット接続が制限されているサーバーへの Agent のインストール を参考に、S3 バケットの作成とインストーラーの配置を行います。
S3 バケットへのパブリックアクセスはさせずに、VPC エンドポイント経由でのアクセスを許可するようバケットポリシーを設定します。
図5 インストーラーのS3 バケットへの配置
図6 EC2 からVPC エンドポイント経由でのアクセスを許可するバケットポリシー
設定が完了したら、curl 等でS3 からインストーラーをEC2 インスタンスへコピーし、実行します。
インストールが完了したらサービスが正常に起動していることを確認します。
VPC エンドポイントの作成
PrivateLink を使ったDatadog への接続
AWS PrivateLink を介して Datadog に接続する を参考に追加のVPC エンドポイントを作成します。
Datadog はap-northeast-1 でVPC エンドポイントサービスを公開しているため、そこへ接続するためのエンドポイントを作成する形になります。
サービスカテゴリで「その他のエンドポイントサービス」を選択し、ドキュメント記載のサービス名を入力します。
その後、「サービス名の検証」を押下することで検証可能です。
図9 Datadog に接続するためのVPC エンドポイントの作成
紐づけるVPC を選択後、「DNS 名を有効化」へのチェックが必要な点に注意してください。
必要なエンドポイントの作成が完了したら、以下2点のDatadog Agent の設定を行います。
- サイトをap1.datadoghq.com に変更
- 有効なapi_key の設定
いずれも設定ファイルの編集で設定可能です。
ここまで完了した時点でPrivateLink 経由でのDatadog への接続設定は完了しています。
Datadog へ送信されたデータの確認
これまでの手順がうまく設定ができていれば、Datadog のホスト一覧からプライベートサブネットに配置されたEC2 インスタンスを確認できます。
もし表示されていない場合、datadog-agent status コマンドや/var/log/datadog/agent.log の内容から設定不備がないかを確認します。
まとめ
本記事では、AWS 上でインターネットに接続せずに監視データを送信する方法について解説しました。
DatadogのAWS インテグレーションを活用すれば、CloudWatch からメトリクスを取得することができますが、Datadog Agent を使って取得したいメトリクスがある場合などに有効です。
また、AWS Direct Connect を使いオンプレミスネットワークとVPC をセキュアに接続することで、オンプレミスにある監視データを閉域でDatadog へ送信する構成も取ることが可能です。
最後に、Datadog はオブザーバビリティサービス で扱っていますので、併せてご確認ください。
※本記事の内容は執筆者個人の見解であり、所属する組織の見解を代表するものではありません。