インターネットイニシアティブ(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利用申請を行うと確認用メールが届きます。
3日ですか。。
待ってる間に次に進むことにしました。
- libarms/armsdのビルド
この文章は気になりますが、なぜ簡単にいかないのかを検証するために、 rebootスクリプトは作成せずに進めてみます。
- SACMにArmadilloの設定を投入する
検証用アカウント一式に記載の「Login ID」及び「Password」を利用してSACMにログインし、 ブログの通りに作業。
- SACMに接続してみる
/etc/config/armsd.conf.secretsにファイルを作成して、flatfsdで保存。再起動。
上記のように時間がかかるらしいので少し待っていましたが、つながりません。。
起動ログを見ると、
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もリロードすると接続中になりました。
- 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は使いやすいかもしれません。