ようへいの日々精進XP

よかろうもん

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

これは

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

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

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

f:id:inokara:20161218205714p:plain

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

以上

メモでした。