cloudpackサポートの林です。
Datadog Proxyを使用した監視の導入をする際、Datadogインストール後にインスタンスのリソース状況のメトリクスをAgentまで送信できないことがありました。
その際の原因特定までの内容を記載したいと思います。
前提条件
システムの構成として、インスタンスはプライベートサブネット上に構築されており、プライベートIPしか保有していないインスタンスとなります。
また、プロキシインスタンスのDatadogのバージョンはv5を使用しております。
インストール先のインスタンスはWindowsサーバーとなっております。
内容
Datadogを導入するインスタンスにインストーラーからv5のインストールを行いました。
インストールは無事完了したのですが、プロキシを経由したシステムのリソース状況(CPU、Memory、Disk使用率等)が取得できない状況となっておりました。
Datadogのログでは以下のようなエンドポイントに到達できないログが出力されておりました。
2023-mm-dd 16:58:27 JST | CORE | ERROR | (comp/forwarder/defaultforwarder/worker.go:187 in process) | Too many errors for endpoint 'http://プロキシIP:ポート/api/v2/series': retrying later 2023-mm-dd 16:58:13 JST | CORE | ERROR | (pkg/config/remote/service/service.go:344 in pollOrgStatus) | Could not refresh Remote Config: failed to issue org data request: Get "https://config.datadoghq.com/api/v0.1/status": dial tcp 3.233.157.106:443: i/o timeout 2023-mm-dd 16:58:13 JST | CORE | ERROR | (comp/forwarder/defaultforwarder/worker.go:187 in process) | Too many errors for endpoint 'http://プロキシIP:ポート/api/v1/metadata': retrying later 2023-mm-dd 16:58:13 JST | CORE | ERROR | (comp/forwarder/defaultforwarder/worker.go:187 in process) | Too many errors for endpoint 'http://プロキシIP:ポート/api/v2/series': retrying later 2023-mm-dd 16:58:12 JST | CORE | ERROR | (comp/forwarder/defaultforwarder/worker.go:191 in process) | Error while processing transaction: error "404 Not Found" while sending transaction to "http://プロキシIP:ポート/api/v1/metadata", rescheduling it: "404: Not Found" 2023-mm-dd 16:57:57 JST | CORE | ERROR | (comp/forwarder/defaultforwarder/worker.go:187 in process) | Too many errors for endpoint 'http://プロキシIP:ポート/api/v2/series': retrying later 2023-mm-dd 16:57:52 JST | CORE | ERROR | (comp/forwarder/defaultforwarder/worker.go:187 in process) | Too many errors for endpoint 'http://プロキシIP:ポート/api/v2/series': retrying later http://プロキシIP:ポート/api/v2/series
設定については、Datadogのconfファイルにおいて、プロキシのエンドポイントに対する記述は正常に行われており、他の設定についても見直しましたが特に異常を見つけることができませんでした。
調査を行っている際、Datadog Proxyはv5までしか対応していない記述がドキュメントに記載がありました。
しかしながらインストール先のインスタンスと、プロキシインスタンスどちらにもv5を導入する必要があるとは調査当時では明確な記述がありませんでした。
すでにネットワークに展開されている Web プロキシ (Squid や Microsoft Web プロキシなど) を使用する HAProxy の使用 (同じプロキシを介して16 ~ 20 を超えるエージェントをプロキシする場合) エージェントをプロキシとして使用する (プロキシあたり最大 16 のエージェント、エージェント v5 のみ)
https://docs.datadoghq.com/ja/agent/configuration/proxy/?tab=linux#overview
本件について、Datadogサポートに問合せを行ったところインストール先のインスタンスと、プロキシインスタンスどちらにもv5を導入する必要があるとのことが判明しました。
導入段階ではよりバージョンの新しいものを導入することが推奨されていたため、今回はv6以降をインストールしていたことが原因となってました。
詳細な理由といたしましてはAgent v5をProxyしてデータ送信する場合、転送先となるエンドポイントはハードコーディングされているためのことでした。
該当リンク:https://github.com/DataDog/dd-agent/blob/8602169bf6c0f48e33bb70e20a1a24ffcc1daa93/ddagent.py#L501
※また、Agent v5に対してはアップデートの提供予定がなく、上記が修正される見込みはないとのことです。
まとめ
Datadog Proxyを使用する際は、対象インスタンスとプロキシインスタンスどちらにもDatadogのバージョンとしてv5が求められます。
今回の対応としてはv6以降を削除の上、再度v5をインストールしました。
インストール後もDatadogからシステムのリソース状況を一時取得できない状況がありましたが、こちらはメモリ使用率が高く、Datadogで使用するリソースが不足していたことが原因でした。
設定項目に疑わしい部分がなく、インスタンスのリソース使用量が高い際は負荷状況についての調査も怠らないようにしましょう。
また、今回は都合上v5を導入することとなりましたが、現在、Datadog Proxyはv5までしか対応しておりません。
そのため、Proxyを経由した監視設定が必要な場合、基本的にv6やv7以降を使用した設定をすることを推奨いたします。
※v6,v7以降ではSquidやHAProxyを別途転送設定する必要があります。
Squidの場合
https://docs.datadoghq.com/ja/agent/configuration/proxy/?tab=linux#proxy-forwarding-with-squid
HAProxyの場合
https://docs.datadoghq.com/ja/agent/configuration/proxy/?tab=linux#proxy-forwarding-with-haproxy
Nginxの場合
https://docs.datadoghq.com/ja/agent/configuration/proxy/?tab=linux#proxy-forwarding-with-nginx
~~調査を迅速に行うために~~
Datadogに調査依頼をする際には、Agentのフレアを送付すると問題の解決までが迅速になります。
今回のようにアウトバウンドが許可されてない等で、送付できない際はWindowsでは以下のようなディレクトリにファイルが存在しますのでご確認いただくことをおすすめします。
C:\Users\DDAGEN~1\AppData\Local\Temp\
Agent フレアについてのドキュメント
https://docs.datadoghq.com/ja/agent/troubleshooting/send_a_flare/?tab=agentv6v7
https://docs.datadoghq.com/ja/agent/basic_agent_usage/windows/?tab=gui#agent-v6