4. 複数データの送信

続けて、同じ種類のセンサーが複数存在し、同一の送信元(エージェント)から送信されるケースを想定します。

1つのエージェントから同種のセンサの値を複数送信するため、
今回はタグを用いて個々のセンサーの値を識別します。

タグとは、同じ種類のデータをセンサの個体単位で識別する時等、
より詳細なメトリックの分類に用いるための属性です。

タグは、"location": "1F" のように文字列のキーと値のペアで構成されており、
メトリック1つにつき最大8ペアまで付与できます。
詳細は機能仕様の送信データについてを御覧ください。

ここでは curl コマンドを使ったシェルスクリプトの例を紹介します。
以下のコードを dummy-agent という名前をつけて保存し chmod +x dummy-agent
実行することで、ダミーエージェントとして実行できるようになります。

#!/bin/bash

function create_metric() {
  cat <<EOS
  {
    "name":      "temperature",
    "namespace": "Environment Sensor",
    "tags": {
      "location": "$1"
    },
    "data_point": {
      "value": $(( $(od -v -An -N1 -tu1 /dev/urandom) % 7 + 22))
    }
  }
EOS
}

API_KEY=$1
test -z "$API_KEY" && echo "API key was not set" 1>&2 && exit 1

AGENT=$2
test -z "$AGENT" && echo "Agent was not set" 1>&2 && exit 1

while :
do
  json=$(cat <<EOS
    {
      "agent": "${AGENT}",
      "metrics": [
        $(create_metric 1F),
        $(create_metric 2F),
        $(create_metric 3F),
        $(create_metric 4F)
      ]
    }
EOS
  )

  curl -x "" -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ${API_KEY}" -d "${json}" https://gw.machinist.iij.jp/endpoint
  echo ""

  sleep 60
done

上記スクリプトを以下のようにターミナルから実行します。
${api_key}${agent} は API キー、エージェントの名前にそれぞれ置き換えてください。
また、ダミーエージェントのスクリプトは Ctrl + c で停止することができます。

./dummy-agent ${api_key} ${agent}

実行中のダミーエージェントはそのままにし、Machinist の メトリック 画面を開きます。
新たにメトリックが増え、データが収集されていることが確認できます。

送信された複数のメトリック