Raspberry Pi(Raspbian)にzabbix3.4.4をいれて監視環境を作る

# はじめに
今回は安価で購入できるRaspberry Pi3にZabbix3.4.4をいれて、自宅のネットワーク機器やサーバ群・ストレージを監視できる環境を構築していきたいと思います。
この記事を書こうと思った理由は、Raspberry Pi が armhf アーキテクチャである事もあり?、Zabbixのインストール手順が普段使っているLinuxサーバと少し異なっていた為である。私も構築に苦戦しましたが何とかできたので、その備忘録も兼ねてこの記事を残します。

# 環境

* Raspberry Pi 3
* Raspbian jessie lite

```
Distributor ID:	Raspbian
Description:	Raspbian GNU/Linux 8.0 (jessie)
Release:	8.0
Codename:	jessie
```

* Zabbix 3.4.4
* MySQL 5.5.57-0+deb8u1 (Raspbian)

# 準備

## パッケージマネージャーの設定
aptライブラリのインデックスを更新

```
$ sudo apt-get update
```

システムにインストールされているパッケージを最新バージョンにする

```
$ sudo apt-get upgrade
```

## Zabbixに必要なパッケージのインストール

必要パッケージのインストール(かなり時間かかります)

```
$ sudo apt-get install make gcc libc6-dev libmysqlclient-dev libcurl4-openssl-dev libssh2-1-dev libsnmp-dev libiksemel-dev mysql-server libsqlite3-dev libopenipmi-dev fping php5-gd snmp libsnmp-base openjdk-7-jdk unixodbc unixodbc-dev libxml2 libxml2-dev snmp-mibs-downloader snmpd snmptt python-pywbem php5-ldap php5-mysql traceroute libldap2-dev apache2 php5 libapache2-mod-php5 gettext vim
```

(重要)ここまでは参考サイトにあるが、後のZabbixインストール時にエラーが出た為、追加で以下のパッケージもインストール

```
$ sudo apt-get install libevent-dev libpcre3-dev
```

# Zabbixインストール

以下のサイトからダウンロード(非公式)
https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.4.4/

![スライド1.jpg](https://qiita-image-store.s3.amazonaws.com/0/161771/e6b014cd-b0ab-a0a2-4c62-ae7a30886ae3.jpeg)

ダウンロードした`zabbix-3.4.4.tar.gz`を解凍

```
$ tar xzf zabbix-3.4.4.tar.gz
```

解凍先に移動

```
$ cd zabbix-3.4.4
```

Zabbixを端末にインストールする

```
$ sudo ./configure --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-openipmi --with-ssh2 --with-libxml2 --enable-ipv6 --with-unixodbc --with-openssl --enable-java --with-jabber --with-ldap
$ sudo make
$ sudo make install 
```

# MySQLの設定
Zabbix用のMySQL(DB)を構築していきます

MySQLに接続(パスワードはインストール時の設定したもの)

```
$ mysql -u root -p
Enter password:
```

DB(Zabbix)の作成、DBにユーザを設定・権限の付与、MySQLからログアウト
**DB名:zabbix**
**ユーザ名:zabbix**
**パスワード:zabbix**
として設定(任意で変更してください)

```
create database zabbix;
grant all on zabbix.* to zabbix@localhost identified by 'zabbix';
quit;
```

zabbixでMySQlを利用するための初期データ(定義ファイル)を作成したDBに投入

```
$ cd zabbix-3.4.4
$ mysql -u zabbix --password=zabbix zabbix < database/mysql/schema.sql
$ mysql -u zabbix --password=zabbix zabbix < database/mysql/images.sql
$ mysql -u zabbix --password=zabbix zabbix < database/mysql/data.sql
```

# Zabbixの設定
上記で設定したMySQlとの結び付け、起動の為の設定をしていきます。

## MySQLとの接続設定

MySQLとZabbixが接続する為の情報を設定する

```
$ vi /usr/local/etc/zabbix_server.conf
 --省略--
 (以下のように該当部分を編集)
 DBName=zabbix
 DBUser=zabbix
 DBPassword=zabbix
 DBSocket=/var/run/mysqld/mysqld.sock
```

とりあえず`zabbix-server`のプロセスをつける

```
$ zabbix-server
```

起動ログの確認(errorとか出てなければOK)

```
$ sudo tailf /tmp/zabbix_server.log
 15976:20171208:170539.405 server #0 started [main process]
 15979:20171208:170539.407 server #1 started [configuration syncer #1]
 ：
 ：
```

## 起動スクリプトの設定

```
$ sudo cp zabbix-3.4.4/misc/init.d/debian/zabbix-* /etc/init.d
```

Zabbix-server起動スクリプトの設定

```
$ sudo vim /etc/init.d/zabbix-server
(#! /bin/shの直後に以下を追記)
### BEGIN INIT INFO
# Provides: Zabbix daemon
# Required-Start: $local_fs $remote_fs $network $syslog $named
# Required-Stop: $local_fs $remote_fs $network $syslog $named
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# X-Interactive: true
# Short-Description: Start/stop Zabbix server daemon
### END INIT INFO #
```

Zabbix-agent起動スクリプトの設定

```
$ sudo vim /etc/init.d/zabbix-agent
(#! /bin/shの直後に以下を追記)
### BEGIN INIT INFO
# Provides: zabbix-agent
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Should-Start: $all
# Should-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/stop Zabbix-agent
# Description: Start/stop Zabbix-agent
### END INIT INFO #
```

設定ファイルの更新

```
$ sudo update-rc.d zabbix-agent defaults
$ sudo update-rc.d zabbix-server defaults
```

## zabbix-server,zabbix-agentの起動
この時点では、まだ何も動作しないが起動スクリプトがエラーなく動くことを確認する

```
$ sudo /etc/init.d/zabbix-server start
$ sudo /etc/init.d/zabbix-agent start
```

# フロントエンドの設定
ZabbixをWebブラウザから閲覧する為の設定をしていきます。

ZabbixのPHPファイル公開のため、Apacheの設定変更

```
$ sudo vi /etc/php5/apache2/php.ini
 --省略--
 (以下のように該当部分を編集)
 memory_limit = 128M
 post_max_size = 16M
 max_execution_time = 300
 max_input_time = 300
 date.timezone = Asia/Tokyo
```

Webブラウザに表示するファイルを公開ディレクトリにコピー

```
$ sudo mkdir /var/www/html/zabbix
$ cd zabbix-3.4.4/frontends/php
$ sudo cp -a . /var/www/html/zabbix
```

ロケールとディレクトリの所有権限の変更

```
$ cd /var/www/html/zabbix/locale
$ ./update_po.sh
$ ./make_mo.sh
$ sudo chown -R www-data /var/www/html/zabbix
```

IPアドレスにアクセス時に`/zabbix`にリダイレクトされるように、`index.html`を編集

```
$ sudo vim /var/www/html/index.html
(全消去した上で)
----------------------------------------------
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
   <meta http-equiv="refresh" content="0;URL=/zabbix">
  </head>
</html>
-----------------------------------------------
(に変更)
```

Apache2の再起動

```
$ service apache2 force-reload
```

Zabbixも念のため再起動。忘れていたのでenble(デーモン化)もする

```
$ sudo systemctl enable zabbix-server
$ sudo systemctl restart zabbix-server
$ sudo systemctl enable zabbix-agent
$ sudo systemctl restart zabbix-agent
```


# WebブラウザからZabbixにアクセス

ZabbixサーバのIPアドレスにWebブラウザからアクセスします。

![スクリーンショット 2017-12-08 17.35.21.png](https://qiita-image-store.s3.amazonaws.com/0/161771/14e2c447-7508-4009-fdbc-2fdf5a2a19e1.png)

Zabbixに必要なパッケージがインストールされていれば、OKの表示が出ます

![スクリーンショット 2017-12-08 17.35.34.png](https://qiita-image-store.s3.amazonaws.com/0/161771/3c347e0b-3c12-d1d2-9056-d33f07746656.png)

DBとの接続設定をWebブラウザからも行います。
登録した通りに各情報を入力します。
>**DB名:zabbix**
>**ユーザ名:zabbix**
>**パスワード:zabbix**

![スクリーンショット 2017-12-08 17.35.47.png](https://qiita-image-store.s3.amazonaws.com/0/161771/e410abc8-36bf-bd7c-3ac8-747108cd03e1.png)

ホスト名,サーバ名を設定します

![スクリーンショット 2017-12-08 17.36.45.png](https://qiita-image-store.s3.amazonaws.com/0/161771/30d10981-0315-a80d-c74b-17d5cf50882c.png)

設定を確認してNext stepを押します。

![スクリーンショット 2017-12-08 17.36.57.png](https://qiita-image-store.s3.amazonaws.com/0/161771/c77601d8-977b-bf38-9cad-3b429374dee7.png)

以下のデフォルト情報を入力して、Zabbixの管理画面を開きます
**ユーザ名:Admin**
**パスワード:zabbix**

![スクリーンショット 2017-12-08 21.21.46.png](https://qiita-image-store.s3.amazonaws.com/0/161771/966ff48f-107b-e06f-ae67-c1983f207389.png)

Zabbixにログインできました。
![スクリーンショット 2017-12-08 22.39.18.png](https://qiita-image-store.s3.amazonaws.com/0/161771/00c51423-763e-1c77-5aa4-a8d546b73da1.png)

日本語に翻訳させたい方は以下の設定を追加で行う。

```
$ sudo localedef -f UTF-8 -i ja_JP ja_JP
$ sudo systemctl restart zabbix-server
$ sudo service apache2 force-reload
```

Zabbix画面の右上の人型のマークをクリックする。
Language:Japanese(ja_JP)にし、updateする
![スクリーンショット 2017-12-08 22.41.40.png](https://qiita-image-store.s3.amazonaws.com/0/161771/8b2de45f-a40a-1c38-2fd9-982a0c3b5dfe.png)

これで日本語に変換される。

# 監視テスト
簡単にZabbix-agentの動作を確認する

Zabbixサーバ自身を監視する設定はデフォルトで入っているので
「設定」→「ホスト」→ステータス「無効」をクリックする。
以下のような画面となるので、監視を有効化する。

![スクリーンショット 2017-12-08 22.33.05.png](https://qiita-image-store.s3.amazonaws.com/0/161771/0fa9d64b-afc7-2a1d-0e79-d5167d384907.png)

少し待つとzabbix-agentとのやりとりにより監視情報が見れるようになる。
以下は、「監視データ」→「グラフ」から`CPU utilization`(CPU使用率)を見たものである。

![スクリーンショット 2017-12-08 22.49.03.png](https://qiita-image-store.s3.amazonaws.com/0/161771/03158a30-1da5-6f0e-9384-4e58d1b70adf.png)

# おわりに

今回はRaspbianにZabbixの環境を構築する方法を書きました。

以前に[zabbixでVyOSをSNMP監視する](https://qiita.com/nl0_blu/items/abd3bde08236c37e04ab)は書いているので、Slackにアラートを投げる方法・アクセスポイントの監視とかを今後は書ければと思ってます。

最後に参考文献です。ありがとうございました。

* http://straightweeds.hatenablog.com/entry/2016/08/05/002649
* https://qiita.com/yakumo/items/6b44d341e9e1aa8bfc80