CentOS 6.5でzabbix+nginx+php-fpm環境を構築してみる

  • 36
    Like
  • 0
    Comment
More than 1 year has passed since last update.

zabbix インストール

参考:Zabbix サーバ 2.2.3のインストール, Zabbix-2.2をインストールする手順(using PostgreSQL/Nginx)

yumリポジトリ設定

例によって公式リポジトリから最新版を入手します。

yumリポジトリ追加&インストール
$ sudo rpm -ivh http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6.noarch.rpm
$ sudo yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-web-japanese zabbix-agent
$ zabbix_server -V
Zabbix server v2.2.4 (revision 46772) (23 June 2014)
Compilation time: Jun 26 2014 02:27:30
$ zabbix_agent -V
Zabbix agent v2.2.4 (revision 46772) (23 June 2014)
Compilation time: Jun 26 2014 02:31:36

公式の最新版からインストールします。

インストールが終わったら/etc/yum.repos.d/zabbix.repoenable=0にしておいてもいいかもしれません。

MySQL設定

まずはDB設定からで、MySQLを使用します。

mysqlインストール
$ sudo yum -y install mysql-server
$ sudo /usr/bin/mysql_secure_installation
$ sudo service mysqld start
$ sudo chkconfig mysqld on

ここではmysql-serverが未インストールだったので、yumからのインストールと初期設定をやっていますが、既に使っているDBがあるなら飛ばしてもいいかもしれません。

mysql初期設定
$ mysql -u root -p
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by '任意のパスワード';
mysql> exit
$ cd /usr/share/doc/zabbix-server-mysql-2.2.4/create/
$ mysql -u root -p zabbix < schema.sql
$ mysql -u root -p zabbix < images.sql
$ mysql -u root -p zabbix < data.sql

必要なスキーマなどはSQLファイルが用意されているので、読み込ませるだけになります。

zabbix-server設定

概ね必要な設定は初期設定で入っているので、DBPasswordだけ設定します。

/etc/zabbix/zabbix_server.conf
@@ -114,6 +114,8 @@
 # Default:
 # DBPassword=

+DBPassword=MySQLに設定した任意のパスワード
+
 ### Option: DBSocket
 #      Path to MySQL socket.
 #

その他にDBHost/DBName/DBUser辺りは必要に応じて設定変更が必要らしいです。

zabbixサービス起動

zabbix-server起動
$ sudo service zabbix-server start
Starting Zabbix server:                                    [  OK  ]
$ chkconfig --list | grep zabbix
zabbix-agent    0:off   1:off   2:off   3:off   4:off   5:off   6:off
zabbix-server   0:off   1:off   2:off   3:off   4:off   5:off   6:off
$ sudo chkconfig zabbix-server on
$ chkconfig --list zabbix-server
zabbix-server   0:off   1:off   2:on    3:on    4:on    5:on    6:off

まずは、サーバ側のサービスを起動しておきます。

zabbix-agent起動
$ sudo service zabbix-agent start
Starting Zabbix agent:                                     [  OK  ]
$ sudo chkconfig zabbix-agent on
$ chkconfig --list zabbix-agent
zabbix-agent    0:off   1:off   2:on    3:on    4:on    5:on    6:off

ついでに、サーバ本体もzabbix-agentとして登録するために、エージェントも起動しておきました。

zabbix-web設定

nginx側の設定前に、zabbix-web関連のファイルを適当なディレクトリでnginx側から見れるように設定しておきます。

nginxでzabbixを見れるように
$ cd /etc/zabbix
$ ls -ld web
drwxr-x--- 2 apache apache  4096  627 20:34 2014 web
$ sudo chown nginx.nginx web
drwxr-x--- 2 nginx  nginx   4096  627 20:34 2014 web
$ cd /var/www
$ sudo ln -s /usr/share/zabbix .

デフォルト(rpmで入れたばかりの)状態ではapache権限になっていたりするので、その辺りを変更したり、ベースとして/var/www配下でファイルを管理したいので、シンボリックリンクを設定したりします。

zabbix側の設定としてはここまででほぼ完了です。

nginx+php-fpmで監視画面を起動

参考:CentOSにてnginxでPHPを動かす,

nginx設定

nginx側にサーバ設定を丸ごと追加します。もしかしたら単にlocation単位で増やした方が簡単なのかもしれませんが、サーバ設定ファイル丸ごと別管理にしたかったので(^_^;)

ここで追加しているserver_nameについて、別途DNS設定などを追加する必要がありますが、現状はローカルPCの/etc/hostsに追記する方向で動作確認しています。

別途認証とかの設定を追加したりしたら、DNS設定入れようかな…。

/etc/nginx/conf.d/zabbix.conf
server {
        server_name zabbix.example.org;

        root        /var/www/zabbix;
        index       index.html index.php;
        access_log  /var/log/nginx/access_zabbix.log main;
        error_log   /var/log/nginx/error_zabbix.log error;

        location ~ \.php {
                fastcgi_pass    127.0.0.1:9000;
                fastcgi_index   index.php;
                fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }
}

access/errorログについては、/etc/logrotate.d/nginxで適当にローテートして貰うためにファイルパスを合わせて(/var/log/nginx/*.logにして)います。error_log辺りはデフォルトのerror.logに纏めてしまっても良かったのだろうか…。

サーバ設定が出来たらsudo service nginx restartするだけですが、必要に応じて/etc/nginx/nginx.confserver_names_hash_bucket_sizeを変更する必要があるかもしれません。

php-fpm設定

次にphp関連の設定を変更します。

/etc/php.ini
@@ -437,7 +437,8 @@

 ; Maximum execution time of each script, in seconds
 ; http://www.php.net/manual/en/info.configuration.php#ini.max-execution-time
-max_execution_time = 30
+;max_execution_time = 30
+max_execution_time = 300

 ; Maximum amount of time each script may spend parsing request data. It's a good
 ; idea to limit this time on productions servers in order to eliminate unexpectedly
@@ -446,7 +447,8 @@
 ; Development Value: 60 (60 seconds)
 ; Production Value: 60 (60 seconds)
 ; http://www.php.net/manual/en/info.configuration.php#ini.max-input-time
-max_input_time = 60
+;max_input_time = 60
+max_input_time = 300

 ; Maximum input variable nesting level
 ; http://www.php.net/manual/en/info.configuration.php#ini.max-input-nesting-level
@@ -726,7 +728,8 @@

 ; Maximum size of POST data that PHP will accept.
 ; http://www.php.net/manual/en/ini.core.php#ini.post-max-size
-post_max_size = 8M
+;post_max_size = 8M
+post_max_size = 32M

 ; Magic quotes are a preprocessing feature of PHP where PHP will attempt to
 ; escape any character sequences in GET, POST, COOKIE and ENV data which might
@@ -944,6 +947,7 @@
 ; Defines the default timezone used by the date functions
 ; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
 ;date.timezone =
+date.timezone = Asia/Tokyo

 ; http://www.php.net/manual/en/datetime.configuration.php#ini.date.default-latitude
 ;date.default_latitude = 31.7667

php-fpmもデフォルトだとapache権限で動作しようとする為、nginx権限で動作するように、設定を変更しておきます。

/etc/php-fpm.d/www.conf
@@ -36,9 +36,9 @@
 ; Note: The user is mandatory. If the group is not set, the default user's group
 ;       will be used.
 ; RPM: apache Choosed to be able to access some dir as httpd
-user = apache
+user = nginx
 ; RPM: Keep a group allowed to write in log dir.
-group = apache
+group = nginx

 ; Choose how the process manager will control the number of child processes.
 ; Possible Values:

ここまでで最低限の設定は終わったので、php-fpmを自動起動するようにしておきます。

php-fpm起動
$ chkconfig php-fpm --list
php-fpm         0:off   1:off   2:off   3:off   4:off   5:off   6:off
$ sudo service php-fpm start
php-fpm を起動中:                                          [  OK  ]
$ chkconfig php-fpm --list
php-fpm         0:off   1:off   2:on    3:on    4:on    5:on    6:off

ブラウザでの設定

後はブラウザ側で操作します。

http://zabbix.example.orgにアクセスすることで、初期画面が表示されるので、基本はそのままNextしていけば完了します。

その後、適時設定(監視対象の追加など)が出来るはずです。