Machinistを試してみた

2018年11月30日にオープンβとしてリリースされたIIJの「Machinist」。早速、Armadilloでも簡単に利用ができるのか検証してみました。

Machinist

「あらゆるメトリクスを Machinist へ集め、今まで知らなかった出来事を見つけましょう」
をコンセプトに、シンプルなAPIで且つ専用のクライアントアプリを持たないため、curlのようなHTTPクライアントで簡単にデータを集約・グラフ化ができるサービスです。 Machinistの使い方は、Machinist公式サイトの「Getting Started」にまとまっているので、誰でも簡単に利用する事ができるようです。

データの送信方法

Machinistへのデータ送信は、curlなどのHTTPクライアントを使用しJSON形式でPOSTすれば良いようです。
「Getting Started 2. データの送信」 にある以下のサンプルスクリプトです。
※<your_api_key>はご自身のAPIキーに置き換えてください。

api_key=<your_api_key>
 
curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ${api_key}" https://gw.machinist.iij.jp/endpoint -d @- << EOS
{
  "agent": "Home",
  "metrics": [
    {
      "name": "temperature",
      "namespace": "Environment Sensor",
      "data_point": {
        "value": 27.6
      }
    }
  ]
}
EOS

Armadilloの通信量を監視する

「Getting Started」自体は10分程度で確認できましたので、早速Armadilloで試用してみます。 今回は、「LANの通信量の見える化」をしてみたいと思います。 Armadilloのデフォルトのソフトウェアでは特に異常な通信は発生しないのですが、必要となるケースもあると思いますので。

Armadillo上のLAN上の通信量を計測するスクリプトを作成してみました。

  • 5分に一回通信量を計測 (前回との差分)
  • TX / RX をそれぞれ送信

今回作成したスクリプトは次のリンクからダウンロードすることもできます。

 post_test.sh

また、Machinistにはデータを監視し、状態異常を検出した場合に通知などのアクションを設定することができます。 今回は、

  • 5分間の通信量がTX / RX でそれぞれ 100KB を超えるとメールで通知

という設定もしてみました。

Armadillo上でセットアップ

まずはスクリプト内で使用しているコマンドを追加、スクリプトのダウンロードを実施しました。

[Armadillo]# apt-get update; apt-get install bc
[Armadillo]# wget https://users.atmark-techno.com/system/files/blogs/post_test.sh

Machinistのプロフィール画面 で確認できるAPIキーと、監視するネットワークデバイス名を指定してスクリプトを実行します。

[Armadillo]# ./post_test.sh <API KEY> <DEVICE>

データの送信に成功すると、

{"message":"Succeeded"}

という文字列がMachinistから返ってきます。

Machinistでデータ確認

Armadilloから送信したデータは、すぐにグラフ化されます。
※ 次の画像は数時間動作させた場合の結果です

監視設定

Machinistの「監視」タブから設定する事ができます。
「Getting Started」の監視設定の追加 を参考に、「5分間の通信量がTX / RX でそれぞれ 100KB を超えるとメールで通知」する設定を作成しました。 5分間のデータが100KBを超えた際に、「監視結果一覧」および「通知」タブに監視結果が表示され、メールでの通知も行われることを確認しました。

まとめ

データの見える化ツールとしてのMachinistは、他のサービスと比べても比較的短時間でセットアップができ、すぐに "集めて・見たい" というニーズにはまりそうです。 これまでにデータの見える化で躓いたことがある方は、Machinistでリトライしてみてもいいんじゃないでしょうか?

また、マシンラーニング(?)の「異常検出」機能が利用できるようになるとさらにIoTの敷居を下げてくれそうです。 正式サービスまでにどのくらい進化するのかが非常に楽しみです。

製品: 
Armadillo-X1
Armadillo-IoT G3L
Armadillo-IoT G3