Datadogに新規監視を追加している中で、監視できないサイトがでてきました。FWなどによるIP制限のかかっているサイトです。DatadogはAWS上で動いているサーバなので、DatadogのIPを全て許可入れる、なんてことはまぁ避けたいです。こんなときに活用できるのがプライベートロケーションです。概要は公式ページを参照ください。ザクっと説明するとこんな環境で使えます。
・IP制限をかけていて特定のIPからのみアクセスが可能
・internet公開していないプライベート環境
設定を行う時の事前注意です。プライベートロケーション機能、デフォルトでは使えません!!とは言っても、簡単に使えます。datadogのサポート宛てに使いたい旨と使いたい理由を書いてメール送信すればすんなり使えるようになります。
はじめに
プライベートロケーション監視とは外部からのアクセスを遮断している環境に対して、アクセスが可能な代理サーバが監視することによってDatadog上で情報を参照できるようになる仕組みです。よって代理監視サーバを立てる必要があります。公式ページではubuntsuにdockerコンテナを入れての案内になっていましたが、私はcentOS7の環境で構築しました。
設定方法
- 監視サーバ(centOS7)、dockerインストール
# yum install yum-utils device-mapper-persistent-data lvm2
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# yum install docker-ce docker-ce-cli containerd.io
# systemctl start docker
# systemctl enable docker
- datadog、プライベートロケーション設定
- プライベートロケーション用API Keyの作成
- [Integrations]-[APIs]
- [API Keys]
- Name : private-location ※任意の名前でOK
- プライベートロケーションの作成
- [UX Monitoring]-[Setting] -> [Private Locations]
- Add Private Location ボタンを押す
- Name : private-ssl ※任意の名前でOK
- API Key : private-location ※上記で作成したものを選択
- Save Location and Generate Configuration File ボタンを押す
- Configure your private location : 全て空白(デフォルトのまま)
- JSONを選択し中身をコピーしておく
- プライベートロケーション用API Keyの作成
- 監視サーバ、dockerコンテナ起動
- 上記でコピーした内容を下記の通りファイルにして保存
# vi /etc/docker/datadog-private.json
{
"datadogApiKey": "abcdefghijklmn1234567890",
"id": "pl:private-test-abcdefghijklmnopqrstu1234567890",
"site": "datadoghq.com",
"accessKey": "abcdefghijklmnopqrstu1234567890",
"secretAccessKey": "abcdefghijklmnopqrstu1234567890abcdefghijklmnopqrstu1234567890",
"privateKey": "-----BEGIN RSA PRIVATE KEY-----hogehoge=\n-----END RSA PRIVATE KEY-----",
"publicKey": {
"pem": "-----BEGIN PUBLIC KEY-----hogehoge=\n-----END PUBLIC KEY-----\n",
"fingerprint": "abcdefghijklmnopqrstu1234567890="
}
}
- datadog管理画面で次へ進む
- View Installation Instructions ボタンを押す
- dockerコンテナ起動
- 以下のコマンドを実行してコンテナ起動
# docker run --restart=always --name datadog -dv /etc/docker/datadog-private.json:/etc/datadog/synthetics-check-runner.json datadog/synthetics-private-location-worker:latest
- datadog管理画面でstatus確認
- Private Location Status が「OK」になっていれば、完了
上記でDockerコンテナによるプライベートロケーションの作成は完了です。Synthetic Testでプライベートロケーションを利用する場合は、以下画像のように、ロケーション設定でAWS環境ではなく作成したプライベートロケーションを選択してください。
最後に
補足ですが、DNSで名前解決できないような内部サイトを監視しようとしたのですが、Dockerを動かしているサーバのhostsファイルに足してもTest実行が最初にDNS参照をするみたいで、hostsファイルによる名前解決ができずエラーになります。割と需要のありそうな監視だと思うので、Datadogのサポートに問い合わせを行っています。解決ができれば改めてブログで公開していきます。
コメント