はじめに
今回は安価で購入できる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/
ダウンロードした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ブラウザからアクセスします。
Zabbixに必要なパッケージがインストールされていれば、OKの表示が出ます
DBとの接続設定をWebブラウザからも行います。
登録した通りに各情報を入力します。
DB名:zabbix
ユーザ名:zabbix
パスワード:zabbix
ホスト名,サーバ名を設定します
設定を確認してNext stepを押します。
以下のデフォルト情報を入力して、Zabbixの管理画面を開きます
ユーザ名:Admin
パスワード:zabbix
日本語に翻訳させたい方は以下の設定を追加で行う。
$ 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する
これで日本語に変換される。
監視テスト
簡単にZabbix-agentの動作を確認する
Zabbixサーバ自身を監視する設定はデフォルトで入っているので
「設定」→「ホスト」→ステータス「無効」をクリックする。
以下のような画面となるので、監視を有効化する。
少し待つとzabbix-agentとのやりとりにより監視情報が見れるようになる。
以下は、「監視データ」→「グラフ」からCPU utilization
(CPU使用率)を見たものである。
おわりに
今回はRaspbianにZabbixの環境を構築する方法を書きました。
以前にzabbixでVyOSをSNMP監視するは書いているので、Slackにアラートを投げる方法・アクセスポイントの監視とかを今後は書ければと思ってます。
最後に参考文献です。ありがとうございました。