Zabbix 3.4をDebian 9.2(stretch)にインストール

Zabbix Advent Calendar 2017の4日目です。

これまでも、いくつかのZabbixのバージョンとOSやディストリビューションの組み合わせでご紹介してきましたが、私はDebianに関して投稿していなかったようですので、ご紹介してみます。

# 事前準備

## OSのインストール

日本語環境でインストールしておきます。
日本語環境ではなくても、後で日本語のロケール情報を追加でも大丈夫です。
OSのインストール時には、最低限「SSHサーバ」と「標準システムユーティリティ」をインストールしておくと良いと思います。

OSがインストールし終わったら、日本語のロケール情報がインストールされているか確認します。

```shell-session
# locale -a
C
C.UTF-8
POSIX
ja_JP.utf8
#
```

「ja_JP.utf8」が含まれていない場合は、以下のコマンドを実行して、言語のリストから「ja_JP.UTF-8 UTF-8」を選択して追加してください。

```shell-session
# dpkg-reconfigure locales
```

続いて、グラフなどで使用する日本語用フォントをインストールしておきます。

```shell-session
# apt-get install fonts-vlgothic
```

ここまで終わったら、OSを最新の状態にしておきます。

```shell-session
# apt-get update
# apt-get upgrade
# reboot
```

## データベースの準備

Zabbix用のデータベースとして、MySQLを使用することとします。
とはいえ、Debian標準のパッケージとしては、MySQLではなくMariaDBが用意されています。
今回は標準のパッケージを使用して構成するので、MariaDBサーバーをインストールすることとします。

MariaDBサーバーは、以下のコマンドでインストールすることができます。

```shell-session
# apt-get install mysql-server
```

インストールが終了すると、自動的にMariaDBサーバーが起動されます。
しかし、デフォルトだと文字コードが「utf8mb4」、照合順序が「utf8mb4_general_ci」になっているようですので、Zabbix用データベースとして不適切です。
Zabbix用データベース作成時に明示的に指定しても対応はできますが、忘れないようにデフォルトの文字コードを変更しておきます。

デフォルトの文字コードを変更するには、MariaDBサーバーの設定ファイルに設定を追記します。

```shell-session
# vi /etc/mysql/mariadb.conf.d/50-server.cnf
```

このファイル内のmysqldセクションに以下の設定を追加しておきます。

```shell-session
character-set-server = utf8
collation-server     = utf8_bin
skip-character-set-client-handshake
innodb_file_per_table
```

搭載しているメモリサイズに合わせて、メモリ関連のチューニングも合わせて行っておくことをお勧めしますが、ここでは最低限の設定のみに限定しています。

設定を追加したら、反映させるためにMariaDBサーバーを再起動します。

```shell-session
# systemctl restart mariadb.service
```

# Zabbixのインストール

## リポジトリの登録

Zabbix LLCが公開しているDebian用リポジトリを登録します。

使用するZabbixのメジャーバージョンとDebianのバージョン(今回はstretch)に合わせて、zabbix-releaseパッケージをダウンロードしてインストールすることで登録できます。

```shell-session
# wget http://repo.zabbix.com/zabbix/3.4/debian/pool/main/z/zabbix-release/zabbix-release_3.4-1+stretch_all.deb
# dpkg -i zabbix-release_3.4-1+stretch_all.deb
```

## パッケージのインストール

リポジトリを登録したら、リポジトリの最新情報を取得した後で、Zabbixパッケージのインストールを行います。

ここでは、MySQL用Zabbixサーバー本体、Webでの操作用モジュールとZabbixサーバー本体を監視するためにZabbixエージェントもインストールします。

```shell-session
# apt-get update
# apt-get install zabbix-server-mysql
# apt-get install zabbix-frontend-php
# apt-get install zabbix-agent
```

Zabbixサーバーのパッケージの依存関係が修正されていないようですので、snmpパッケージも別途インストールしておきます。

```shell-session
# apt-get install snmp
```

## Zabbix用データベースの作成

パッケージのインストールが終わったら、Zabbix用データベースを作成し、そのデータベースにパッケージ内に含まれるSQL文を使用してテーブルと初期データを投入します。

まずは、データベースの作成ですが、mysqlコマンドを使用してデータベースを作成します。
ここでは、データベース名「zabbix」、アクセスに使用するアカウント「zabbix」とします。
パスワードは、お好きなパスワードに変更してください。
※以下の例は、rootユーザーにパスワード設定済みの場合

```shell-session
# mysql -uroot -p
Enter password:
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'password';
mysql> exit
#
```

テーブルの作成と初期データの登録は、以下のように実行します。

```shell-session
# zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix
Enter password:
#
```

## 初期設定

ここまで終了したら、次はZabbixサーバーのデータベース接続情報とWebインターフェースのtimezoneの設定を行います。

Zabbixサーバーのデータベース接続情報は、/etc/zabbix/zabbix_server.confに設定します。
これまでの手順の通り行っていれば、DBPasswordを変更するだけです。
DBPasswordの値をデータベース作成時のzabbixユーザーのパスワードに設定してください。

```shell-session
# vi /etc/zabbix/zabbix_server.conf
```

設定行

```
DBPassword=password
```

そして、timezoneの設定は、/etc/apache2/conf-enabled/zabbix.confにあります。
php_value date.timezoneの行の最初の「#」を削除して、日本であるならば「Asia/Tokyo」に設定します。

```shell-session
# vi /etc/apache2/conf-enabled/zabbix.conf
```

設定行

```
php_value date.timezone Asia/Tokyo
```

Debian 9.2(stretch)の場合は、PHP 7のようですので、PHP 7用の設定行の設定変更を忘れないようにしてください。

## 起動確認

設定が終わったら、Zabbixが起動できるか確認してみます。

以下のコマンドでZabbixサーバーとZabbixエージェントを起動します。

```shell-session
# systemctl start zabbix-server
# systemctl start zabbix-agent
```


## Webインターフェースのウィザード実行

Webサーバー(apache2)は、インストールしたときに起動したままですので、先ほどのtimezoneの設定を反映させるために再起動します。

```shell-session
# systemctl restart apache2
```

そうすると、Webインターフェースのウィザードを実行できる状態となります。

Webブラウザを使用して、以下のURLにアクセスしてウィザードを実行してください。

```
http://＜ZabbixサーバーのIPアドレス＞/zabbix/
```

最低限設定が必要なのは、データベースへの接続情報です。
先ほどのZabbixサーバーの設定と同様に、zabbixユーザーのデータベース接続用のパスワードを入力して進めてください。
詳細な設定方法は、他のOSやディストリビューションと同様です。


## 自動起動設定

設定が終了したら、OSを再起動したときにも自動的に動き出すようにしておきたいと思います。

MariaDBサーバー(mariadb)とWebサーバー(apache2)は、OS起動時に自動的に起動するようになっていると思いますが、ZabbixサーバーやZabbixエージェントは、OS起動時に自動的に起動するようにはなっていないので、以下のように実行して自動的に起動するよう設定しておきます。

```shell-session
# systemctl enable zabbix-server
# systemctl enable zabbix-agent
```

本当に設定できたか心配な方は、ここでOSを再起動してみてください。


## 管理者でログイン

Webインターフェースのウィザードが終了したら、UsernameとPasswordの入力画面になります。
初期データで登録されている、ユーザー名「Admin」、パスワードは「zabbix」でログインしてください。

大文字小文字に注意してください。ユーザー名の最初は大文字のAです。

# ポイント

今回、特にご紹介したかったポイントは以下のポイントです。

- ZabbixをインストールするOS用のパッケージがあることを事前に確認しておく
- 使用したいZabbixのメジャーバージョンと、OSのディストリビューションの組み合わせでzabbix-releaseパッケージが分けられている

前者ですが、パッケージが用意されていないOSである場合は、基本的には、ご自身でソースからビルドすることになります。
ご自身でビルドするのが難しい場合は、公式なサポートサービスを契約すること検討された方が良いかもしれません。

OSやバージョンによっては、そのOSとバージョンの環境上でビルドしなおすだけで対応できる場合もありますが、組み合わせによっては、機能の制限がある場合があるのでご注意ください。

例えば、RHEL 6(またはCentOS 6)でZabbix 3.0以降のZabbixサーバーを構築する場合、一部のライブラリが古いため、すべての機能を使用することができなかったり、PHPのバージョンが古いので、より新しいバージョンのPHP環境を用意することが必要であったりします。

後者に関してですが、Zabbix LLC公式のリポジトリを使用していると、例えば、Zabbix 3.0からZabbix 3.4に勝手にバージョンアップはされることはありません。
Zabbix 3.0用とZabbix 3.4用のリポジトリは分けてありますので、リポジトリのURLを変更しない限り、updateを行っても同じメジャーバージョンのより新しいバージョンに更新されるだけになっています。


ご不明な点がございましたら、[日本Zabbixユーザー会のサイト](http://www.zabbix.jp/)のフォーラムをご活用ください。


明日はkosugeさんですね。よろしくお願いします。