LoginSignup
0
1

More than 5 years have passed since last update.

Raspbianにsensu-clientを導入する

Posted at

はじめに

前回作った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設定、サーバ側の設定は割愛

参考URL

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1