Compnet

仕事とか遊びとか、日々折々

2016-03-22(火)

Zabbix 3.0 をインストール

Posted by Nakane, R. in technical   

Note

この記事は旧ブログから移行した記事です。 元記事は ここ にあります。

1年半毎の LTS リリースの予定から順調に 9ヶ月ほど送れて Zabbix 3.0 LTS がリリースされました。 ちなみに、ポイントリリースになる 2.6 は出ないままに終わりそうです。 もっとも、監視に必要な機能は Zabbix 2.2 LTS で十分にこなれていて、バージョン アップが予定よりも少々遅れたところであまり影響はありませんでしたし、Zabbix 2.6 が出ないことになってもたぶん困らないでしょう。

Zabbix 3.0 LTS に期待しているのは、Zabbix Proxy や Agent と暗号化通信が可能になる点です。 暗号化通信についてはまだ試していませんが、Zabbix 3.0 がリリースされてから、筆者なり試行したことをまずは書いておきます。

手始めは、Zabbix 3.0 のインストールです。 インストールする OS は Ubuntu 14.04 LTS です。

Ubuntu 14.04 LTS、および MySQL Server、Apache、PHP のインストール、構築はすでに済んでいるものとして省略します。 なお、MySQL Server は mysql-server-5.5 (または mysql-server) をインストールしてください。 これは、Zabbix 3.0 LTS の Ubuntu 用パッケージが、mysql-server (これは mysql-server-5.5 と同等) に依存しているためです。

Zabbix のリポジトリを APT に追加

最初に Zabbix 3.0 LTS のパッケージ リポジトリを、Ubuntu のパッケージ管理システム (APT: Advanced Packaging Tool) に追加します。 そのために、Zabbix の Web サイトのダウンロード ページから Zabbix 3.0 LTS の Ubuntu 14.04 LTS のパッケージをダウンロードします。 筆者は以下のコマンドで、~/expackages というディレクトリを作り、そこにダウンロードしました。

mkdir -p ~/expackages
wget -nd -P ~/expackages http://repo.zabbix.com/zabbix/3.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.0-1+trusty_all.deb

ダウンロードしたファイルは、Zabbix をパッケージ管理システムに追加するためのパッケージなので、以下のコマンドを実行してこれをインストールします。

sudo dpkg -i ~/expackages/zabbix-release_3.0-1+trusty_all.deb

ダウンロードしたパッケージには、依存するパッケージがひとつもないので dpkg コマンドで素直にインストールできるはずです。 もしも、依存するパッケージがあってインストールできないときは、以下のように gdebi-core パッケージを先にインストールして gdebi コマンドを使うと、依存するパッケージも一緒にインストールできます。

sudo apt-get -y install gdebi-core
sudo gdebi --non-interactive ~/expackages/zabbix-release_3.0-1+trusty_all.deb

これで、Zabbix 3.0 LTS のパッケージ リポジトリが Ubuntu のパッケージ管理システムに組み込まれました。 正しく組み込まれたて Zabbix 3.0 LTS をインストールできるかは、以下のコマンドで確認できます。

sudo apt-get update
sudo apt-cache search zabbix

念のために、リポジトリに登録されている Zabbix のバージョンを確認しておきます。 使用するデータベースは MySQL の予定なので、バージョンを調べるパッケージは zabbix-server-mysql になります。

apt-cache show zabbix-server-mysql | grep Version
Version: 1:3.0.1-1+trusty

この結果から、インストールする Zabbix のバージョンは 3.0.1 だと分かります

Zabbix をインストール

Zabbix パッケージ リポジトリをパッケージ管理システム (APT: Advanced Packaging Tool) に組み入れたら、Zabbix をインストールします。

データベースに MySQL を使うので Zabbix 本体には zabbix-server-mysql パッケージを使います。 その他にも、Web フロントエンド、エージェントなどのパッケージを一括してインストールするために、以下のコマンドを実行します。

sudo apt-get update
sudo apt-get -y install zabbix-server-mysql zabbix-frontend-php zabbix-sender zabbix-agent zabbix-get

Zabbix のフロントエンド (Web UI) である zabbix-frontend-php パッケージの初期設定では、タイムゾーンの設定がコメントアウトされているので、以下のコマンドを実行してタイムゾーンを Asia/Tokyo に設定します。

sudo sed -i -e 's%#\s*\(php_value\s\+date.timezone\s\+\)\w\+/\w\+%\1Asia/Tokyo%' /etc/zabbix/apache.conf

また、グラフ生成で使用されるフォントを以下のコマンドで追加します。

sudo aptitude -y install fonts-vlgothic

これをしておかないと、フロントエンドを日本語表示に設定したときに、グラフで正しく文字が表示されません。

あとは sudo apache2 reload コマンドを実行して設定を読み込ませれば、Web ブラウザで http://<インストールした PC の FQDN か IP アドレス>/zabbix にアクセスして Zabbix の使用が開始できることになっています。 ただし、それは Zabbix 2.4 までのことだったようです。 Zabbix 3.0 LTS では Web ブラウザでアクセスする前に、もう少し作業が必要です。

Ubuntu のパッケージ管理システムに Zabbix のパッケージ リポジトリを追加して、apt-get などのコマンドで Zabbix をインストールしたとき、Zabbix 2.4 まではデータベースの作成までが同時にされていました。 しかしながら、Zabbix 3.0 LTS をインストールではデータベースが作成されません。

このため、http://<Zabbix をインストールしたホスト>/zabbix にアクセスするまえに、データベースを作成して用意する必要があります。

Zabbix が使うデータベースを用意

設定ファイルにデータベース情報を記述

データベースを作成する前に、Zabbix が参照するデータベース名と、接続するためのユーザー名がすでに Zabbix の設定ファイルに書かれているので、以下のコマンドで見ておきます。

egrep '^DB(Name|User|Password)' /etc/zabbix/zabbix_server.conf
DBName=zabbix
DBUser=zabbix

これによると、データベース名を zabbix にして、そこに接続するユーザー名を zabbix で MySQL に作成すると、設定ファイルを書き換えずに済みます。

ただし、Zabbix の設定ファイルには、データベースに接続するときのパスワードが書かれていないので、これを書き足します。 Zabbix の設定ファイルを見ると、パスワードを指定する DBPassward を書き足す位置がうまい具合に存在します。

egrep -A3 -B3 '^(#\s+)?DBPassword' /etc/zabbix/zabbix_server.conf
#
# Mandatory: no
# Default:
# DBPassword=

### Option: DBSocket
#       Path to MySQL socket.

この # DBPassword= の行の後ろにパスワードを書き足すことにします。 パスワードは 16 桁の英数字列を乱数で適当に生成することにして、以下のコマンドを実行します。

sudo ed -s /etc/zabbix/zabbix_server.conf <<__EOT__
/#\s*DBPassword\s*=/a

DBPassword=$(cat /dev/urandom | tr -dc '[:alnum:]' |head -c 16)
.
w
q
__EOT__

これで Zabbix の設定ファイルに、参照するデータベース名と接続するためのユーザー名、パスワードが書き込まれました。

念のため、以下のコマンドを実行してもう一度確認しておきます。

egrep '^DB(Name|User|Password)' /etc/zabbix/zabbix_server.conf
DBName=zabbix
DBUser=zabbix
DBPassword=cH7sbZaoqZEbQHJN

これらの値は、後ほど Web UI からの初期設定を行うときに使用するので、どこかに控えておきます。

設定ファイルの情報を元にデータベースを作成

次はこれらの設定を元に、実際にデータベースと接続するためのユーザー、パスワードを MySQL に作成します。

まずは以下のコマンドで、データベースを作成します。

mysql -u root -e "CREATE DATABASE $(sed -ne 's/^DBName\s*=\(\w\+\)/\1/p' /etc/zabbix/zabbix_server.conf) CHARACTER SET utf8;"

引き続き以下のコマンドで、データベースに接続するためのユーザー作成し、データベースへの全てのアクセス権を与えます。

mysql -u root -e "GRANT all on $(sed -ne 's/^DBName\s*=\(\w\+\)/\1/p' /etc/zabbix/zabbix_server.conf).* TO '$(sed -ne 's/^DBUser\s*=\(\w\+\)/\1/p' /etc/zabbix/zabbix_server.conf)'@'localhost' IDENTIFIED BY '$(sed -ne 's/^DBPassword\s*=\(\w\+\)/\1/p' /etc/zabbix/zabbix_server.conf)';"

これでデータベースと、そこに接続するためのユーザーを MySQL に作成しました。 なお、データベースとユーザーの作成は、以下のようにもできます。

eval $(sed -ne 's/^\(DBName\)\s*=\(\w\+\)/\1=\2/p' /etc/zabbix/zabbix_server.conf)
eval $(sed -ne 's/^\(DBUser\)\s*=\(\w\+\)/\1=\2/p' /etc/zabbix/zabbix_server.conf)
eval $(sed -ne 's/^\(DBPassword\)\s*=\(\w\+\)/\1=\2/p' /etc/zabbix/zabbix_server.conf)
mysql -u root -e "CREATE DATABASE ${DBName} CHARACTER SET utf8;"
mysql -u root -e "GRANT all on ${DBName}.* TO '${DBUser}'@'localhost' IDENTIFIED BY '${DBPassword}';"
zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql --defaults-file=<( printf '[client]\npassword=%s\n' ${DBPassword} ) -u ${DBUser} ${DBName}
unset DBName DBUser DBPassword

次に、以下のコマンドを実行して、作成したデータベースに初期データを登録します。

zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql --defaults-file=<( printf '[client]\npassword=%s\n' $(sed -ne 's/^DBPassword\s*=\(\w\+\)/\1/p' /etc/zabbix/zabbix_server.conf) ) -u $(sed -ne 's/^DBUser\s*=\(\w\+\)/\1/p' /etc/zabbix/zabbix_server.conf) $(sed -ne 's/^DBName\s*=\(\w\+\)/\1/p' /etc/zabbix/zabbix_server.conf)

以上で Zabbix で使うデータベースが用意できました。

データベースが用意できたので、以下のコマンドで Zabbix Server を起動します。

sudo service zabbix-server start

Zabbix フロントエンド (Web UI) で初期設定

Zabbix サーバーを起動したら、Zabbix フロントエンドから Zabbix の初期設定を行います。

Web ブラウザーで http://<インストールした PC の FQDN か IP アドレス>/zabbix にアクセスします。

「Welcome to Zabbix 3.0」と書かれた Web ページが表示されるので、「Next step」ボタンをクリックします。 「Check of pre-requisites」ページの全ての項目が緑色の「OK」であることを確認して「Next step」ボタンをクリックします。

このページにひとつでも「OK」ではない項目があるときは、それが「OK」になるように設定を修正してください。 大抵は、PHP のモジュールがインストールされていないか、PHP の設定が適切でないことが理由です。

次に表示されるのは「Configure DB connection」ページです。

「Database type」欄では「MySQL」を選択、「Database host」欄には「localhost」を入力、「Database port」欄には「0」を入力、「Database name」欄には「zabbix」を入力、「User」欄には「zabbix」を入力します。 ここまではたぶん最初から入力されているそのままでいいと思います。 最後の「Password」欄には、データベースを用意したときに控えた DBPassword の値を入力します。

なお、最初から入力されているはずの、「Database name」欄と「User」欄は、データベースを用意したときに控えた DBName と DBUser の値と同じはずです。 もしも、これらの値と異なるときは、データベースを用意したときに控えた値に修正します。

全ての欄を入力したら「Next step」ボタンをクリックして、先に進みます。

次に表示されるのは「Zabbix server details」ページですが、「(optional)」と書かれていることもあり、何も触らずに「Next step」ボタンをクリックします。

次は「Pre-installation summary」ページです。 ここも、そのまま「Next step」ボタンをクリックします。

「Install」ページが表示されます。

以上で初期設定は完了です。 「Finish」ボタンをクリックすると、Zabbix のログイン ページが表示されます。 このままブラウザーを閉じるなどしても、改めてWeb ブラウザーで http://<インストールした PC の FQDN か IP アドレス>/zabbix にアクセスすれば、Zabbix のログイン ページが表示できます。

Zabbix に登録されている初期ユーザーは「admin」、パスワードは「zabbix」ですので、これを使ってログインしてください。

ログイン後の言語設定、ユーザーの追加などの操作方法は割愛します。

Note

2016.3.22

Twtter で指摘を受け、fonts-vlgothic のインストールの追記、初期ユーザー名・パスワードの間違いを修正しました。

Comments