Etizolam

For our good night sleep.

Datadogに任意のメトリックスを送信する (その1)

Datadogに任意のメトリックスを継続的に送信するには、DogStatsDを介してDatadogのサイトに送信するのが最も簡単な方法です。

DogStatsDは、NYC発祥の物販サイトEtsyがFOSS化しているStatsDのプロトコルを実装したメトリクス集積サーバ(a metrics aggregation server)です。DogStatsDは、DD-agentに同胞されているので、既にDD-agentが動作していればすぐに使うことができます。(但し、Intel Galileoのようにデーモンを手動で起動するケースは、dogstatsdを起動している必要があります。)

StatsD及びStatsDプロトコルは、DevOpsを実践している欧米企業で各種のメトリックスを収集するために広く使われているソフトウェアとプロトコルです。

DogStatsD

DogStatsDは、アプリケーションからUDPで受け取ったメトリックスを一旦ホスト内で蓄積します。その後一定時間ことに、DatadogのサイトにHTTPSで送信します。Datagogのサイトでは、DogStatsDから受けとったメトリックスも名前スペースとタグ付によって管理され、他のメトリックスと同様にグラフ化することができるようになっています。

DogStatsDとの通信がなぜUDPかというという事に関しては、「この間の通信の障害や遅延によってアプリケーションの動作をストールさせないため」と書いてありました。

DogStatsDのラッパーライブラリーについて

DogStatsDへのメトリックス送信手続きを簡素化するために、一般的な言語向けにラッパーライブラリーが提供されています。これらのラッパーライブラリーを活用すると数行のコード追加で任意メトリックスをDogStatsDに転送することができます。

以下に代表的なライブラリーを紹介しておきます。

Datadogによって提供されているライブラリー

Python: dogstatsd-python – Python DogStatsD client.

Ruby: dogstatsd-ruby – Ruby DogStatsD client.

PHP: php-datadogstatsd – PHP DogStatsD client.

C#: dogstatsd-csharp-client – C# DogStatsD client.

コミュニティーによって提供されいるライブラリー

Java: java-dogstatsd-client – DogStatsD Client for Java, Indeed提供.

Node.js: node-dogstatsd – Node.js DogStatsD client, Young Han Lee提供.

Perl: dogstatsd-perl – Perl DogStatsD client, Stefan Goethals提供.

Ruby: metricks-dogstatsd – backend for the popular Metriks gem, Mavenlink提供.

Go: go-dogstatsd – dogstatsd client written in Go, Ooyala提供.