Raspberry Pi 3 Model B & Zabbix 4.2 で監視してみよう!(構築編)

シェアする

  • このエントリーをはてなブックマークに追加

[2019/05/27 追記]MicroSDカードが壊れてしまいました。原因は恐らくデータベースサーバをZabbixと同じ場所に構築してしまったことだと思います。データベースサーバだけ別のマシンに新しく構築して運用することにします。

こんにちは!
今回はラズパイを使って監視サーバを構築していきます!!

ちなみにラズパイというのは、ラズベリーパイ(Raspberry Pi)と呼ばれるもので、小さなコンピュータです。

小型で省エネ、コスパが良いため、簡易サーバや組み込み機器など様々な用途で用いられています。もちろん通常のパソコンとして使用することもでき、学習用にも最適です。私も昨年の初め頃に購入し、Linuxの学習に使用しました。

では、構築作業に入っていきます!

そもそも監視サーバとは?

ルータやスイッチなどのネットワーク機器や、その他のサーバが正常に稼働しているかどうかを監視し、異常が起きれば教えてくれる頼れるやつです。

設置することで、トラブルを未然に防いだり、トラブルが起きても迅速に対処することができます。

今回、このブログが動いているWebサーバを監視する目的で簡単に構築してみることにしました!

環境

HW Raspberry Pi 3 Model B (2016年2月発売)
OS Raspbian GNU/Linux 9 (stretch)
監視 zabbix_server 4.2.3
zabbix_agent 4.2.3
DB mysql Ver 15.1 Distrib 10.0.28-MariaDB, for debian-linux-gnueabihf (armv7l) using readline 5.2
WEB Apache/2.4.25 (Raspbian)
PHP 7.0.33-0+deb9u3 (cli)

(1) Raspberry Pi 3 を準備

今回使用するのは、2016年2月発売のPi 3 Model Bですが、2018年3月に性能アップした新しいモデルPi 3 Model B+が登場しているのでそちらを使用しても恐らく大丈夫です。

詳細な仕様と比較については、Wikipediaを参照してください。
Raspberry Pi – Wikipedia

1.1 OSのインストール

まずは、公式が提供しているOSのRaspbianをMicroSDにインストールします。

OSイメージのダウンロード

Download Raspbian for Raspberry Pi


今回は3つ目にあるRaspbian Stretch LiteDownload ZIPでダウンロードしてください。

これはMinimal Image (最小のイメージ)といって、余計なものが入っていない状態です。自分が必要なものだけ後から入れていきます。

MicroSDへ書き込み

MicroSDをパソコンに接続しておきます。

MicroSDに書き込むソフトをダウロードします。
Win32 Disk Imager download | SourceForge.net

インストールして起動します。

Image Fileに、先程ダウンロードしたZIPファイルを解凍したものを指定し、Deviceに、MicroSDを指定します。

そしてWriteを選択し、以下の画面が出たらYesを選択して書き込みます。

書き込みに成功すると以下の画面が出ます。

SSHの有効化

デフォルトで無効にされているSSHを有効化します。

OSイメージ書き込み後、以下のようにbootというのが認識されていると思うので開きます。

開いた後、右クリックから新規作成で、テキストドキュメントを作成します。

そしてファイル名を、
新しいテキスト ドキュメント.txt

ssh
に変更します。
※拡張子(.txt)も削除すること


これで、SSHを有効化することができました!MicroSDをパソコンから取り出し、ラズパイに差し込んで起動しましょう!

1.2 Raspbian初期設定

起動後、LANケーブルを挿している状態ならネットワークに繋がっているはずなので、以下のソフトなどを使用してラズパイに割り振られたIPアドレスを探します。

Advanced IP Scanner – ダウンロード無料のネットワークスキャナー

アドレスがわかったら、Tera TermなどのSSHクライアントを使用してラズパイにアクセスします。

ポート番号:22
ユーザ名:pi
パスワード:raspberry

ログイン後、以下の初期設定を行ってください。

パスワードの変更

デフォルトのパスワードを変更します。

passwd
Changing password for pi.
(current) UNIX password: raspberry
Enter new UNIX password: 新しいパスワード
Retype new UNIX password: もう一度入力
passwd: password updated successfully

IPアドレスの固定

まずネットワークに接続しているインタフェース名を調べます。

ifconfig

※USBの外付けNICなどを使用しなければ通常はeth0になります。

次に設定ファイルを編集します。
以下の内容を追記してください。

vi /etc/dhcpcd.conf
interface 先程調べたインタフェース名
static ip_address=IPアドレス/プレフィックス
static routers=デフォルトゲートウェイアドレス
static domain_name_servers=DNSサーバアドレス

保存後、再起動してIPアドレスが設定されているか確認します。(SSHの接続が切れるため設定したIPアドレスに対して再接続してください)

sudo reboot
ping 1.1.1.1

pingが成功すれば完了です。

ランレベルの変更

デフォルトのランレベルは5(graphical.target)になっており、デスクトップ環境は使用しないため、レベル3(multi-user.target)に変更しておきます。

sudo systemctl set-default multi-user.target

地域と文字コードの変更

地域を日本、文字コードをUTF-8にします。
設定は、公式のツールを使用していきます。

sudo raspi-config

─ 4 Localisation Options

 ─ I1 Change Locale

[*] en_GB.UTF-8 UTF-8
↓ スペースでチェック外す
[  ] en_GB.UTF-8 UTF-8

[  ] ja_JP.UTF-8 UTF-8
↓ スペースでチェック
[*] ja_JP.UTF-8 UTF-8

Enterキーで次に進みます。

Default locale for the system environment:
ja_JP.UTF-8

Enterキーで設定完了です。

タイムゾーンの変更

タイムゾーンを、Asia/Tokyoに設定します。
引き続きツールを使用していきます。

─ 4 Localisation Options

 ─ I2 Change Timezone

Geographic area:
Asia

Time zone:
Tokyo

Enterキーで設定完了です。
最初の画面でFinishを選択して完了です。

ファームウェアアップデート

アップデート後、再起動します。

sudo rpi-update
Would you like to proceed? (y/N) yキーを押す
sudo reboot

パッケージアップデート

sudo apt update
sudo apt -y upgrade
sudo reboot
apt update リポジトリからパッケージリストを更新
apt upgrade パッケージの更新

以上で、初期設定は終了です。
ホスト名など、その他の設定は必要に応じて行ってください。

次はいよいよ監視サーバの構築に入ります!

(2) Zabbix 関連パッケージのインストール

今回使用する監視ソフトウェアは、Zabbix(ザビックス)というオープンソースのソフトウェアです。

監視!といえば真っ先に思いつく印象です。

では実際にインストールしていきましょう!

2.1 リポジトリの追加

公式のリポジトリを追加します。

wget https://repo.zabbix.com/zabbix/4.2/raspbian/pool/main/z/zabbix-release/zabbix-release_4.2-1%2Bstretch_all.deb
sudo dpkg -i zabbix-release_4.2-1%2Bstretch_all.deb
sudo apt update
リポジトリ パッケージを保存している場所
wget 
リンクからファイルをダウンロード
dpkg -i debパッケージやリポジトリのインストール

2.2 必要なパッケージのインストール

先程追加したリポジトリを利用してZabbix本体含めて動作に必要なパッケージ群をインストールしていきます。

sudo apt -y install zabbix-server-mysql zabbix-frontend-php
sudo systemctl enable zabbix-server.service
systemctl enable サーバ起動時に自動で起動する

これでインストールは完了です。

(3) データベースの用意

今回使用するデータベースソフトウェアMariaDBの初期設定を行います。
ラズパイ以外のマシンに構築する場合ラズパイ本体に構築する場合の2パターンがありますが、ラズパイ本体に構築するのはSDカードの耐久性や性能の点からお勧めしません。実運用ではなく試験的にやるのであればラズパイ本体でも良いと思います。

それでは、構築に入ります。

ここで登場するrootユーザや、zabbixユーザは、データベース内のユーザです。サーバ内のユーザアカウントとは別のため混同しないようにしてください。

3.1 設定ファイルの編集

ラズパイ以外のマシンに構築する場合(推奨)

まずは先ほどインストールしたZabbixサーバと一緒に入ったデータベースサーバをラズパイから削除します。

sudo apt -y purge mariadb-server-10.0
sudo apt -y auto-remove
apt -y purge 設定ファイルを含めてアンインストール
apt -y auto-remove 使われていない不要なパッケージを削除

これで完了です。

次の作業はデータベースサーバをインストールした他のマシン上で行います。
今回は以下の環境で行いました。

OS CentOS 7.6.1810
DB mysql Ver 15.1 Distrib 10.4.6-MariaDB, for Linux (x86_64) using readline 5.1
[server]セクション部分を以下のように書き換えます。

sudo vi /etc/my.cnf.d/server.cnf
# this is read by the standalone daemon and embedded servers
[server]
innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_large_prefix = on
innodb_default_row_format = DYNAMIC
ラズパイ本体に構築する場合(非推奨)
[server]セクション部分を以下のように書き換えます。

sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf
# this is read by the standalone daemon and embedded servers
[server]
innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_large_prefix = on
innodb_default_row_format = DYNAMIC

デフォルトではデータベースにデータ書き込みの上限があり、それを取っ払う設定です。
保存後、データベースを再起動します。

sudo systemctl restart mysql
systemctl restart サービスを再起動する

3.2 mysql_secure_installation での対話設定

sudo mysql_secure_installation

現在のrootユーザのパスワードは何?
password for root (enter for none): 無いので、このままEnterキー
OK, successfully used password, moving on...

rootユーザのパスワードを設定する?
Set root password? [Y/n] Y
New password: 新しいパスワードを入力
Re-enter new password: もう一度入力
Password updated successfully!
Reloading privilege tables..
... Success!

匿名ユーザを削除する?
Remove anonymous users? [Y/n] Y
... Success!

リモートからのrootログインを禁止する?
Disallow root login remotely? [Y/n] Y
... Success!

テスト用のデータベースを削除する?
Remove test database and access to it? [Y/n] Y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!

権限を反映させる?
Reload privilege tables now? [Y/n] Y
... Success!

Thanks for using MariaDB!

3.3 unix_socket の無効化

ラズパイ本体に構築する場合(非推奨)
select User, plugin from mysql.user where User = 'root';

+——+—————-+
| User  | plugin        |
+——+—————-+
| root  | unix_socket |
+——+—————-+
1 row in set (0.00 sec)

デフォルトではrootユーザの認証が、unix_socketというものになっています。これは、データベースへ接続する際にデータベースサーバ内で設定したパスワードで認証せずOS上のユーザアカウントで認証を行います。そのためデータベースサーバのrootユーザには、rootユーザ自身もしくはroot権限を持ったユーザでしかログインできなくなります。しかしその場合、パスワードを設定していても認証の際に聞かれないためsudoコマンドを使えるユーザでもすんなりとログインできてしまいます。環境によって良し悪しはあると思いますが、今回は無効化しておきます。表にまとめると以下のようになります。

rootユーザとしてデータベースへ接続した場合(mysql -u root)

通常の認証 unix_socket
rootユーザ DBサーバ内のパスワードが必要 パスワードなしでログイン可
root権限(sudoなど) DBサーバ内のパスワードが必要 パスワードなしでログイン可
一般ユーザ(piなど) ログイン不可 ログイン不可
sudo mysql -u root
update mysql.user set plugin = '' where User = 'root';

flush privileges;

exit;
sudo mysql -u root(root権限によりパスワードなしでログイン可)
update mysql.user (mysqlデータベースのuserテーブルを更新) where User = ‘root’ (rootユーザの) set plugin = ” (pluginのデータを空にセットする)
flush privileges; 権限の反映

これで再度ログインしようとするとできなくなります。(パスワードが必要)

sudo mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

3.4 zabbixユーザの作成

mysql -u root -p
Enter password: 先程設定したrootユーザのパスワード
-u ユーザ指定
-p パスワードを入力
ラズパイ以外のマシンに構築する場合(推奨)
create user 'zabbix'@'IPアドレス' identified by 'パスワード';
@’IPアドレスは、このデータベースにzabbixユーザでアクセスするクライアントのIPアドレス(ラズベリーパイのIPアドレス)
パスワードはzabbixユーザに設定する新しいパスワードです。任意のものに置き換えてください。
ラズパイ本体に構築する場合(非推奨)
create user 'zabbix'@'localhost' identified by 'パスワード';
@’localhost’ は、zabbixユーザでデータベースに接続するサーバは、このサーバ自身という意味。
パスワードはzabbixユーザに設定する新しいパスワードです。任意のものに置き換えてください。

3.5 zabbixデータベースの作成

コメントにて ラズバイ初心者 様から情報を共有していただきました。
zabbix用データベースを作成する際にcharacter set utf8(文字コードの設定をUTF-8)、collate utf8_bin(データの照合時に文字をコードで扱う)の2つを設定しておかなければ3.7 テーブルのインポート時にエラーになるようです。
create database zabbix character set utf8 collate utf8_bin;

3.6 zabbixユーザへ権限の付与

ラズパイ以外のマシンに構築する場合(推奨)
grant all privileges on zabbix.* to 'zabbix'@'IPアドレス';

exit;
on zabbix.* (zabbixデータベース内の全テーブル)の all privileges (全操作権限)を to ‘zabbix’@’IPアドレス (zabbixユーザに対して) grant(付与する)
ラズパイ本体に構築する場合(非推奨)
grant all privileges on zabbix.* to 'zabbix'@'localhost';

exit;
on zabbix.* (zabbixデータベース内の全テーブル)の all privileges (全操作権限)を to ‘zabbix’@’localhost’ (zabbixユーザに対して) grant(付与する)
これでデータベースの初期設定は完了です。

3.7 テーブルのインポート

先程作成したzabbixデータベースはまだ空っぽのため、中にテーブルをインポートします。少し時間がかかるので待ちましょう。

ラズパイ以外のマシンに構築する場合(推奨)
zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -u zabbix -p zabbix -h DBサーバのIPアドレス
Enter password: zabbixユーザのパスワードを入力
zcat 圧縮ファイルの内容を表示
mysql -u zabbix -p zabbix zabbixユーザとしてzabbixデータベースに接続
-h DBサーバのIPアドレス 接続先のサーバを指定
ラズパイ本体に構築する場合(非推奨)
zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -u zabbix -p zabbix
Enter password: zabbixユーザのパスワードを入力
zcat 圧縮ファイルの内容を表示
mysql -u zabbix -p zabbix zabbixユーザとしてzabbixデータベースに接続
再びプロンプトが表示されたら、インポート完了です。

(4) Zabbix サーバの設定

以下の設定ファイルを書き換えます。

sudo vi /etc/zabbix/zabbix_server.conf
# DBHost=
DBHost=localhost もしくは DBサーバのIPアドレス

# DBPassword=
DBPassword=zabbixユーザのパスワード

(5) Apache2 の設定

Zabbixの管理画面はApache2で動かします。

5.1 PHP タイムゾーンの設定

以下のファイルを書き換えます。

sudo vi /etc/apache2/conf-enabled/zabbix.conf
<IfModule mod_php7.c>

# php_value date.timezone Europe/Riga
php_value date.timezone Asia/Tokyo

</IfModule>

同じ部分が2箇所ありますが、<IfModule mod_php7.c>の方だけで大丈夫です。

5.2 ドキュメントルートの変更

以下のファイルを書き換えます。

sudo vi /etc/apache2/sites-available/000-default.conf
# DocumentRoot /var/www/html
DocumentRoot /usr/share/zabbix

保存後、Apacheとzabbixサーバを再起動します。

sudo systemctl restart apache2
sudo systemctl restart zabbix-server

(6) Zabbix-Agent のインストール

Zabbixサーバは基本的に、監視対象に設置されたZabbixエージェントから様々な情報を取得します。
今回は、自分自身についても監視するためエージェントをインストールしていきます。

sudo apt -y install zabbix-agent
sudo systemctl enable zabbix-agent

以上で完了です。

(7) Zabbix のインストール

最後に、ブラウザからZabbixのインストールを進めていきます!
http://サーバのIPアドレス/にアクセスすると以下のインストール画面が表示されるはずです。

Next stepで次に進みます。

項目全てがOKになっていることを確認して、Next stepで次に進みます。

それぞれの入力内容がこれまで設定してきた値と正しいか確認します。Database hostはラズパイ本体にDBサーバを構築していない場合はDBサーバのIPアドレスを入力してください。Passwordはzabbixユーザのパスワードです。入力したら、Next stepで次に進みます。

ここはそのままNext stepで次に進みます。

再度、入力内容を確認してNext stepで次に進みます。

これで成功です。
Next stepで次に進みます。

ログイン画面が表示されます。
デフォルトアカウントは以下です。

コメントにて ラズバイ初心者 様から情報を共有していただきました。
デフォルトのUsernameは大文字から始まるAdminになります。

Username:Admin
Password:zabbix

ログイン後、ダッシュボードが表示されたら終了です。

以上が、Zabbixを使用した監視サーバの構築です。だいぶ長くなってしまいましたが、不備・不明点があればコメントなどで教えていただけると幸いです。次回は監視編ということで、実際の監視作業を行ってみたいと思います。
お疲れ様でした!

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

7
コメントをどうぞ!

avatar
3 Comment threads
4 Thread replies
10 Followers
 
Most reacted comment
Hottest comment thread
2 Comment authors
ごまたろ岩風呂 Recent comment authors
  Subscribe  
新しい順 古い順
更新通知を受け取る »
名無し
ゲスト
名無し

/usr/share/doc/zabbix-server-mysql/create.sql.gz

がありません。どうすればいいですか?

ラズバイ初心者
ゲスト
ラズバイ初心者

初心者で公式の構築方法より詳しく助かりました。

ただ、3.5 Zabbixデータベースの作成で

mysql> create database zabbix character set utf8 collate utf8_bin;

としないと、3.7 テーブルのインポートでエラーになるのが なかなかわかりませんでした。

あと、Zabbixのインストールでデフォルトアカウントの

Username:admin → Admin

にもちょっと詰まりました…同じ初心者のために書いておきます。

岩風呂
ゲスト
岩風呂

3.7 テーブルのインポート において以下のコマンド記載がありますが、
Zabbix Serverと DBサーバを別にした場合、ファイルが存在しません。
どのように入手するのでしょうか?

zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -u zabbix -p zabbix -h DBサーバのIPアドレス
※ /usr/share/doc/zabbix-server-mysql/create.sql.gz になります。

また、DB側の OSが Raspbianではない場合(今回は CentOS)、DB側のOSに合わせたファイルをテーブルに取り込むのでしょうか?それとも ZabbixServerのOSに合わせるのでしょうか?