Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 5 years have 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  6月 27 20:34 2014 web
$ sudo chown nginx.nginx web
drwxr-x--- 2 nginx  nginx   4096  6月 27 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していけば完了します。

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away