はじめに
前回作ったQEMU環境を使い、Raspbianにsensu-clientを導入してみました。
環境
bash
pi@raspberrypi:~$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 8 (jessie)"
NAME="Raspbian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
pi@raspberrypi:~$ uname -a
Linux raspberrypi 4.4.34+ #3 Thu Dec 1 14:44:23 IST 2016 armv6l GNU/Linux
pi@raspberrypi:~$ ruby -v
ruby 2.1.5p273 (2014-11-13) [arm-linux-gnueabihf]
pi@raspberrypi:~$ gem -v
1.8.24
pi@raspberrypi:~$ gem list
*** LOCAL GEMS ***
bundler (1.14.6)
rubygems インストール
rubygemsが入ってない人はインストールしましょう。
sudo apt install rubygems
sudo echo "install: --no-document" >> /root/.gemrc
sudo echo "update: --no-document" >> /root/.gemrc
sudo gem install bundler
コンパイル用ライブラリのインストール
sudo apt-get install git ruby-dev gcc make m4
sensu のインストール
sensu-build の取得
リポジトリのクローン
pi@raspberrypi:~$ sudo su -
root@raspberrypi:~# cd /usr/local/src
root@raspberrypi:~# git clone https://github.com/sensu/sensu-build.git
Cloning into 'sensu-build'...
remote: Counting objects: 1752, done.
remote: Total 1752 (delta 0), reused 0 (delta 0), pack-reused 1752
Receiving objects: 100% (1752/1752), 648.26 KiB | 861.00 KiB/s, done.
Resolving deltas: 100% (983/983), done.
Checking connectivity... done.
zlib バージョンの確認
zlibは頻繁にバージョンアップされており、sensu-buildで指定されているzlibのバージョンが古い場合、リンク切れを起こすことがあります。
そのため、リンク切れしていないかをまず確認します。
zlibのサイトでCurrent release:のバージョンを確認します。(私の場合は1.2.11でした)
次に sensu-build 内の recipes/zlib.rake を開き、t.version が上記のzlibバージョンと合っているかを確認します。
違う場合は変更しましょう。
zlibバージョンの変更
- t.version = '1.2.8'
+ t.version = '1.2.11'
コンパイルオプションの確認
rasberry pi の種類によって搭載されているCPUが異なるため、コンパイルオプションを変更しましょう。
sensu-build 内の recipes/ruby.rake を開き、t.version が上記のzlibバージョンと合っているかを確認します。
RasberryPi1の場合
- if arch == "armv6l" || arch == "armv7l"
- t.build_environment['CFLAGS'] = "-march=armv6 -mfloat-abi=hard -mfpu=vfp #{t.build_environment['CFLAGS']}"
- end
+ t.build_environment['CFLAGS'] = "-mcpu=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -mlittle-endian -munaligned-access #{t.build_environment['CFLAGS']}"
RasberryPi2/3の場合
- if arch == "armv6l" || arch == "armv7l"
- t.build_environment['CFLAGS'] = "-march=armv6 -mfloat-abi=hard -mfpu=vfp #{t.build_environment['CFLAGS']}"
- end
+ t.build_environment['CFLAGS'] = "-mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -mlittle-endian -munaligned-access #{t.build_environment['CFLAGS']}"
sensu-build のビルド
Sensuバージョンの指定
export SENSU_VERSION=0.26.5
ビルドバージョンの指定
export BUILD_NUMBER=2
依存ライブラリのインストール
pi@raspberrypi:~$ sudo su -
root@raspberrypi:~# ruby-dev gcc make libc-dev m4
#### 省略 ####
root@raspberrypi:~# cd /usr/local/src/sensu-build
root@raspberrypi:/usr/local/src/sensu-build# bundle install
Don't run Bundler as root. Bundler can ask for sudo if it is needed, and installing your bundle as root
will break this application for all non-root users on this machine.
Fetching gem metadata from https://rubygems.org/............
Fetching version metadata from https://rubygems.org/..
Fetching dependency metadata from https://rubygems.org/.
~~~~~~~ 省略 ~~~~~~~
Installing bunchr 0.1.6
Bundle complete! 4 Gemfile dependencies, 17 gems now installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.
ビルド実行
root@raspberrypi:/usr/local/src/sensu-build# rake clean
root@raspberrypi:/usr/local/src/sensu-build# time rake
mkdir -p /tmp/build/autoconf
I, [2017-03-19T12:50:37.571622 #10857] INFO -- : Downloading autoconf 2.63
I, [2017-03-19T12:50:37.582153 #10857] INFO -- : Executing: [curl -O http://ftp.gnu.org/gnu/autoconf/autoconf-2.63.tar.gz]
I, [2017-03-19T12:50:44.045611 #10857] INFO -- : Executing: [tar xfvz autoconf-2.63.tar.gz]
Tue Mar 19 12:50:46 +0900 2017
I, [2017-03-19T12:50:46.554764 #10857] INFO -- : autoconf 2.63 downloaded
I, [2017-03-19T12:50:46.559603 #10857] INFO -- : Bulding autoconf 2.63
I, [2017-03-19T12:50:46.564565 #10857] INFO -- : Executing: [./configure --prefix=/opt/sensu/embedded]
I, [2017-03-19T12:51:14.672558 #10857] INFO -- : Executing: [make]
Tue Mar 19 12:52:10 +0900 2017
I, [2017-03-19T12:52:10.213197 #10857] INFO -- : autoconf 2.63 built
I, [2017-03-19T12:52:10.218873 #10857] INFO -- : Installing autoconf 2.63
I, [2017-03-19T12:52:10.222208 #10857] INFO -- : Executing: [make install]
Tue Mar 19 12:52:36 +0900 2017
I, [2017-03-19T12:52:36.369760 #10857] INFO -- : autoconf 2.63 is installed
mkdir -p /tmp/build/zlib
I, [2017-03-19T12:52:36.427922 #10857] INFO -- : Downloading zlib 1.2.11
I, [2017-03-19T12:52:36.433085 #10857] INFO -- : Executing: [curl -O http://zlib.net/zlib-1.2.11.tar.gz]
I, [2017-03-19T12:52:41.150191 #10857] INFO -- : Executing: [tar xfvz zlib-1.2.11.tar.gz]
Tue Mar 19 12:52:43 +0900 2017
I, [2017-03-19T12:52:43.342507 #10857] INFO -- : zlib 1.2.11 downloaded
I, [2017-03-19T12:52:43.347148 #10857] INFO -- : Bulding zlib 1.2.11
I, [2017-03-19T12:52:43.351134 #10857] INFO -- : Executing: [mkdir /opt/sensu/embedded/lib]
I, [2017-03-19T12:52:44.571550 #10857] INFO -- : Executing: [./configure --prefix=/opt/sensu/embedded]
I, [2017-03-19T12:53:06.728397 #10857] INFO -- : Executing: [make]
Tue Mar 19 12:54:59 +0900 2017
I, [2017-03-19T12:54:59.930870 #10857] INFO -- : zlib 1.2.11 built
I, [2017-03-19T12:54:59.951891 #10857] INFO -- : Installing zlib 1.2.11
I, [2017-03-19T12:54:59.955405 #10857] INFO -- : Executing: [make install]
Tue Mar 19 12:55:03 +0900 2017
I, [2017-03-19T12:55:03.581406 #10857] INFO -- : zlib 1.2.11 is installed
mkdir -p /tmp/build/openssl
~~~~~~~ 省略 ~~~~~~~
I, [2017-03-19T17:22:55.371406 #10857] INFO -- : Not building RPM, platform [raspbian] does not support it.
I, [2017-03-19T17:22:55.377854 #10857] INFO -- : Not building DEB, platform [raspbian] does not support it.
real 272m35.521s
user 216m40.510s
sys 49m31.130s
ビルドは時間がかかります。
(私の環境では凡そ4.5時間でした)
sensu-client の環境構築
sudo useradd -s /bin/false -d /opt/sensu -c "Sensu Monitoring Framework" sensu
chown -R sensu:sensu /etc/sensu
chown -R sensu:sensu /opt/sensu
sudo chown -R sensu:sensu /var/log/sensu
sudo mkdir /var/run/sensu
sudo chown -R sensu:sensu /var/run/sensu
sudo ln -s /etc/os-release /etc/debian_version
sudo vi /etc/systemd/system/sensu-client.service
sudo vi /usr/lib/tmpfiles.d/sensu.conf
sudo chmod 644 /usr/lib/tmpfiles.d/sensu.conf
/etc/systemd/system/sensu-client.service
[Unit]
Description=sensu client
[Service]
User=sensu
Group=sensu
ExecStart=/etc/init.d/sensu-service client start
KillMode=process
Restart=on-failure
RestartSec=1min
[Install]
WantedBy=multi-user.target
/usr/lib/tmpfiles.d/sensu.conf
d /var/run/sensu 0755 sensu sensu
ログフォルダもtmpfsにする場合
/usr/lib/tmpfiles.d/sensu.conf
d /var/run/sensu 0755 sensu sensu
d /var/log/sensu 0755 sensu sensu
sensu-client サービス操作
起動
systemctl start sensu-client
自動起動の有効化
自動起動の有効化
systemctl enable sensu-client
sensu-client でvmstat
vmstatプラグインのインストール
sudo /opt/sensu/embedded/bin/gem install sensu-plugins-vmstats
※クライアントのrabbitmq設定、サーバ側の設定は割愛