share facebook facebook2 twitter menu hatena pocket slack

2017.01.13 FRI

ショロカレ 18 日目 | 初老と Datadog (1) 〜 シェルスクリプトから Dogstatsd を介して Datadog にメトリクスを送信する的なやつ 〜

川原 洋平

WRITTEN BY 川原 洋平

これは

初老丸アドベントカレンダー 18 日目の記事です。

初老丸 Advent Calendar 2016 - Qiita
集え、初老丸達よ。初老丸達による世界に向けた技術的(又はそれに関連する)な物語を綴るカレンダーです。我こそ初老丸という方、初老丸予備軍の方も奮ってご参加下さい。

qiita.com

ということで、自分の記事はずーっと小ネタですいません。

初老と Datadog (1) 〜 シェルスクリプトから Dogstatsd を介して Datadog にメトリクスを送信する的なやつ 〜

参考

http://docs.datadoghq.com/ja/guides/dogstatsd/

nc を使ってメトリクス送信するぞ(とある処理の経過時間を送る例)

ゲージ(Gauges)で送る

_elapsed_time=$(sleep $(((RANDOM % 100) + 1)))
echo "oreno.metrics.elapsed_time.gauges:${_elapsed_time}|g" | nc -w 1 -u localhost 8125

カウンター(Counter)で送る

_elapsed_time=$(sleep $(((RANDOM % 100) + 1)))
echo "oreno.metrics.elapsed_time.counters:${_elapsed_time}|c" | nc -w 1 -u localhost 8125

ヒストグラム(Histogram)で送る

# サンプルレートは 0 ~ 1 の小数点で指定する
_elapsed_time=$(sleep $(((RANDOM % 100) + 1)))
_sample_rate=0.5
echo "oreno.metrics.elapsed_time.histograms:${_elapsed_time}|h|@${_sample_rate}" | nc -w 1 -u localhost 8125

その他

  • Sets (セット)
  • Timers (タイマー)

上記のようなメトリクスの種類がありますが、今回は触れません。

送信したぞ

Datadog Agent が動いているホスト上で以下のようなスクリプトを動かしますよ。

while :
do
  _elapsed_time=$(((RANDOM % 100) + 1))
  echo ${_elapsed_time}
  echo "oreno.metrics.elapsed_time.gauges:${_elapsed_time}|g" | nc -w 1 -u localhost 8125
  _elapsed_time=$(((RANDOM % 100) + 1))
  echo ${_elapsed_time}
  echo "oreno.metrics.elapsed_time.counters:${_elapsed_time}|c" | nc -w 1 -u localhost 8125
  _elapsed_time=$(((RANDOM % 100) + 1))
  _sample_rate=0.5
  echo ${_elapsed_time}
  echo "oreno.metrics.elapsed_time.histograms:${_elapsed_time}|h|@${_sample_rate}" | nc -w 1 -u localhost 8125

  sleep 1
done

以下のようにメトリクスが作成されていますよ。

20161218205714

ヒストグラムについては、平均値、最小値、最大値、中央値及び 95 % のメトリクスがプロットされています。

以上

メモでした。

元記事はこちら

ショロカレ 18 日目 | 初老と Datadog (1) 〜 シェルスクリプトから Dogstatsd を介して Datadog にメトリクスを送信する的なやつ 〜