ブログ

SACMでArmadillo-IoTをリモート管理

at_nakai
2015年2月13日 16時55分

インターネットイニシアティブ(IIJ)のSEILブログにArmadillo-IoTを
SACMに対応させる方法について記載されているので、試してみました。
SACMについては、リモートから色々とできそうなので興味があります。

■ ArmadilloとSACM - SEILブログ
http://www.seil.jp/blog/armadillo_sacm

■ SEIL公式サイト
http://www.seil.jp/

まずはSEILブログに従って作業

  • SACMトライアルプランを申し込む

libarms動作検証用SACM利用申請を行うと確認用メールが届きます。

お客様のメールアドレスの確認が完了いたしました。

ログイン用URLおよびログインIDは 3営業日以内に改めてご連絡させて
いただきますので、今しばらくお待ちください。

3日ですか。。
待ってる間に次に進むことにしました。

私の場合は、約30分くらいで手続き完了の連絡が届きました。
  • libarms/armsdのビルド
この後の開発・デバッグを簡単にするために、armsd から再起動できないようにしておきましょう。

この文章は気になりますが、なぜ簡単にいかないのかを検証するために、 rebootスクリプトは作成せずに進めてみます。

  • SACMにArmadilloの設定を投入する

検証用アカウント一式に記載の「Login ID」及び「Password」を利用してSACMにログインし、 ブログの通りに作業。

  • SACMに接続してみる

/etc/config/armsd.conf.secretsにファイルを作成して、flatfsdで保存。再起動。

ファームウェアの書き込みが終わったら準備完了です。さあ再起動してみましょう。
無事SACMと接続が完了すると、LED3が点滅から点灯に、SACMの表示が
「接続中」「操作・コンフィグ有効」に変わります。
ただし、「接続中」への遷移は数分かかります。

上記のように時間がかかるらしいので少し待っていましたが、つながりません。。
起動ログを見ると、

Starting armsd: /etc/armsd/gen-conf.sh: /etc/config/armsd.conf.secrets: line 2: syntax error: unterminated quoted string
armsd: no config file /etc/armsd/armsd.conf: No such file or directory

となっているのでarmsd.conf.secretsを修正。

アカウント情報の「LS-SA KEY」には、ダブルクォーテーションが含まれていたので、シングルクォートでくくることにしました。
そしてarmsdを再起動。(armsdが起動していなかったので、"start"を指定。起動している場合は、"restart"です。)

[root@armadillo-iotg (ttymxc1) ~]# /etc/init.d/armsd start

LED3が点灯にかわりました!SACMもリロードすると接続中になりました。

特にrebootスクリプトは影響しなかったように思います
  • SACMでできること

なるほど。SACMに接続することで
・死活監視
・CPU使用率の遠隔監視
などが行えるようです。

試しにオペレーションでPINGを行ってみました。
正常に応答を期待できるアドレスと期待できないアドレスの2種です。

図. 正常応答した場合の結果

図. 正常応答できなかった場合の結果

監視タブで監視グループを作成後、監視対象に今回登録したArmadilloを登録し、
しばらく待って確認したグラフです。

図. グラフ

  • カスタマイズ

ユーザーランドイメージを構築するのは手間だったので、 Armadillo上のファイルを直接編集してnetstatを実行してみました。

[root@armadillo-iotg (ttymxc1) ~]# vi /etc/armsd/scripts/status
[root@armadillo-iotg (ttymxc1) ~]# vi /etc/armsd/gen-conf.sh
[root@armadillo-iotg (ttymxc1) ~]# /etc/init.d/armsd restart

図. netstat実行結果

fluentdをSACMで管理できるようにしてみる

コンフィグのmodule1は、lighttpdとなっているようなので、 これをfluentdに変更してみます。

まずは関係ありそうなファイルを調べます。

[root@armadillo-iotg (ttymxc1) ~]# grep -rn light /etc/armsd/
/etc/armsd/scripts/reconfig:16: cp "$config" /etc/lighttpd.conf
/etc/armsd/scripts/reconfig:17: /usr/bin/killall lighttpd
/etc/armsd/scripts/reconfig:19: /usr/sbin/lighttpd -f /etc/lighttpd.conf
/etc/armsd/scripts/post-pull:52:# module 1: lighttpd
/etc/armsd/scripts/post-pull:53:/usr/sbin/lighttpd -f /etc/lighttpd.conf
/etc/armsd/scripts/start:15:    cp "$config" /etc/lighttpd.conf

各ファイルを修正します。

/etc/armsd/scripts/reconfig
[root@armadillo-iotg (ttymxc1) /etc/armsd/scripts]# diff -urN reconfig.orig reconfig
--- reconfig.orig
+++ reconfig
@@ -13,10 +13,10 @@
        exit 1
        ;;
 1)
-       cp "$config" /etc/lighttpd.conf
-       /usr/bin/killall lighttpd
+       cp "$config" /etc/fluent.conf
+       start-stop-daemon -K -p /var/run/fluentd.pid
        sleep 1
-       /usr/sbin/lighttpd -f /etc/lighttpd.conf
+       /usr/bin/fluentd -d /var/run/fluentd.pid -c /etc/fluent.conf
        ;;
 2)
        mkdir -p ~root/.ssh
/etc/armsd/scripts/post-pull
[root@armadillo-iotg (ttymxc1) /etc/armsd/scripts]# diff -urN post-pull.orig post-pull
--- post-pull.orig
+++ post-pull
@@ -50,7 +50,7 @@
 apply_line_conf
 
 # module 1: lighttpd
-/usr/sbin/lighttpd -f /etc/lighttpd.conf
+/usr/bin/fluentd -d /var/run/fluentd.pid -c /etc/fluent.conf
 
 # clear status
 rm -f /etc/armsd/addr_changed
/etc/armsd/scripts/start
[root@armadillo-iotg (ttymxc1) /etc/armsd/scripts]# diff -urN start.orig start
--- start.orig
+++ start
@@ -12,7 +12,7 @@
        cp "$config" /etc/armsd/line.conf
        ;;
 1)
-       cp "$config" /etc/lighttpd.conf
+       cp "$config" /etc/fluent.conf
        ;;
 2)
        mkdir -p ~root/.ssh

一応、armsdを再起動。

[root@armadillo-iotg (ttymxc1) ~]# /etc/init.d/armsd restart
Stopping armsd:                                                 done
Starting armsd:                                                 done

armsdがfluentdを起動させていることを確認できました。

[root@armadillo-iotg (ttymxc1) /etc/armsd/scripts]# ps | grep fluentd
 2010 root       0:00 ruby /usr/bin/fluentd -d /var/run/fluentd.pid -c /etc/fluent.conf
 2013 root       0:05 ruby /usr/bin/fluentd -d /var/run/fluentd.pid -c /etc/fluent.conf

SACMでコンフィグを変更して即時反映させてみました。
reconfigスクリプトが実行されるはずなので、fluentdは再起動するはずです。

[root@armadillo-iotg (ttymxc1) /etc/armsd/scripts]# ps | grep fluentd
 2033 root       0:00 ruby /usr/bin/fluentd -d /var/run/fluentd.pid -c /etc/fluent.conf
 2036 root       0:05 ruby /usr/bin/fluentd -d /var/run/fluentd.pid -c /etc/fluent.conf

/etc/fluent.confも正常に更新されていました。

終わりに

登録済みのサービスアダプタに対して一括オペレーションも可能なので、
Armadilloの動作イメージをリモートで簡単に更新することもできそうです。

IoT/M2Mの分野では、リモート制御することが要求される場合が多いので、
簡単にそれを実現することができるSACMは使いやすいかもしれません。