これは
初老丸アドベントカレンダー 18 日目の記事です。
ということで、自分の記事はずーっと小ネタですいません。
初老と 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
以下のようにメトリクスが作成されていますよ。
ヒストグラムについては、平均値、最小値、最大値、中央値及び 95 % のメトリクスがプロットされています。
以上
メモでした。