DogStatsD
ネットワーク パフォーマンス モニタリングの正式提供を開始しました! ネットワーク パフォーマンス モニタリング提供開始!

DogStatsD

DogStatsD は、Datadog Agent に付属するメトリクス集計サービスです。カスタムアプリケーションメトリクスを最も簡単に Datadog に取り込むには、メトリクスを DogStatsD に送信します。DogStatsD は StatsD プロトコルを実装すると共に、Datadog 固有の以下の拡張機能を提供します。

  • ヒストグラムメトリクスタイプ
  • サービスチェック
  • イベント
  • タグ付け

準拠する StatsD クライアントは、DogStatsD および Agent で動作しますが、その場合、Datadog 固有の拡張機能は使用できません。

: DogStatsD は、StatsD のタイマーをネイティブメトリクスタイプとして実装しません(ただし、ヒストグラム経由でサポートします)。

UDS の仕組み

DogStatsD は、UDP 経由でカスタムメトリクスイベント、およびサービスチェックを受け入れ、それらを定期的に集計して Datadog に転送します。

UDP を使用するため、アプリケーションはメトリクスを DogStatsD に送信した後、応答を待たずに自身の作業を再開できます。DogStatsD を利用できなくなった場合でも、アプリケーションは中断しません。

DogStatsD は、データを受け取ると共に、*フラッシュ間隔*と呼ばれる時間間隔(デフォルトで 10 秒)でメトリクスごとに複数のデータポイントを 1 つのデータポイントに集計します。

セットアップ

DogStatsD は、Agent v6 以上の UDP ポート 8125 でデフォルトで有効になっています。このポートを変更する必要がない場合は、コードで DogStatsD をセットアップする方法を直接参照してください。また、Docker および Kubernetes の関連する DogStatsD セットアップドキュメントも参照してください。

Agent

デフォルトでは、DogStatsD は UDP ポート 8125 をリスニングします。これを変更する必要がある場合は、Agent のメイン構成ファイルdogstatsd_port オプションを構成し、Agent を再起動します。Unix ドメインソケットを使用するように DogStatsD を構成することもできます。カスタム Agent DogStatsD サーバーの UDP ポートを有効にするには:

  1. datadog.yaml ファイルを編集して、use_dogstatsd および dogstatsd_port パラメーターのコメントを解除します。

    ## @param use_dogstatsd - boolean - optional - default: true
    ## Set this option to false to disable the Agent DogStatsD server.
    #
    use_dogstatsd: true
    
    ## @param dogstatsd_port - integer - optional - default: 8125
    ## Override the Agent DogStatsD port.
    ## Note: Make sure your client is sending to the same UDP port.
    #
    dogstatsd_port: 8125
  2. Agent を再起動します

コード

DogStatsD クライアントをインストールする

公式の Datadog-DogStatsD クライアントライブラリは、次の言語で使用できます。汎用 StatsD クライアントを使用してメトリクスを DogStatsD に送信_できます_が、上記の Datadog 固有の機能を使用することはできません。

$ pip install datadog
$ gem install dogstatsd-ruby
$ go get github.com/DataDog/datadog-go/statsd

Java DataDog StatsD Client は maven central とともに配布され、Maven からダウンロードできます。まず、pom.xml に以下の構成を追加します。

<dependency>
    <groupId>com.datadoghq</groupId>
    <artifactId>java-dogstatsd-client</artifactId>
    <version>2.8</version>
</dependency>

composer.json に以下を追加します。

"datadog/php-datadogstatsd": "1.4.*"

: Composer に付属している最初のバージョンは 0.0.3 です。

または、github.com/DataDog/php-datadogstatsd でリポジトリを手動でクローンし、require './src/DogStatsd.php' でセットアップします。

NuGet からパッケージを取得してインストールします。

DogStatsD クライアントをインスタンス化する

DogStatsD クライアントをインストールしたら、コードでインスタンス化します。

from datadog import statsd

options = {
    'statsd_host':'127.0.0.1',
    'statsd_port':8125
}

initialize(**options)
# ライブラリをインポートします
require 'datadog/statsd'

# DogStatsD クライアントインスタンスを作成します。
statsd = Datadog::Statsd.new('localhost', 8125)
dogstatsd_client, err := statsd.New("127.0.0.1:8125")
if err != nil {
    log.Fatal(err)
}

その他のオプションについては、Datadog の GoDoc を参照してください。

import com.timgroup.statsd.NonBlockingStatsDClient;
import com.timgroup.statsd.StatsDClient;

public class DogStatsdClient {

    public static void main(String[] args) throws Exception {

        StatsDClient Statsd = new NonBlockingStatsDClient("statsd", "localhost", 8125);

    }
}

composer を使用して、新しい DogStatsd オブジェクトをインスタンス化します。

<?php

require __DIR__ . '/vendor/autoload.php';

use DataDog\DogStatsd;

$statsd = new DogStatsd(
    array('host' => '127.0.0.1',
          'port' => 8125,
     )
  );

DogStatsd クラスを構成します。

// コードは StatsdClient ネームスペースの下にあります
using StatsdClient;

// ...

var dogstatsdConfig = new StatsdConfig
{
    StatsdServerName = "127.0.0.1",
    StatsdPort = 8125,
};

StatsdClient.DogStatsd.Configure(dogstatsdConfig);

クライアントのインスタンス化パラメーター

必須の DogStatsD 構成(urlport)に加えて、DogStatsD クライアントでは次のオプションのパラメーターを使用できます。

パラメーター種類デフォルト説明
statsd_host文字列localhostDogStatsD サーバーのホスト。
statsd_port整数8125DogStatsD サーバーのポート。
statsd_socket_path文字列nullDogStatsD Unix ドメインソケットへのパス(hostport をオーバーライドします。Agent v6 以上でのみサポートされます)。
statsd_constant_tags文字列のリストnullすべてのメトリクス、イベント、サービスチェックに適用するタグ。
statsd_namespace文字列nullすべてのメトリクス、イベント、サービスチェックの前に付けるネームスペース。

詳細については、DogStatsD モジュールのドキュメントを参照してください。

パラメーター種類デフォルト説明
host文字列localhostDogStatsD サーバーのホスト。
port整数8125DogStatsD サーバーのポート。
socket_path文字列nullDogStatsD Unix ドメインソケットへのパス(hostport をオーバーライドします。Agent v6 以上でのみサポートされます)。
tags文字列のリストnullすべてのメトリクス、イベント、サービスチェックに適用するタグ。
namespace文字列nullすべてのメトリクス、イベント、サービスチェックの前に付けるネームスペース。
パラメーター種類説明
Namespace文字列すべてのメトリクス、イベント、サービスチェックの前に付けるネームスペース。
Tags文字列のリストすべてのメトリクス、イベント、サービスチェックに適用されるグローバルタグ。
BufferedBoolean1 つのペイロードに複数の DogStatsD メッセージをパックするために使用されます。true に設定すると、ペイロードの合計サイズが MaxMessagesPerPayload またはペイロードの構築開始から 100ms を超えるまでメッセージがバッファリングされます。
MaxMessagesPerPayload整数単一のペイロードに含めることができるメトリクス、イベント、サービスチェックの最大数。このオプションは、クライアントがバッファリングされている場合にのみ有効です。
AsyncUDSBooleanUDS の非同期モードとブロッキングモードを切り替えるために使用されます。ブロッキングモードはエラーチェックを可能にしますが、呼び出しが実行をブロックしないことを保証しません。
WriteTimeoutUDS整数UDS パケットがドロップされるまでのタイムアウト。

その他のオプションについては、Datadog の GoDoc を参照してください。

パラメーター種類説明
prefix文字列すべてのメトリクス、イベント、サービスチェックに適用するプレフィックス。
hostname文字列ターゲット StatsD サーバーのホスト名。
port整数ターゲット StatsD サーバーのポート。
constantTags文字列のリストすべてのメトリクス、イベント、サービスチェックに適用されるグローバルタグ。

詳細については、NonBlockingStatsDClient クラスのドキュメントを参照してください。

パラメーター種類デフォルト説明
host文字列localhostDogStatsD サーバーのホスト。これが設定されていない場合、Agent は DD_AGENT_HOST 環境変数を調べます。
port整数8125DogStatsD サーバーのポート。これが設定されていない場合、Agent は DD_DOGSTATSD_PORT 環境変数を調べます。
socket_path文字列nullDogStatsD Unix ドメインソケットへのパス(hostport をオーバーライドします)。Agent v6 以上でのみサポートされます。
global_tags文字列のリストnullすべてのメトリクス、イベント、サービスチェックに適用するタグ。@dd.internal.entity_id タグは、DD_ENTITY_ID 環境変数から global_tags に追加されます。
パラメーター種類デフォルト説明
StatsdServerName文字列localhostターゲット StatsD サーバーのホスト名。
StatsdPort整数8125ターゲット StatsD サーバーのポート。
Prefix文字列nullすべてのメトリクス、イベント、サービスチェックに適用するプレフィックス。
ConstantTags文字列のリストnullすべてのメトリクス、イベント、サービスチェックに適用されるグローバルタグ。

DogStatsD の理解

DogStatsD と StatsD はほぼ同じですが、DogStatsD には、使用可能なデータ型、イベント、サービスチェック、タグなど、Datadog に固有の高度な機能が含まれています。


DogStatsD が使用するデータグラム形式についてさらに理解を深めたい場合、または独自の Datadog ライブラリを開発したい場合は、データグラムとシェルの使用を参照してください。ここでは、メトリクスとイベントをコマンドラインから直接送信する方法についても説明しています。