Telegrafを使用してDogStatsDから移行する方法

Telegrafを使用してDogStatsDから移行する方法

Table of Contents

Great systems are not just built. They are monitored.

MetricFire runs Graphite and Grafana as a fully managed service for growing engineering teams, taking care of storage, scaling, and version updates so your team doesn't have to. Plans start at $19/month, billed per metric namespace rather than per host, and include engineer-staffed support. Integrations work natively with Heroku, AWS, Azure, and GCP, and data is stored with 3× redundancy in SOC2- and ISO:27001-certified data centres.

はじめに 

Datadogは人気の監視プラットフォームであり、その主要コンポーネントの一つがDogStatsDです。これはオリジナルのオープンソースStatsDプロトコルをカスタマイズした拡張版です。DogStatsDはタグ付け、ヒストグラム、分布といった強力な機能を追加しますが、ベンダーロックインも引き起こします。これはDogStatsDメトリクスが特定のワイヤフォーマットに従うためで、他の多くの監視プラットフォームはこれをネイティブでサポートしていません。アプリケーションがDogStatsDを出力すると、テレメトリパイプラインはDatadogに強く依存するようになり、監視プロバイダーの切り替えが困難になります。

幸いなことに、Telegrafのような現代的なツールを使えば、既存のDogStatsD計測機能を維持したまま、任意のバックエンドにデータを送信できます。これにより、アプリケーションを書き換えることなく監視コストを制御可能です。Telegrafを使えば、DogStatsDメトリクスをほぼあらゆるストレージバックエンドと互換性のある形式に簡単に変換できます。

DogStatsDを別のモニタリングプロバイダーへ移行する

多くのDevOpsチームは、オープンソースのモニタリングソリューションを採用したり、特定ベンダーのシステムへの依存を減らしたいと考えています。しかしその際によく直面する課題が、DogStatsDがDatadog以外のモニタリングシステムと直接互換性がないという点です。これは、DogStatsDが標準のStatsDやGraphiteにきれいに変換できない独自機能を追加しているためです。DogStatsDのワークロードを別のモニタリングプラットフォーム(例:MetricFireのHosted Graphite)へスムーズに移行するには、次のことができるコンポーネントが必要です。

  • DogStatsDのパケットを受信する

  • Datadogのタグやメトリクスタイプを解析する

  • それらをオープンフォーマットへ変換する

  • 標準のStatsD、Graphite、またはPrometheusのメトリクスとして出力する

これを実現するのが、DogStatsD拡張を有効にしたTelegrafの inputs.statsd プラグインです。このプラグインは互換レイヤーとして機能し、Datadog独自のStatsDフォーマットを受け取り、他のバックエンドでも取り込めるベンダー非依存のメトリクスへ変換します。その結果、既存の計測(instrumentation)を維持したまま、タグ情報も保持しつつ、Datadogの独自メトリクスパイプラインにロックインされることを回避できます。

Hosted Graphiteのアカウントをまだお持ちでない場合は、こちらをクリックして無料トライアルを開始し、APIキーを取得してください。

TelegrafのStatsD Inputプラグインを使ってDogStatsDを変換する

Telegrafコレクターのセットアップ

まだサーバー上でTelegrafを実行していない場合は、便利なHG-CLIツールをインストールすることで、Telegrafのインストールと設定を素早く行えます。

curl -s "https://www.hostedgraphite.com/scripts/hg-cli/installer/" | sudo sh

:Hosted GraphiteのAPIキーを入力し、どのメトリクスセットを取得するかを選択するためのプロンプトに従う必要があります。

Telegrafをインストールしたら、設定ファイル /etc/telegraf/telegraf.conf を開き、次のセクションを追加します。

[[inputs.statsd]]
  protocol = "udp"
  service_address = ":8125"

  # Enable DogStatsD parsing
  datadog_extensions = true
datadog_distributions = true

設定ファイルを保存し、Telegrafサービスを再起動するだけで、DogStatsDメトリクスがHGアカウントへ転送されます。または、手動で実行して出力を確認し、構文エラーや権限エラーがないかをチェックすることもできます。

telegraf --config /etc/telegraf/telegraf.conf

TelegrafがDatadogタグをどのように処理するか

Datadogのタグ(例:#env:prod,source:api)は、Telegraf内部では次のようなタグに変換されます:env=prod, source=api

Hosted GraphiteはGraphiteプロトコル上に構築されていますが、Graphite自体はDogStatsD形式のタグ付けをサポートしていません。そのためTelegrafは、これらのタグをGraphiteのメトリクスパス内にエンコードします。例えば、以下のメトリクス:

test.dog-statsd-counter:1|c|#env:sandbox,source:test

は、Hosted Graphiteでは次のように表示されます。

telegraf.<host>.sandbox.counter.test.test_dog-statsd-counter

この仕組みにより、Datadogのメトリクスフォーマットとの互換性を保ちながら、Graphite上でもメトリクスを可視化できます。

Hosted GraphiteにおけるDogStatsDネイティブサポートの今後の計画

Hosted Graphiteでは、DogStatsDのネイティブ取り込み機能を追加する計画があります。これにより、Telegrafや他のミドルウェアを使用せずに、Datadog形式のメトリクスを直接送信できるようになります。この統合では、DogStatsDのタグやメトリクスタイプをバックグラウンドで自動的にGraphite互換形式へ変換します。その目的は、Datadogからの移行をより簡単にし、ベンダーロックインを排除し、よりコスト効率の高いモニタリングスタックへ移行するための低オーバーヘッドな手段を提供することです。

メトリクス送信の例

以下は、ローカルでテストできる実際のDogStatsDコマンドです(Telegrafが localhost:8125 で待ち受けている状態)。

1. Counter(カウンター)

echo "test.dog-statsd-counter:1|c|#env:sandbox,source:test" | nc -w1 -u localhost 8125

Graphiteでは次のメトリクスとして表示されます:
telegraf.<host>.sandbox.counter.test.test_dog-statsd-counter

2. Gauge(ゲージ)

echo "test.dog-statsd-gauge:42|g|#env:sandbox,source:test" | nc -w1 -u localhost 8125

メトリクスは次のように表示されます:
telegraf.<host>.sandbox.gauge.test.test_dog-statsd-gauge

3. Timer(タイマー)

echo "test.dog-statsd-timer:200|ms|#env:sandbox,source:test" | nc -w1 -u localhost 8125

メトリクスは次のように表示されます:
telegraf.<host>.sandbox.timing.test.test_dog-statsd-timer.mean
telegraf.<host>.sandbox.timing.test.test_dog-statsd-timer.upper
...

4. Histogram(ヒストグラム)

echo "test.dog-statsd-histogram:512|h|#env:sandbox,source:test" | nc -w1 -u localhost 8125

メトリクスは次のように表示されます:
telegraf.<host>.sandbox.histogram.test.test_dog-statsd-histogram.sum
telegraf.<host>.sandbox.histogram.test.test_dog-statsd-histogram.mean
...

5. Distribution(分布:主にレイテンシ集計で使用)

echo "test.dog-statsd-distribution:7|d|#env:sandbox,source:test" | nc -w1 -u localhost 8125

メトリクスは次のように表示されます:
telegraf.<host>.sandbox.distribution.test.test_dog-statsd-distribution

6. Set(ユニーク値)

echo "test.dog-statsd-set:1234|s|#env:sandbox,source:test" | nc -w1 -u localhost 8125

メトリクスは次のように表示されます:
telegraf.<host>.sandbox.set.test.test_dog-statsd-set

7. Valueless Tags(値を持たないタグ)

DogStatsDは値を持たないタグをサポートしていますが、Graphiteはメトリクスを階層型のパスとしてのみ保存する仕組みのため、値を持たないタグを個別のメタデータとして保持することができません。そのため、値を持たないタグは削除されるか、メトリクス名にフラット化される形になります。結果として、現在のHosted Graphiteのバックエンドでは、値を持たないタグを取り込むことはできません。


Telegrafを使用してDogStatsDから移行する方法 - 1

まとめ

DogStatsDは強力ですが、その独自設計は一種のベンダーロックインとして機能します。いったんシステムがDatadog固有のメトリクスやタグを出力するようになると、別のプロバイダーへ切り替えることがより困難でコストも高くなるためです。多くの企業は、環境が拡大するにつれてDatadogのコストが急速に増加することに気づきます。そしてDogStatsDのワイヤーフォーマットによって、他のサービスへ移行することが非常に大変に感じられるようになります。しかし、Telegrafのようなツールはこの障壁を取り除くのに役立ちます。DogStatsDメトリクスを受信し、互換性のあるフォーマットへ変換することで、Telegrafは既存の計測(instrumentation)をすべて維持したまま、メトリクスの保存先を自由に選べるようにします。

つまり、組織は次のことが可能になります。

  • DatadogからHosted Graphiteのようなよりコスト効率の高いプラットフォームへ移行することで、モニタリングコストを削減できる
  • GraphiteやStatsDのようなオープンプロトコルを利用することで、ベンダーロックインを回避できる

  • アプリケーションはこれまで通りDogStatsDを送信し続けるだけでよいため、コードを書き直すことなく移行できる
  • さまざまなバックエンドと連携できるオープンソースツールを利用できる

要するに、Telegrafはテレメトリパイプラインの主導権を取り戻すための実用的な方法を提供します。Datadogの独自フォーマットに縛られることなく、予算に合ったモニタリングプロバイダーを選択できるようになるのです。

You might also like other posts...
metricfire Apr 24, 2026 · 3 min read

TelegrafとMetricFireでGitHubを監視しコード品質を維持する方法を解説

本記事では、TelegrafとMetricFireを活用してGitHubのコード品質を継続的に監視・維持する方法を解説。メトリクス収集、可視化、アラート設定まで、開発チームの品質管理を効率化するポイントをご紹介します。 Continue Reading

metricfire Apr 22, 2026 · 4 min read

TelegrafでSNMPデバイスを監視する方法【ステップバイステップガイド】

本記事では、Telegrafエージェントを使用してSNMP(MIB)のパフォーマンス統計情報を収集し、それをデータソースに転送する方法について詳しく解説します。 Continue Reading

metricfire Apr 16, 2026 · 5 min read

Telegrafを使ったKubernetes監視の最適な方法【チュートリアル】

本記事では、TelegrafをDaemonSetとして導入し、KubernetesクラスターのノードやPodのメトリクスを効率的に収集・可視化する方法を解説。ダッシュボード作成やアラート設定まで、実践的な手順をご紹介します。 Continue Reading

header image

We strive for 99.95% uptime

Because our system is your system.

14-day trial 14-day trial
No Credit Card Required No Credit Card Required