*

RaspbianにZabbixをインストール

公開日: : 最終更新日:2015/11/21 投稿者:raru apache, Linux, Raspbian, サーバ

今回はRaspbianにZabbixをインストールしてみたいと思います。
前回のPidoraでは「Zabbix Server is not running」と表示が出て心が折れましたが、今回は無事にインストールできました!

それではさっそくインストールを行っていきましょう。
ちなみに今回は以下のような構成になっています。
・Raspbian (Jessie)
・Zabbix (2.2系)
・PHP5.6
・MySQL 5.5

Zabbixのパッケージをインストール

さっそくzabbixのパッケージをインストールします。
Redhat系と違って、Debian系はパッケージインストール中にCUIでインストーラーみたいなのが起動するようです。
かなりびっくりしました。

それではmysqlバージョンのzabbixサーバをインストールしていきます。

root@raspberrypi:~# aptitude zabbix-server-mysql zabbix-frontend-php php5-mysql


        ┌────────────────────────────────┤ mysql-server-5.5 を設定しています ├────────────────────────────────┐
        │ 強制ではありませんが、MySQL を管理する "root" ユーザのパスワードを設定することを強くお勧めします。  │ 
        │                                                                                                     │ 
        │ この値を空のままにしておいた場合は、パスワードは変更されません。                                    │ 
        │                                                                                                     │ 
        │ MySQL の "root" ユーザに対する新しいパスワード:                                                     │ 
        │                                                                                                     │ 
        │ ***************____________________________________________________________________________________ │ 
        │                                                                                                     │ 
        │                                               <了解>                                                │ 
        │                                                                                                     │ 
        └─────────────────────────────────────────────────────────────────────────────────────────────────────┘ 
                                                                                                                
                                  ┌──────┤ mysql-server-5.5 を設定しています ├───────┐
                                  │                                                  │ 
                                  │                                                  │ 
                                  │ MySQL の "root" ユーザに対する新しいパスワード:  │ 
                                  │                                                  │ 
                                  │ ****************________________________________ │ 
                                  │                                                  │ 
                                  │                      <了解>                      │ 
                                  │                                                  │ 
                                  └──────────────────────────────────────────────────┘ 

記事として載せるとやや見た目が悪いですが、上記のようなイメージです。
ここでmysqlのrootパスワードが設定できてしまいます。
便利ではありますね。個人的には好みではありませんが。

php5-mysqlをインストールし忘れると、zabbixのフロントページからDBに接続できないので忘れずにインストールしましょう。
一旦以上で必要なパッケージの導入は完了です。
ここまでは非常に簡単です。

mysql設定

続いてmysqlの設定を行っていきます。
raspberry piは2にもなるとスペックが相当向上していますが、それでも高速というわけではありません。
ある程度パフォーマンス設定を行っておくのが良いと思われます。
今回はそんなに凝った設定はしませんが簡単に設定していきます。

//logサイズ等変更のため、一旦切断しlogを退避(削除)
root@raspberrypi:~# mysql -u root -p
Enter password: 
...
mysql> SET GLOBAL innodb_fast_shutdown=0;
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Bye
root@raspberrypi:~# ls /var/lib/mysql/ib_logfile
ib_logfile0  ib_logfile1  
root@raspberrypi:~# mv /var/lib/mysql/ib_logfile* /tmp/
root@raspberrypi:~# cp /etc/mysql/my.cnf /etc/mysql/my.cnf.org
root@raspberrypi:~# vi /etc/mysql/my.cnf
root@raspberrypi:~# diff /etc/mysql/my.cnf.org /etc/mysql/my.cnf
111c111,120
< 
---
> # add 2015/10/23 by raru
> character-set-server=utf8
> collation-server=utf8_general_ci
> skip-character-set-client-handshake //文字コードをクライアントに合わせずサーバ設定に強制
> innodb_file_per_table=1 // tableごとにファイル分割
> default-storage-engine=InnoDB //InnoDBをデフォに
> innodb_buffer_pool_size=256M //bufferを設定。mysql専用鯖で全体の50-80%のメモリ設定らしい
> innodb_log_file_size=32M
> innodb_log_files_in_group=2 // logのファイル数
> skip-name-resolve //dns逆引きスキップ
116a126
> default-character-set=utf8
119a130
> default-character-set=utf8

root@raspberrypi:~# systemctl restart mysql

今回設定しているのはそれぞれ上から[mysqld]、[mysqldump]、[mysql]のセクションです。

今回log系の設定を行うためにinnodb_fast_shutdownを設定しています。
これをしないと、変にファイルを掴むの何かして上手くmysqlのrestartができません。

あとは文字コードの設定とキャッシュサイズを指定しています。
Zabbixはmysqlがボトルネックになりやすいらしいのでキャッシュ多めに設定するのが良いようです。
私は他にも使いたいので25%程度をしていするに止めました。

また名前解決する意味もないのでskip-name-resolveを設定します。
地味にパフォーマンスに影響があるようです。

ある程度のチューニングが完了したら、日時の確認と自動起動設定を行います。

// 日付確認
root@raspberrypi:~# echo 'select now()' | mysql -u root -p
Enter password: 
now()
2015-10-24 03:51:22
root@raspberrypi:~# date
2015年 10月 24日 土曜日 03:51:23 JST

// 自動起動設定
root@raspberrypi:~# systemctl enable mysql
Synchronizing state for mysql.service with sysvinit using update-rc.d...
Executing /usr/sbin/update-rc.d mysql defaults
Executing /usr/sbin/update-rc.d mysql enable
root@raspberrypi:~# systemctl is-enabled mysql
Failed to get unit file state for mysql.service: No such file or directory
root@raspberrypi:~# aptitude -y install sysv-rc-conf
root@raspberrypi:~# sysv-rc-conf --list | grep mysql
mysql        0:off	1:off	2:on	3:on	4:on	5:on	6:off

上の方ではサーバの日付とDBの日付を確認しています。
どうやらraspbianではインストールしたままでも普通に日時が合うようです。

最後に自動起動設定ですが、systemctlを利用する割には対応しているんだかしているんだかわからないことになっています。
raspbianなのかdebianなのかわかりませんが、systemctlにちゃんと対応していないものがチラホラある様子です。

曖昧なのは非常に困るので、いわゆるchkconfigのパッケージを導入してそちらで確認を行いました。
今後はこれを利用していくことが増えるでしょう。

なにはともあれ、一応enableで設定はできていたようです。
これでmysqlの設定は一通り完了です。

php設定

続いてphpの設定です。
raspbian(debian)ではphp.iniがいくつかの場所に点在しており、それぞれapache用だったりshell用だったりするみたいです。
今回はもちろんapache用の設定です。

root@raspberrypi:~# cp /etc/php5/apache2/php.ini /etc/php5/apache2/php.ini.org
root@raspberrypi:~# vi /etc/php5/apache2/php.ini
root@raspberrypi:~# diff /etc/php5/apache2/php.ini.org /etc/php5/apache2/php.ini
372c372
< max_execution_time = 30
---
> max_execution_time = 300
382c382
< max_input_time = 60
---
> max_input_time = 600
574a575
> error_log = /var/log/php/error_log
660c661
< post_max_size = 8M
---
> post_max_size = 16M
810c811
< upload_max_filesize = 2M
---
> upload_max_filesize = 32M
884a886
> date.timezone = "Asia/Tokyo"
1513c1515
< session.hash_function = 0
---
> session.hash_function = 1 //md5でなくshaを利用
1686c1688
< ;mbstring.language = Japanese
---
> mbstring.language = Japanese
1719a1722
> mbstring.encoding_translation = Off

root@raspberrypi:~# mkdir -R www-data /var/log/php
root@raspberrypi:~# chown -R www-data /var/log/php
root@raspberrypi:~# chmod 775 /var/log/php
root@raspberrypi:~# apachectl configtest
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
root@raspberrypi:~# systemctl restart apache2

こちらはほぼほぼzabbixインストールのための設定です。
mbstring.html_inputとかoutputはphp5.5以降くらいから非推奨となっているということでしたので設定していません。

encoding_translationをoffにしているのは、勝手に変換とか自分の管理の外で変換されるのが嫌だからです。
だいたいこういうのはバグ発生時にわけわからなくて発見が大変だったりする、というイメージ。

簡単になりますがphp.iniの設定はこんな感じです。
phpのキャッシュサイズを増やす等するとパフォーマンスが向上しますので、自分の環境では増やしたいというときは増やしてください。
ただメモリ容量と相談しないと逆にパフォーマンスが劣化します。

またlogフォルダを作成していますが、果たしてwww-data(apache)で出力されるのかまだ動作検証していないので微妙です。

警告が出ていますが、server nameとサーバのドメイン等が一致していないみたいな内容なので今回はスルーで問題ないです。

apache設定

さて、お次はapacheの設定です。
今回ここも結構時間がかかりました。
Redhat(CentOS)系とはかなりフォルダ構成と使い方が違うのですね。
confファイルの設定自体は同じなのですが、分割の仕方が違う。

ではサイトの設定を行う前に全体の設定を行います。

root@raspberrypi:~# cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf.org
root@raspberrypi:~# vi /etc/apache2/apache2.conf
root@raspberrypi:~# apachectl configtest
Syntax OK
root@raspberrypi:~# diff -u /etc/apache2/apache2.conf.org /etc/apache2/apache2.conf
--- /etc/apache2/apache2.conf.org	2015-11-21 22:44:00.885668139 +0900
+++ /etc/apache2/apache2.conf	2015-11-21 22:45:20.405028463 +0900
@@ -68,6 +68,12 @@
 #
 #ServerRoot "/etc/apache2"
 
+ServerName raspbian.com
+
+ServerTokens Prod
+ServerSignature Off
+TraceEnable Off

ServerTokensとServerSignatureを設定することで、404画面等にapacheのバージョンなどの設定が表示されてしまうことを防ぎます。
TraceEnableについては「実はそんなに怖くないTRACEメソッド」という記事が参考になります。
あんまりOffにする必要がなさそうですが、Onである必要も今のところ感じないので切ってます。

では設定します。

root@raspberrypi:~# cp etc/apache2/sites-enabled/000-default.conf /etc/apache2/sites-available/zabbix.conf
root@raspberrypi:~# vi /etc/apache2/sites-available/zabbix.conf
root@raspberrypi:~# cat /etc/apache2/sites-available/zabbix.conf 
<VirtualHost *:80>
	ServerName zabbix.raspbian.com

	ServerAdmin webmaster@localhost
	DocumentRoot /usr/share/zabbix

	ErrorLog ${APACHE_LOG_DIR}/zabbix/error.log
	CustomLog ${APACHE_LOG_DIR}/zabbix/access.log combined
</VirtualHost>

root@raspberrypi:~# a2ensite zabbix
Enabling site zabbix.
To activate the new configuration, you need to run:
  service apache2 reload
  
root@raspberrypi:~# a2dissite 000-default
Site 000-default disabled.
To activate the new configuration, you need to run:
  service apache2 reload

root@raspberrypi:~# mkdir /var/log/apache2/zabbix
root@raspberrypi:~# chown -R www-data:www-data /var/log/apache2/zabbix
root@raspberrypi:~# mkdir /var/www/public/
root@raspberrypi:~# chown -R www-data:www-data /var/www/public
root@raspberrypi:~# systemctl restart apache2

まずdebian(jessie)のapacheのフォルダですが、available系とenable系がありました。
availableに設定を配置して、特定のコマンドで有効化するという運用をするそうです。
有効化といっても、ただのシンボリックリンクなんですけどね。

sites〜がバーチャルホスト設定でmods〜がモジュール系。
今回はデフォルト設定の設定ファイルをコピーしつつ、zabbix用の設定ファイルを作成しています。

中身は非常にシンプルにしてみたのですが、変数を利用している部分があります。
この値は/etc/apache2/envvars に入っているので、そちらで確認してください。

またdebianではapacheのユーザ/グループはwww-dataというようです。apacheではないんですね。

最後に設定を記述したらa2ensiteコマンドで設定を有効化します。
zabbixとしていますが、例えばconfファイルが hogehoge.confであれば hogehogeを指定します。

訳のわからないコマンドですが、apache2 enable siteの略称なのでしょう。
設定の無効化は a2dissite ですし、modの有効化はa2enmodになります。

で、設定が終わったら公開できるようにポートを開きます。

//-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
root@raspberrypi:~# vi /etc/iptables/rules.v4
root@raspberrypi:~# systemctl restart netfilter-persistent

root@raspberrypi:~# vi /etc/hosts
root@raspberrypi:~# cat /etc/hosts | grep zabbix
127.0.0.1       zabbix

微妙にwheezyだったころとiptablesの起動ファイル名が変わっています。
罠ですね。

hostsの設定はおまけです。
本当はFQDNをちゃんと設定してあげたいのですが、一旦省略しています。

zabbix用DB準備

一通りの設定が完了したので、そろそろインストールの準備も大詰めです。
今度はmysqlの設定というよりはDBの準備になります。

さっそくDBを作成してデータを入れていきましょう。

root@raspberrypi:~# mysql -u root -p
Enter password: 
...
mysql> create database zabbix;
Query OK, 1 row affected (0.00 sec)

mysql> grant all privileges on zabbix.* to zabbix@localhost indentified by 'hogehogefugafuga';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Bye

root@raspberrypi:~# gunzip -d /usr/share/zabbix-server-mysql/*
gzip: /usr/share/zabbix-server-mysql/zabbix_server.conf: unknown suffix -- ignored
root@raspberrypi:~# mysql -u root -p zabbix < /usr/share/zabbix-server-mysql/schema.sql
Enter password: 
root@raspberrypi:~# mysql -u root -p zabbix < /usr/share/zabbix-server-mysql/images.sql 
Enter password: 
root@raspberrypi:~# mysql -u root -p zabbix < /usr/share/zabbix-server-mysql/data.sql 
Enter password:
root@raspberrypi:~# cp /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.org
root@raspberrypi:~# vi /etc/zabbix/zabbix_server.conf
root@raspberrypi:~# diff /etc/zabbix/zabbix_server.conf.org /etc/zabbix/zabbix_server.conf
116a117,118
> DBPassword=hogehogefugafuga

上から特に説明する物もないかなぁと思います。
DB作って、ユーザ作って、パスワード設定して、zabbixのパッケージ導入時に配置されているsqlを展開して流しています。

さいごに設定ファイルにパスワードを設定します。
これでzabbixからDBに対する接続の設定と、接続をするDBの設定が完了しました。

また作成するDB名や、ユーザ名を上記以外の物にする場合にはzabbix_server.confのDBUserとかそういう値を修正しましょう。
それで接続が可能です。

で、基本的にはこれで完了なのですが一点だけ注意が必要です。
今回私がもっとも悩まされた設定が一つ残っています。

root@raspberrypi:~# cp /etc/default/zabbix-server /etc/default/zabbix-server.org
root@raspberrypi:~# vi /etc/default/zabbix-server
root@raspberrypi:~# diff /etc/default/zabbix-server.org /etc/default/zabbix-server
11c11
< START=no
---
> START=yes
root@raspberrypi:~# systemctl restart zabbix-server

これです。
このSTARTの値をyesにしないと、systemctl start zabbix-serverとしてもデーモンが起動しません。
つまり動きません。

なぜデフォルトでnoなのか全くよくわかりませんが、この設定が抜けている場合はインストール後に「zabbix server is not running」というエラーに悩まされることになります。
このエラーいろいろなサイトで調べてもconfの設定を見直す、ということしか書いてないので非常に苦労しました。

STARTがnoの状態でも一応起動的にはOKのようで、systemctl status zabbix-serverとしてもactive状態になっているんですよね。
ただpsコマンドでプロセスを確認すると、それに属するプロセスが全く動いていないので気づけました。

過去pidoraの設定で動かなかったのもこれが原因だった可能性が高いですね。

なにはともあれ、これで設定が完了です。
あとはウェブブラウザからアクセスしてインストール作業を進めましょう。

ウェブページからインストール

あとはおそらく屋内であるであろうzabbixサーバに対してブラウザからアクセスを行い、インストールします。
ipでアクセスしても良いですし、hostを設定しても構いません。

またインストールの前に以下の設定を行います。

root@raspberrypi:~# ls -l /etc/ | grep zabbix
drwxr-xr-x  3 root root    4096 10月 26 01:09 zabbix
root@raspberrypi:~# chgrp www-data /etc/zabbix
root@raspberrypi:~# chmod 775 /etc/zabbix
root@raspberrypi:~# ls -l /etc/ | grep zabbix
drwxrwxr-x  3 root www-data  4096 10月 26 01:09 zabbix

/etc/zabbixにファイルを作成していくようなので、権限を与えています。
あとはブラウザからインストールです。

zabbix2.2インストール

raspbian_zabbix2

この画面でエラーが出る場合にはコツコツと潰していきましょう。
おそらく大丈夫だとは思います。

raspbian_zabbix3

raspbian_zabbix4

raspbian_zabbix5

raspbian_zabbix6

raspbian_zabbix7

上記ででているエラーが先ほど権限が必要になるポイントです。
先に設定をしている場合にはここも下の画像のように問題なく通過できると思います。

raspbian_zabbix8

raspbian_zabbix9

インストール完了後のIDはadmin, PWはzabbixです。デフォルトではこうなっているようです。
上記の画像はidが間違ってますね。

これでログイン後にエラーがでなければ完了です。

次はこのサーバ自体にzabbix_agentを導入して監視しつつ、このブログ利用しているサーバの監視もしていきたいと思います。

まだまだ続くよzabbix設定
次回はagentをインストールして自己監視です。

あとがき

今回はSTART=noが、一番言いたい部分でした。
ここがわからずにzabbixの導入を諦めている人もたくさんいるのではないかと勝手に思っています。
また現在zabbix3のα?版くらいがでてきているようです。
まだ2.4にすらしていないのですが、もう3ですか。

なにはともあれ、これでraspbianを本格的に活用していけそうです。

関連記事

no image

OpenDKIMを利用したメール認証

今回はOpenDKIMを利用したメール認証設定を行います。 DKIMやらSPFやら、メールは何かと

記事を読む

no image

DDNS(No-IP)をcronで更新

DDNSを利用してzabbix agentを導入できないかと思い、ひとまずDDNSの設定を行いました

記事を読む

no image

SPFの送受信設定

今回はSPFの設定を行います。 SPFとは何かということについてはここでは割愛しますが、メールの送

記事を読む

no image

Pidoraの時刻設定(ntp)

現在Pidoraを監視サーバ化しようとしているところです。 なかなか苦労しますね。普通のサーバで設

記事を読む

no image

CentOS7にwordpressを移行

前の記事で初期設定を行ったサーバにwordpressを移設します。 wordpressの移設は案外

記事を読む

no image

CentOSにSSH鍵認証で接続するGitリポジトリを作成

今回友人と共同開発を行なうと思い、ざっくりとGitサーバを建ててみました。 私はSVNの方が好きな

記事を読む

no image

RaspbianのZabbix ServerにZabbix Agentをインストール

前回の記事でRaspbianにZabbixサーバをインストールしてみました。 今回はzabbi

記事を読む

no image

Raspberry Pi2/ラズベリーパイ2にFedoraをインストール

Raspberry pi2にFedoraがインストールできるという情報を入手したので2台目を購入して

記事を読む

no image

Raspbianでメール送信 ssmtp編

Raspbianで監視などをおこなっているとメールが送信したくなります。 とりあえず何かと管理用に

記事を読む

no image

iptablesで特定のIPからの接続を遮断

WordPressを利用して作成しているこのブログなのですが、管理画面へのログインリンクがあるせいな

記事を読む

Comment

  1. くろねこむさし より:

    突然のコメント失礼させて頂きます。

    >今回はSTART=noが、一番言いたい部分でした。

    私もラズパイにzabbix導入してまさにこの部分ではまって、zabbix-serverプロセスが起動しないな…となっていたところ、こちらのサイトを拝見して解決しました。ありがとうございます。

  2. raru より:

    > くろねこむさしさん
    コメントありがとうございます。

    START=noは罠ですよね。
    私もpidoraを利用していた時には解決できずに諦めてしまった過去があります。

    少しでも参考にしていただけたということで非常に嬉しく思います!

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

PAGE TOP ↑