モニタリングクラウドサービス Datadog からメトリクス(データ)を取得して、テキスト出力をしてみます。 値の一覧を見る画面は用意されていませんのでAPIを使用します。
シェルスクリプト(sh)での例文が出ているのでそちらを使用します。その他にPython,Rubyのリファレンスが記載されています。
Application/API Key の取得
メニューからAPIsをクリック→API発行画面でApplicationKeyを発行できます。
クエリストリングの取得
データ取得用のqueryが必要になるので、既存グラフから拝借します。 今回はDatadogAgentで取得できるnginxのrequest_per_sの値を取得します。
グラフのJSONの"q"部分をパラメータとして使用します。
"q": "max:nginx.net.request_per_s{example} by {name}",
データ値一覧の取得
Referenceページの QUERY TIME SERIES POINTS
を使用します。
- from/to はUNIXTIMEで指定
- queryにJSONから取得した"q"の内容(半角スペースを除外)を指定
#!/bin/sh api_key=取得したAPIキー app_key=取得したアプリケーションキー to_time=$(date +%s) # UNIXTIME指定 from_time=$(date -v -20M +%s) # UNIXTIME指定 curl -G \ "https://app.datadoghq.com/api/v1/query" \ -d "api_key=${api_key}" \ -d "application_key=${app_key}" \ -d "from=${from_time}" \ -d "to=${to_time}" \ -d "query=max:nginx.net.request_per_s{example}by{name}"
- 出力例
日時と値がタイムスタンプ(UNIXTIME)順に出力されます。
{"status": "ok", "res_type": "time_series", "series": [{"metric": "nginx.net.request_per_s", "attributes": {}, "display_name": "nginx.net.request_per_s", "unit": [null, null], "pointlist": [[1442528400000.0, 0.21052631735801697], [1442528410000.0, 0.21052631735801697], ・・・略・・・ [1442529580000.0, 23.615476608276367], [1442529590000.0, 22.850000381469727]], "end": 1442529599000, "interval": 10, "start": 1442528400000, "length": 120, "aggr": "max", "scope": "name:sververXX,example", "expression": "max:nginx.net.request_per_s{name:sververXX, example}"}], "from_date": 1442528400000, "group_by": ["name"], "to_date": 1442529600000, "query": "max:nginx.net.request_per_s{example}by{name}", "message": ""}
データ値一覧の取得(csv変換)
jqでcsv形式に変換し、時系列に並べます。上記の結果をoutput.jsonへ出力した前提です。
jq -r '.series[] | { scope: .scope ,pointlist: .pointlist[] } | [.scope ,.pointlist[0] ,.pointlist[1]] | @csv' output.json | sort -t ',' -k 1,3
うーん・・・美しくない・・・。
- 出力例
"name:sververXX,example",1442528400000,0.21052631735801697 "name:sververXX,example",1442528410000,0.21052631735801697 "name:sververXX,example",1442528420000,0.21052631735801697 "name:sververXX,example",1442528430000,0.1875 ・・・略・・・ "name:sververXX,example",1442529570000,24.380952835083008 "name:sververXX,example",1442529580000,23.615476608276367
きっと便利なツールなどが既に公開されていたりするのでしょうが、 環境を選ばないのでシェルスクリプトでの出力をとりあえず試してみました。