読者です 読者をやめる 読者になる 読者になる

#chiroito ’s blog

Java を中心とした趣味の技術について

nasne 監視システム -収集プログラム-

この記事はnasne監視システムを作る記事の第2弾です。

[nasne 監視システム概要]で紹介しましたが、nasne監視システムでは下図のように4つの要素で構成されています。今回はその中で収集プログラムを紹介します。収集プログラムは定期的に nasneから情報を収集し、その情報をOracle Stream Explorer (OSX) へ送信します。(図1赤点線)

▼図1:今回紹介する範囲

もしnasneから指定したURLなどへHDDの情報を送信できれば収集プログラムは不要ですが、現在そのような機能はありません(図2上)。現在のnasneは、接続されているHDDの情報を取得するインターフェース(I/F) を提供しています。今回紹介する収集プログラムはこのI/FからHDD情報を取得します(図2下)。前者のような機能は今後のアップデートで対応されることを期待しています。(2015/12/27現在)

 ▼図2:情報の取得方法

I/F にたいしてHDD情報をリクエストすると(図3①)、レスポンスとしてエラーコードに加えHDD情報が返ります(図3②)。収集プログラムは、レスポンスからHDD情報を取りだしてOSXに送ります(図3③)。

▼図3:収集プログラムの概要

nasne は内臓 HDD と外付け HDD の2つの HDD が接続できます。HDD情報I/Fへのリクエストは、取得したい HDD をパラメータとして指定します(図3①)。また、内蔵 HDD は常に接続されていますが、外付け HDD は接続されていないことがあります。そのため、HDD が接続されているかどうかで得られる情報が変わります(図3②)。
接続されているHDDの情報は、HDDのID、内蔵フラグ、接続ステータス、登録フラグ、空き容量、使用量、総容量、シリアルナンバー、フォーマット、名前、接続方式、製品IDが得られます。接続されていないHDDの情報はその中で、HDDのID、内蔵フラグ、マウントステータス、登録フラグのみ得られます。

nasne の I/F は HTTP で公開されています。そのため、ブラウザを使って I/F の URL にアクセスすれば情報が取得できます。パラメータとしてHDDを指定するには GET パラメータに id を指定します。id パラメータの値は内蔵HDDが 0 、外付けHDDが 1 です。
HDD情報の URL にアクセスすると、レスポンスとして JSON が返されます。このレスポンスは、エラーコードである errorcode 要素と HDD 情報である HDD 要素が含まれます。
収集プログラムはこのレスポンスの中で HDD 情報の要素 (図4オレンジ部分)を取り出して OSX へ送信します。

▼図4:HDD情報I/Fの詳細

レスポンスのエラーコードは 0 が正常なようです(残念ながら 0 以外の値を取得したことがありません・・・)。HDD情報の各要素は連想配列で返されます (図5オレンジ部分)。

▼図5:nasne から返される JSON

HDD情報 I/F の URL と GET パラメータを組み合わせると「http://<ホスト名もしくはIPアドレス>:64210/status/HDDInfoGet?id=」となります。nasneをお持ちの方は下記の例を参考にIPアドレスを書き換えてぜひブラウザからアクセスしてみてください。

http://192.168.0.12:64210/status/HDDInfoGet?id=0
▼nasneのIPが192.168.0.12の時にHDD情報を取得するURL例

nasne 監視システムでは収集プログラムが定期的に nasne へアクセスして JSON を取得し、HDD要素を取りだして OSX へ送信しています。次は、Oracle Stream Explorer が HDD 情報を受け取り Librato へ送信する処理を紹介します。

参考:
nasneからHDDの情報を取得する方法は[nasneの容量を取得する]でも記載しています。

目次ページはこちらです。