zabbix
RaspberryPi
監視
raspbian
zabbix3.4

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

ダウンロードした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

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

スクリーンショット 2017-12-08 17.35.34.png

DBとの接続設定をWebブラウザからも行います。
登録した通りに各情報を入力します。

DB名:zabbix
ユーザ名:zabbix
パスワード:zabbix

スクリーンショット 2017-12-08 17.35.47.png

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

スクリーンショット 2017-12-08 17.36.45.png

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

スクリーンショット 2017-12-08 17.36.57.png

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

スクリーンショット 2017-12-08 21.21.46.png

Zabbixにログインできました。
スクリーンショット 2017-12-08 22.39.18.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

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

監視テスト

簡単にZabbix-agentの動作を確認する

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

スクリーンショット 2017-12-08 22.33.05.png

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

スクリーンショット 2017-12-08 22.49.03.png

おわりに

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

以前にzabbixでVyOSをSNMP監視するは書いているので、Slackにアラートを投げる方法・アクセスポイントの監視とかを今後は書ければと思ってます。

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