IIJmioの残量をCactiでグラフ化する

graph_6_2

IIJmioの残り容量を都度サイトに見に行かなくてはいけないのが非常に不便、かつ、残りどれだけ使用できるかがわかりづらかったので、視覚化する。
特に今回はすでにあったCactiにで取得し、先月くりこし分、今月分、合計をグラフ化。

IIJmioのAPIの使用方法はこちらのサイトを参照。

xykのブログ IIJmioのクーポンスイッチを試す
http://xyk.hatenablog.com/entry/2014/01/15/191856

OSAKANA TAROのメモ帳 IIJmioクーポンスイッチAPIを使って使用量グラフ作成
http://blog.osakana.net/archives/4921

取得するデータは3つなので、まずはこれらをCactiで認識できるフォーマットにスクリプトで取得する。スクリプトは適当に、./htdocs/cacti/scripts/などに保存。ここでAPIで取得した

  • デベロッパー ID
  • アクセストークン

を控えて、今回は直接スクリプトに書き込む。トークンは90日で期限が切れるため、本当は自動的に更新するように実装するのがベストだがさすがに手間なので見送り。Thresholdプラグインなどでデータ取得が不正になったら(=期限切れで取得できなくなったら)メールで通知する等して、3ヶ月に1回書き換えてください。

取得するフォーマットがJSONなので、jqを使ってクーポンの残容量のみデータを抜き出す。
Macで取得してるので、Cellarでjqを追加インストールしてます。

#!/bin/sh
js=$(curl -s -f -X GET https://api.iijmio.jp/mobile/d/v1/coupon/ -H ‘X-IIJmio-Developer: <デベロッパーID>’ -H ‘X-IIJmio-Authorization: <アクセストークン>’ | /usr/local/Cellar/jq/1.4/bin/jq -r “.”)

#vol0=This month (今月分)
vol0=$(echo ${js} | /usr/local/Cellar/jq/1.4/bin/jq -r ‘.couponInfo[].coupon[0].volume’ | tr -d ‘\n’)

#vol1=Last month (くりこし分)
vol1=$(echo ${js} | /usr/local/Cellar/jq/1.4/bin/jq -r ‘.couponInfo[].coupon[1].volume’ | tr -d ‘\n’)

#vol2=Last month + This month (合計)
vol2=`expr ${vol0} + ${vol1}`

echo tm:${vol0} lm:${vol1} sum:${vol2}

スクリプトを保存したら、CactiのData Input Methodこのスクリプトから値を取得するようにする。ここではCactiのインストールディレクトリ配下のscriptsフォルダの下に”iijmio.sh”という名前で保存。
Output Fieldsには、取得した3種類を定義する。

 

スクリーンショット 2015-11-04 23.09.26

つぎにData Templateをつくる。

  • Data Templates Name・・・IIJmio API など適当に。
  • Data Source Name・・・これも適当に。Coupon Dataなど。
  • Data Input Method ・・・先ほど作成したInput Methodを指定
  • Associated RRA’s・・・1分単位はそもそも取得できないので、5分以上で好きなものを選択
  • Step・・・とりあえず300で。
  • Data Source Active・・・チェックしましょう

さらにData Soure Itemを先月、今月、合計と3種類つくる

  • Internal Data Source Name・・・Lastmonth, Thismonthなど
  • Minimum / Maximum Value・・・0(指定しない)
  • Data Source Type・・・グラフ化するのでGAUGEを選択
  • Heartbeat・・・5分単位ということで600
  • Output Field・・・Input Methodと合わせて、今月なら今月のデータを。

あとはGraph Templateで冒頭のような重ねグラフをつくり、下に先月、上に今月の残量が表示されるようにすれば完成。

コメントを残す

メールアドレスが公開されることはありません。