CentOS8にZabbix5.0+MariaDB+Nginxを導入する方法

投稿者: | 2020-10-08

今回は、OSSの統合監視ツール・Zabbix 5.0の監視サーバを構築する方法と監視対象のサーバにZabbixエージェントを導入する方法について解説します。

実施環境・構成

■実施環境

OS CentOS8 最小のインストール
Zabbix 5.0
MariaDB 10.5
Nginx 1.18.0
PHP、PHP-FPM 7.4.11

■構成

Zabbixとは

Zabbixはラトビアのアレクセイ・ウラジシェフによって作られた、ネットワーク、サーバ、ハードウェアの状態を総合的に監視できるオープンソースのソフトウェアです。障害検知や通知機能に加え、幅広い監視を行えることが特徴です。

1つのソフトウェアで全体の監視を行えることから、業務アプリケーションやWebサービス、ゲーム等、幅広い分野で使用されています。Zabbixは業務でもよく使用されるソフトウェアのため、Zabbixを使用できることで監視業務等のスキルのアピールとしても利用できます。

事前準備

初めに、OSに日本語の言語パッケージをインストールします。OS導入時の言語で日本語を選択している方はこの手順を飛ばしてください。

・日本語パッケージをインストールする
# dnf -y install langpacks-ja

言語パッケージのインストール後、SELinuxを無効化します。

・SELinuxを無効化する
# sed -i s/^SELINUX=.*$/SELINUX=disabled/ /etc/selinux/config
# reboot

MariaDBのインストール・設定

事前準備後、Zabbixで使用するデータベースをインストールします。データベースに関しては、MySQLやPostgreSQL等を使用できますが、今回はMariaDBをインストールします。MariaDBはリポジトリから最新版のインストールを行います。

・MariaDBのリポジトリを設定する。
# vi /etc/yum.repos.d/mariadb.repo

■mariadb.repo
------------------------------------------------------------
# MariaDB 10.5 [Stable] CentOS repository list - created 2020-10-02 14:29 UTC 
# https://mariadb.org/download-test/
[mariadb]
name = MariaDB
baseurl = https://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/yum/10.5/centos8-amd64 
module_hotfixes=1
gpgkey=https://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/yum/RPM-GPG-KEY-MariaDB 
gpgcheck=1
------------------------------------------------------------

・MariaDBをインストールする
# dnf -y install MariaDB-server

MariaDBのインストール後、設定ファイルに文字コードの設定を行います。

・MariaDBの文字コードを設定する
# vi /etc/my.cnf.d/server.cnf

■server.cnf
------------------------------------------------------------
[mariadb]
character-set-server=utf8mb4
 
[client-mariadb]
default-character-set=utf8mb4
------------------------------------------------------------

設定後、MariaDBの起動・自動起動の設定を行います。

・MariaDBを起動、自動起動の設定をする
# systemctl start mariadb
# systemctl enable mariadb

MariaDBの起動後、初期設定を行います。

・MariaDBの初期設定をする
# mysql_secure_installation

------------------------------------------------------------
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

# rootのパスワードを設定してください、と聞かれるため、何も入力せずEnterを押す
Enter current password for root (enter for none):[Enter]
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'. 

# Unixソケットの認証に切り替えるか聞かれるため、nを入力する
Switch to unix_socket authentication [Y/n] n
 ... skipping.

You already have your root account protected, so you can safely answer 'n'.

# rootユーザーのパスワードを変更するか聞かれるため、Yを入力しパスワードを設定する 
Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

# Anonymousユーザーを削除するか聞かれるため、Yを入力する
Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

# rootユーザーのリモートログインを許可しないかを聞かれるため、Yを入力する
Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

# testデータベースとアクセスを削除するか聞かれるため、Yを入力する
Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

# privilegeテーブルの再読み込みを行うか聞かれるため、Yを入力する
Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!
------------------------------------------------------------

初期設定後、MariaDBにrootでログインしZabbix用のデータベースとユーザーを作成します。

・MariaDBにログインする
# mysql -u root -p

・Zabbix用のデータベース、ユーザーを作成し、権限を付与する
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin; 
MariaDB [(none)]> create user zabbix@localhost identified by 'P@ssW0rd'; 
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost; 

Nginxのインストール

MariaDBのインストール後、ZabbixのWebサーバとして使用するNginxをインストールします。今回はNginxのリポジトリから安定版をインストールします。

・Nginxのリポジトリを設定する
# vi /etc/yum.repos.d/nginx.repo

■nginx.repo
------------------------------------------------------------
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
------------------------------------------------------------

・Nginxをインストールする
# dnf -y install nginx

PHPのインストール・設定

Nginxのインストール後、Zabbixのフロント部分で使用するPHPをインストールします。PHPに関しては、remiリポジトリからインストールを行います。

・remiリポジトリをインストールする
# dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm 

・PHPのモジュール等をインストールする
# dnf module install -y php:remi-7.4

・PHP7.4をインストールする
# dnf -y install php

PHPのインストール後、PHPのタイムゾーンを設定します。

・PHPのタイムゾーンを設定する
# vi /etc/php.ini

------------------------------------------------------------
; タイムゾーンをAsia/Tokyoにする
date.timezone ="Asia/Tokyo"
------------------------------------------------------------

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

MariaDB、Nginx、PHPのインストール後、Zabbix5.0のrpmパッケージをインストールします。Zabbixのパッケージについては、以下のリンクから構成に合わせた項目で選ぶことができます。

・Download Zabbix

https://www.zabbix.com/download

今回はZabbix5.0、CentOS8、MariaDB(MySQL)、Nginxでインストールを行います。

・Zabbixのrpmパッケージをインストールする
# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm 
# dnf clean all

Zabbixサーバ・エージェントのインストール

Zabbixのrpmパッケージをインストール後、Zabbixサーバ、Zabbixエージェント等をインストールします。

・Zabbixサーバ、Zabbixエージェント等をインストールする
# dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-agent zabbix-web-japanese 

スキーマの作成・Zabbix用データベースの設定

Zabbixサーバのインストール後、Zabbix用データベースにスキーマを作成します。ユーザーとパスワードはデータベース設定時のものを使用します。

・Zabbix用のデータベースにスキーマを作成する
# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql zabbix -uzabbix -pP@ssW0rd 

スキーマの作成後、Zabbixサーバの設定ファイルにデータベースの情報を設定します。

・Zabbixサーバで使用するデータベースの情報を設定する
# vi /etc/zabbix/zabbix_server.conf

------------------------------------------------------------
DBName=zabbix
DBUser=zabbix
DBPassword=P@ssW0rd
------------------------------------------------------------

Nginx、PHP-FPM、Zabbixの設定

スキーマの作成、Zabbixサーバのデータベースの設定後、Nginx、PHP-FPM等の設定を行います。

・Nginxの設定をする
# vi /etc/nginx/conf.d/zabbix.conf

■zabbix.conf
------------------------------------------------------------
  -- 省略--
    server {
        listen        80;
        
        # ドメインを設定している場合、server_nameにドメインを設定する
        server_name   localhost;
          -- 省略--
    }
------------------------------------------------------------

・PHP-FPMの設定をする
# vi /etc/php-fpm.d/www.conf

■www.conf
------------------------------------------------------------
user = nginx
group = nginx
------------------------------------------------------------

・PHP-FPMのzabbix.confを設定する
# vi /etc/php-fpm.d/zabbix.conf

■zabbix.conf
------------------------------------------------------------
[zabbix]
user = nginx
group = nginx

-- 省略 --

php_value[date.timezone] = Asia/Tokyo
------------------------------------------------------------

Zabbixサーバ、エージェント等の起動

各種設定後、Zabbixサーバ、Zabbixエージェント、Nginx、PHP-FPMを起動し、自動起動の設定を行います。

・Zabbixサーバ、エージェント、Nginx、PHP-FPMを起動する
# systemctl start zabbix-server zabbix-agent nginx php-fpm
# systemctl enable zabbix-server zabbix-agent nginx php-fpm

Firewall、フォルダの所有権の設定

Zabbixサーバ等の起動後、Zabbixで使用するポートを許可します。

・HTTP、10050、10051ポートを許可する
# firewall-cmd --add-service=http --zone=public --permanent
# firewall-cmd --add-port=10050/tcp --zone=public --permanent
# firewall-cmd --add-port=10051/tcp --zone=public --permanent
# firewall-cmd --reload

Firewallの設定後、/var/lib配下にあるPHPフォルダ、ZabbixのWebフォルダの所有権を変更します。

・PHPフォルダ、webフォルダの所有権を変更する
# chown -R root.nginx /var/lib/php
# chown -R nginx.nginx /etc/zabbix/web

動作確認・初期設定

設定完了後、ブラウザで「http://<サーバのIPアドレス>」に接続し、Zabbixのセットアップ画面が表示されることを確認します。セットアップページの確認後、「Next step」をクリックします。

必須のソフトウェアのチェックが表示されるため、全てOKであることを確認し「Next step」をクリックします。

Zabbixで使用するデータベースの接続情報を求められるため、MySQLを選択し、ポートに3306、ユーザー名、パスワード等を入力し「Next step」をクリックします。

Zabbixサーバの詳細情報を求められるため、ホスト名かIPアドレス、ポート等を入力し「Next step」をクリックします。

入力情報の確認画面で、入力内容に間違いがないことを確認し「Next step」をクリックします。

インストール成功の画面が表示されれば成功です。インストール後「Finish」をクリックします。

Zabbixのログイン画面でユーザー名とパスワードを入力します。Zabbixの初期Adminユーザー情報は以下のとおりです。

ユーザー名 Admin
パスワード zabbix

ログイン後、ダッシュボードが表示されればZabbixサーバのインストール完了です。

監視対象にZabbixエージェントをインストール

Zabbixでは、監視対象のホストから各種情報を取得するためにエージェントが必要です。今回は対象のホストにZabbixエージェントをインストールし設定を行います。

・Zabbixサーバのエージェントをインストールする
# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm 
# dnf clean all
# dnf -y install zabbix-agent

Zabbixエージェントのインストール後、エージェントの設定ファイルを編集します。

・Zabbixエージェントの設定ファイルを設定する
# vi /etc/zabbix/zabbix_agentd.conf

------------------------------------------------------------
Server=<ZabbixサーバのIPアドレス>
ServerActive=<ZabbixサーバのIPアドレス>
Hostname=<監視対象のHost名>
------------------------------------------------------------

エージェントの設定ファイルの編集後、Zabbixサーバへデータを送信するためにFirewallの10050ポートを許可します。

・Firewallの10050ポートを許可する
# firewall-cmd --add-port=10050/tcp --zone=public --permanent
# firewall-cmd --reload

Firewallの設定後、Zabbixエージェントを起動、自動起動の設定を行います。

・Zabbixエージェントを起動し、自動起動の設定をする
# systemctl start zabbix-agent
# systemctl enable zabbix-agent

以上でZabbixサーバ、Zabbixエージェントの設定は終了です。次回はZabbixの初期設定について解説します。