- 重要な情報
- はじめに
- 用語集
- ガイド
- エージェント
- インテグレーション
- OpenTelemetry
- 開発者
- API
- CoScreen
- アプリ内
- Service Management
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
バージョン 6.0 以降の Agent は、UDP 転送に代わる手段として、Unix ドメインソケット (UDS) でメトリクスを収集できるようになりました。
UDP はローカルホスト
ではたいへんよく機能しますが、コンテナ環境でのセットアップが難しい場合があります。Unix ドメインソケットを使用すると、Datadog Agent コンテナの IP に関係なく、ソケットファイルで接続を確立できます。また、次のような利点もあります。
IP:port
ペアを使用して接続を確立する代わりに、Unix ドメインソケットは、プレースホルダーソケットファイルを使用します。いったん接続が開かれると、データは UDP と同じデータグラム形式で転送されます。Agent が再起動した場合、既存のソケットは削除され、新しいソケットに置き換わります。クライアントライブラリはこの変化を検出し、新しいソケットにシームレスに接続します。
注:
Unix Domain Socket で DogStatsD をセットアップするには、dogstatsd_socket
パラメーターを使用して DogStatsD サーバーを有効にします。次に、コードで DogStatsD クライアント を構成します。
Agent DogStatsD UDS を有効にするには
Agent のメイン構成ファイルを編集して、DogStatsD がリスニングソケットを作成するパスを dogstatsd_socket
に設定します。
## @param dogstatsd_socket - string - optional - default: ""
## Listen for Dogstatsd metrics on a Unix Socket (*nix only).
## Set to a valid and existing filesystem path to enable.
#
dogstatsd_socket: '/var/run/datadog/dsd.socket'
Agent コンテナの環境変数 DD_DOGSTATSD_SOCKET=<あなたの UDS パス>
でソケットパスを設定します。
アプリケーションコンテナ (読み取り専用) と Agent コンテナ (読み書き) の両側でホストディレクトリをマウントし、ソケットファイルをアプリケーションコンテナへアクセスできるようにします。個別のソケットではなく親フォルダーをマウントすることで、DogStatsD が再起動してもソケット通信を維持することができます。
-v /var/run/datadog:/var/run/datadog
で Agent コンテナを起動します。-v /var/run/datadog:/var/run/datadog:ro
でアプリケーションコンテナを起動します。Agent コンテナの環境変数 DD_DOGSTATSD_SOCKET=<YOUR_UDS_PATH>
でソケットパスを設定します (例: /var/run/datadog/dsd.socket
)。
アプリケーションコンテナ (読み取り専用) と Agent コンテナ (読み書き) の両側でホストディレクトリをマウントし、ソケットファイルをアプリケーションコンテナへアクセスできるようにします。個別のソケットではなく親フォルダーをマウントすることで、DogStatsD が再起動してもソケット通信を維持することができます。
datadog-agent
コンテナでソケットフォルダーをマウントします。
volumeMounts:
- name: dsdsocket
mountPath: /var/run/datadog
##...
volumes:
- hostPath:
path: /var/run/datadog/
name: dsdsocket
同じフォルダーをアプリケーションコンテナで公開します。
volumeMounts:
- name: dsdsocket
mountPath: /var/run/datadog
readOnly: true
## ...
volumes:
- hostPath:
path: /var/run/datadog/
name: dsdsocket
注: アプリケーションコンテナでソケットへの書き込みアクセス許可が必要な場合は、 readOnly: true
を削除してください。
シェルスクリプトからメトリクスを送信したり、DogStatsD がソケットでリスニングしているかをテストする場合は、netcat
を使用します。netcat
のほとんどの実装 (Debian の netcat-openbsd
、RHEL の nmap-ncat
など) は、-U
フラグで Unix ソケットトラフィックをサポートしています。
echo -n "custom.metric.name:1|c" | nc -U -u -w1 /var/run/datadog/dsd.socket
発信点検出により、DogStatsD はコンテナメトリクスとタグメトリクスがどこから発信されたかを自動的に検出します。このモードが有効な場合は、UDS で受信されたすべてのメトリクスがオートディスカバリーメトリクスと同じコンテナタグに基づいてタグ付けされます。
Agent のメイン構成ファイルで dogstatsd_origin_detection
オプションを有効にします。
## @param dogstatsd_origin_detection - boolean - optional - default: false
## When using Unix Socket, DogStatsD can tag metrics
## with container metadata. If running DogStatsD in a container,
## host PID mode (e.g. with --pid=host) is required.
#
dogstatsd_origin_detection: true
任意 - 発信点検出を使用して収集されたメトリクスにタグカーディナリティを設定するには、パラメーター dogstatsd_tag_cardinality
に low
(デフォルト)、orchestrator
、または high
を使用します。
## @param dogstatsd_tag_cardinality - string - optional - default: low
## Configure the level of granularity of tags to send for DogStatsD
## metrics and events. Choices are:
## * low: add tags about low-cardinality objects
## (clusters, hosts, deployments, container images, ...)
## * orchestrator: add tags about pods (Kubernetes),
## or tasks (ECS or Mesos) -level of cardinality
## * high: add tags about high-cardinality objects
## (individual containers, user IDs in requests, etc.)
##
## WARNING: Sending container tags for DogStatsD metrics may create
## more metrics (one per container instead of one per host).
## This may impact your custom metrics billing.
#
dogstatsd_tag_cardinality: low
Agent コンテナの環境変数 DD_DOGSTATSD_ORIGIN_DETECTION=true
を設定します。
任意 - 発信点検出を使用して収集されたメトリクスに[タグカーディナリティ][5]を設定するには、環境変数 DD_DOGSTATSD_TAG_CARDINALITY
に low
(デフォルト)、orchestrator
、または high
を使用します。
DogStatsD がコンテナ内で実行されている場合、発信点検出を高い信頼性で行うには、DogStatsD をホストの PID ネームスペースで実行する必要があります。そのため、--pid=host
フラグを用いて Docker で有効にします。注: これは、コンテナのタスク定義内の "pidMode": "host"
パラメーターを使用して、ECS によってサポートされます。このオプションは、Fargate ではサポートされません。詳細については、PID モードで AWS のドキュメントを参照してください。
Agent コンテナの環境変数 `DD_DOGSTATSD_ORIGIN_DETECTION を true に設定します。
# (...)
env:
# (...)
- name: DD_DOGSTATSD_ORIGIN_DETECTION
value: 'true'
任意 - 発信点検出を使用して収集されたメトリクスにタグカーディナリティを設定するには、環境変数 DD_DOGSTATSD_TAG_CARDINALITY
に low
(デフォルト)、orchestrator
、または high
を使用します。
# (...)
env:
# (...)
- name: DD_DOGSTATSD_TAG_CARDINALITY
value: 'low'
注: container_id
、container_name
、pod_name
タグは、カスタムメトリクスが多くなりすぎないようにデフォルトでは追加されていません。
以下の DogStatsD クライアントライブラリは、UDS トラフィックをネイティブでサポートします。UDS トラフィックを有効にする方法については、各ライブラリのドキュメントを参照してください。注: UDP と同様に、トラフィックが多い場合は、パフォーマンスを向上させるため、クライアント側のバッファリングを有効にすることを強くお勧めします。
言語 | ライブラリ |
---|---|
Golang | DataDog/datadog-go |
Java | DataDog/java-dogstatsd-client |
Python | DataDog/datadogpy |
Ruby | DataDog/dogstatsd-ruby |
PHP | DataDog/php-datadogstatsd |
C# | DataDog/dogstatsd-csharp-client |
アプリケーションまたはクライアントライブラリが UDS トラフィックをサポートしていない場合は、socat
を実行して UDP ポート 8125
でリスニングし、リクエストをソケットにプロキシすることができます。
socat -s -u UDP-RECV:8125 UNIX-SENDTO:/var/run/datadog/dsd.socket
追加の実装オプションの作成に関するガイドラインについては、datadog-agent GitHub wiki を参照してください。