Raspberry Pi を監視すべく、Sensu Client の導入をしてみたいと思います。

当然ながら、ARM版の Sensu はなく、自前でビルドする必要があります。 ビルドの方法は下記ページに記載しておりますが、最近だとDockerのコンテナでビルドするようです。

Raspberry Pi に Docker をインストール

$ sudo apt-get install docker.io

起動してみます。

$ sudo initctl start 
docker start/running, process 21208
$ sudo initctl status docker
docker stop/waiting

うーむ、すぐに停止するようです。

/var/log/upstart/docker.log を見る限り、下記にエラーがあるようです。

[f59cf284] -job init_networkdriver() = ERR (1)

詳しくはわからないのですが、LXC非対応だからでしょうか。 Dockerでビルドするのは諦めました。

自力でビルドしてみる

Ruby のインストール

まずは、Rubyが必要なので、rbenv で Ruby をインストール

rbenvを使用したRuby環境構築 (Raspbian) - Qiita を参考に2.3.0をインストール。 依存パッケージは、libssl-dev libreadline-dev でいけました。 Gem のインストールに bundle が必要なので、bundler のインストールも忘れずに。

$ gem install bundler

sensu/sensu-build: Omnibus build tooling for Sensu. のページを参考にしてビルドをしてみました。

$ cd /tmp
$ wget https://github.com/sensu/sensu-build/archive/0.22.2-1.zip
$ unzip 0.22.2-1.zip
$ export SENSU_VERSION=0.22.2
$ export BUILD_NUMBER=1
$ bundle install
Fetching gem metadata from https://rubygems.org/..........
Fetching version metadata from https://rubygems.org/..
Using rake 10.4.2
Installing json 1.6.6 with native extensions

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /home/mizu/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/json-1.6.6/ext/json/ext/generator
/home/mizu/.rbenv/versions/2.3.0/bin/ruby -r ./siteconf20160319-24369-1ajseh4.rb extconf.rb
creating Makefile

current directory: /home/mizu/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/json-1.6.6/ext/json/ext/generator
make "DESTDIR=" clean

current directory: /home/mizu/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/json-1.6.6/ext/json/ext/generator
make "DESTDIR="
compiling generator.c
In file included from generator.c:1:0:
../fbuffer/fbuffer.h: In function ‘fbuffer_to_s’:
../fbuffer/fbuffer.h:151:47: error: macro "rb_str_new" requires 2 arguments, but only 1 given
     VALUE result = rb_str_new(FBUFFER_PAIR(fb));
                                               ^
../fbuffer/fbuffer.h:151:20: warning: initialization makes integer from pointer without a cast
     VALUE result = rb_str_new(FBUFFER_PAIR(fb));
                    ^
In file included from generator.c:2:0:
generator.c: In function ‘cState_aref’:
generator.h:96:27: warning: variable ‘state’ set but not used [-Wunused-but-set-variable]
     JSON_Generator_State *state;              \
                           ^
generator.c:632:5: note: in expansion of macro ‘GET_STATE’
     GET_STATE(self);
     ^
generator.c: In function ‘isArrayOrObject’:
generator.c:863:10: warning: unused variable ‘c’ [-Wunused-variable]
     char c, *p = RSTRING_PTR(string), *q = p + string_len - 1;
          ^
Makefile:238: recipe for target 'generator.o' failed
make: *** [generator.o] Error 1

make failed, exit code 2

Gem files will remain installed in /home/mizu/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/json-1.6.6 for inspection.
Results logged to /home/mizu/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/extensions/armv7l-linux/2.3.0-static/json-1.6.6/gem_make.out
Using backports 2.6.2
Using clamp 0.3.1
Using ipaddress 0.8.0
Using mixlib-cli 1.5.0
Using mixlib-config 2.2.1
Using mixlib-log 1.6.0
Using mixlib-shellout 1.4.0
Using systemu 2.2.0
Using yajl-ruby 1.2.1
Using bundler 1.11.2
An error occurred while installing json (1.6.6), and Bundler cannot continue.
Make sure that `gem install json -v '1.6.6'` succeeds before bundling.

json のインストールでこけているみたい。
同じような悩みをもっている人がいるみたいだけど、いまいち解決方法が見つからない。。。
助けて。。。