Zabbix Serverのインストール方法 (Zabbix 5.4 / CentOS 8.5 対応)

スポンサーリンク

Zabbixはオープンソースの統合監視ツールのひとつです。以前は、Nagios, Xymonなどの多数の統合監視ツールが乱立しているような状況でしたが、近年ではZabbix一強になってしまった印象があります。Zabbixは痒い所に手が届くツールで作り込み次第では殆どの監視ができてしまうのが特徴ですが、作り込みに大きな手間隙が必要であるデメリットもあります。そんなZabbixのインストール方法を紹介します。

インストール方法概要

当サイトでは以下3通りのインストール方法を紹介します。

  • パッケージインストール
  • OVAイメージの利用(仮想アプライアンス)
  • コンテナの利用

パッケージインストール

構成検討

Zabbix ダウンロードページ」へアクセスします。すると、OS, Apache, Nginx, PostgreSQL, MySQLなどの複数の構成を選択できます。

Zabbix公式サイト - パッケージインストールの説明01

これら構成を選択すると、自動的に構成に応じたインストール手順が表示されます。

Zabbix公式サイト - パッケージインストールの説明01

MySQLのインストール

データベースの準備に関しては、Zabbix公式サイト内では語られておらず、各々が考えてデータベースを準備する必要があります。以下MySQL(MariaDB)を準備する場合を例示します。

dnfコマンドでMariaDBをインストールします。

dnf install mariadb-server

MariaDBを起動します。

systemctl enable mariadb.service --now

疎通確認の意味を込めて、データベース一覧を取得できる事を確認します。

[root@rocky084 ~]# mysql -uroot -e 'show databases'
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+

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

以降は公式マニュアル通りの手順で差し支えございません。以降、Rocky Linux 8.4, MySQL, Apacheの場合の日本語訳を掲載します。

Zabbixが格納されたリポジトリを有効にします。

rpm -Uvh https://repo.zabbix.com/zabbix/5.4/rhel/8/x86_64/zabbix-release-5.4-1.el8.noarch.rpm
dnf clean all

必要なパッケージ群をインストールします。以下で例示しているパッケージ群はCentOS, MySQL, Apacheの場合です。PostgreSQLなど例と異なる構成を採用する場合は適宜の変更が必要です。

dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-agent

データベースを作成します。以下の例はMySQLのzabbixユーザのパスワードを「password」としていますが、セキュリティポリシー等に抵触する場合は適宜変更してください。

mysql -uroot << EOF
create database zabbix character set utf8 collate utf8_bin;
create user zabbix@localhost identified by 'password';
grant all privileges on zabbix.* to zabbix@localhost;
EOF

データベース内に初期設定となるテーブルなどを作成します。zabbixユーザのパスワードを「password」としていますが、前述の設定で例と異なるパスワードを使用している場合は適宜変更して下さい。

zcat /usr/share/doc/zabbix-sql-scripts/mysql/create.sql.gz | mysql -uzabbix -ppassword zabbix

設定ファイルにてZabbixサーバがMySQLへ接続する時のパスワードを定義します。設定ファイルをviなどで開き、パスワードを編集します。

# vi /etc/zabbix/zabbix_server.conf

### Option: DBPassword
#       Database password.
#       Comment this line if no password is used.
#
# Mandatory: no
# Default:
# DBPassword=
DBPassword=password

Zabbixを起動します。

systemctl restart zabbix-server zabbix-agent httpd php-fpm
systemctl enable zabbix-server zabbix-agent httpd php-fpm

Zabbixが正常に起動したかどうかを確かめるため、http://localhost/zabbix/への疎通を確認します。

[root@centos84 ~]# curl -I http://localhost/zabbix/
HTTP/1.1 302 Found
Date: Sat, 28 Aug 2021 03:33:35 GMT
Server: Apache/2.4.37 (rocky)
X-Powered-By: PHP/7.2.24
Location: setup.php
Content-Type: text/html; charset=UTF-8

初回アクセス

ブラウザで以下URLを入力します。

 http://<ip_address>/zabbix/

初回アクセス時は設定画面へと302リダイレクトされます。「Next Step」を押下します。

Zabbix パッケージインストールの過程01

requimentを満たしているかどうかの確認画面です。もし、NGがあればNG項目を修正します。全部OKの場合は「Next Step」を押下する事ができます。

Zabbix パッケージインストールの過程02

データベースへの接続パスワードを入力し「Next Step」を押下します。ここで示した手順例の場合ならば、接続パスワードは「password」になります。

Zabbix パッケージインストールの過程03

そのまま「Next Step」を押下します。

Zabbix パッケージインストールの過程04

「タイムゾーン」欄に「(UTC+09:00) Asia/Tokyo」を指定し、「Next Step」を押下します。

Zabbix パッケージインストールの過程05

確認画面です。設定値を最終確認し、「Next Step」を押下します。

Zabbix パッケージインストールの過程06

「Finish」を押下します。

Zabbix パッケージインストールの過程07

初回ログイン

初期ユーザ「Admin」、初期パスワード「zabbix」でログインします。

Zabbix パッケージインストールのログイン前

ログインが完了すると以下のような画面が表示されます。

Zabbix パッケージインストールのログイン後

仮想アプライアンス

仮想アプライアンスのダウンロード

Zabbix公式サイト ダウンロードページ」にて、「Zabbix Appliance」を選びます。

Zabbix Applianceのダウンロード01

何種類かのイメージファイルが用意されてますので、仮想環境に合わせてイメージファイルをダウンロードします。このページでは多数派の可能性が高いOVF形式の使い方について説明します。

Zabbix Applianceのダウンロード02

仮想アプライアンスのインポート

ダウンロードしたtar.gzファイルを適宜展開します。

Zabbix Applianceの展開

OVFファイルを仮想環境に合わせてインポートします。

Zabbix Applianceのインポート01

以下はOracle Virtual Boxを使用した場合のスクリーンショットです。メモリ、CPUはデフォルト値からの変更が可能です。

Zabbix Applianceのインポート02

仮想マシンの起動

仮想マシンを起動します。システムユーザ「root」、パスワード「zabbix」でログインします。

Zabbix Applianceへのシステムログイン

DHCPの環境の場合は自動的にIPアドレスが付与されます。付与されたIPアドレスは以下コマンドで確認可能です。

ip addr show

Zabbix ApplianceのIPアドレス確認(DHCPの場合)

IPアドレスの付与

DHCPによる運用ができない場合はstaticにIPアドレスを付与することもできます。

ifcfg-eth0を以下のように編集します。BOOTPROTOをdhcpからnoneに変更し、末尾に4行を追加します。

# vi /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE="eth0"
BOOTPROTO=none
NM_CONTROLLED="no"
PERSISTENT_DHCLIENT=1
ONBOOT="yes"
TYPE=Ethernet
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME="eth0"
IPADDR=10.0.2.50
PREFIX=24
GATEWAY=10.0.2.2
DNS1=10.0.2.2

設定を反映させるにはnetworkを再起動させます。

systemctl restart network

設定が反映された事を確認します。

Zabbix ApplianceのIPアドレス確認(静的に設定する場合)

IPアドレスの付与

phpのタイムゾーン設定を編集します。

# vi /etc/php-fpm.d/zabbix.conf

php_value[max_execution_time] = 300
php_value[memory_limit] = 128M
php_value[post_max_size] = 16M
php_value[upload_max_filesize] = 2M
php_value[max_input_time] = 300
php_value[max_input_vars] = 10000
php_value[date.timezone] = Asia/Tokyo

初回ログイン

ブラウザで以下URLを入力します。

パッケージ版のURLは「http://<ip_address>/zabbix/」ですが、コンテナ版のURLはhttp://<ip_address>/」です。

 http://<ip_address>/

初期ユーザ「Admin」、初期パスワード「zabbix」でログインできます。

Zabbix Applianceへのブラウザ操作01

ログインが完了すると、以下のような画面になります。

Zabbix Applianceへのブラウザ操作02

コンテナの利用

Dockerのインストール」などを参考にしつつ、Docker Composeがインストール済である事が前提条件です。

まず、公式のGitHubをクローンします。以下コマンド例はタグ5.0をクローンしていますが、適宜、最新バージョンをクローンするよう修正ください。

git clone https://github.com/zabbix/zabbix-docker -b 5.0

クローンするとDocker Compose用のyamlファイルがいくつか準備されている事が分かります。

[root@centos82 zabbix-docker]# ls -l | grep yaml
-rw-r--r-- 1 root root 11459  9月  3 08:27 docker-compose_v3_alpine_mysql_latest.yaml
-rw-r--r-- 1 root root 11972  9月  3 08:27 docker-compose_v3_alpine_mysql_local.yaml
-rw-r--r-- 1 root root 12179  9月  3 08:27 docker-compose_v3_alpine_pgsql_latest.yaml
-rw-r--r-- 1 root root 12688  9月  3 08:27 docker-compose_v3_alpine_pgsql_local.yaml
-rw-r--r-- 1 root root 11462  9月  3 08:27 docker-compose_v3_centos_mysql_latest.yaml
-rw-r--r-- 1 root root 11996  9月  3 08:27 docker-compose_v3_centos_mysql_local.yaml
-rw-r--r-- 1 root root 12179  9月  3 08:27 docker-compose_v3_centos_pgsql_latest.yaml
-rw-r--r-- 1 root root 12712  9月  3 08:27 docker-compose_v3_centos_pgsql_local.yaml
-rw-r--r-- 1 root root 11244  9月  3 08:27 docker-compose_v3_ubuntu_mysql_latest.yaml
-rw-r--r-- 1 root root 11770  9月  3 08:27 docker-compose_v3_ubuntu_mysql_local.yaml
-rw-r--r-- 1 root root 11960  9月  3 08:27 docker-compose_v3_ubuntu_pgsql_latest.yaml
-rw-r--r-- 1 root root 12485  9月  3 08:27 docker-compose_v3_ubuntu_pgsql_local.yaml
-rw-r--r-- 1 root root 12170  9月  3 08:27 kubernetes.yaml

これらyamlファイルを実行すると、以下のようなZabbix環境が自動的に構築されます。

yaml 構成
docker-compose_v3_alpine_mysql_latest.yaml OSはAlpine LinuxでデータベースはMySQLの構成であるコンテナをダウンロードします。予めビルド済の構成です。
docker-compose_v3_alpine_mysql_local.yaml OSはAlpine LinuxでデータベースはMySQLの構成であるコンテナをダウンロードします。ローカルでビルドします。
docker-compose_v3_alpine_pgsql_latest.yaml OSはAlpine LinuxでデータベースはPostgreSQLの構成であるコンテナをダウンロードします。予めビルド済の構成です。
docker-compose_v3_alpine_pgsql_local.yaml OSはAlpine LinuxでデータベースはPostgreSQLの構成であるコンテナをダウンロードします。ローカルでビルドします。
docker-compose_v3_centos_mysql_latest.yaml OSはCentOSでデータベースはMySQLの構成であるコンテナをダウンロードします。予めビルド済の構成です。
docker-compose_v3_centos_mysql_local.yaml OSはCentOSでデータベースはMySQLの構成であるコンテナをダウンロードします。ローカルでビルドします。
docker-compose_v3_centos_pgsql_latest.yaml OSはCentOSでデータベースはPostgreSQLの構成であるコンテナをダウンロードします。予めビルド済の構成です。
docker-compose_v3_centos_pgsql_local.yaml OSはCentOSでデータベースはPostgreSQLの構成であるコンテナをダウンロードします。ローカルでビルドします。
docker-compose_v3_ubuntu_mysql_latest.yaml OSはUbuntuでデータベースはMySQLの構成であるコンテナをダウンロードします。予めビルド済の構成です。
docker-compose_v3_ubuntu_mysql_local.yaml OSはUbuntuでデータベースはMySQLの構成であるコンテナをダウンロードします。ローカルでビルドします。
docker-compose_v3_ubuntu_pgsql_latest.yaml OSはUbuntuでデータベースはPostgreSQLの構成であるコンテナをダウンロードします。予めビルド済の構成です。
docker-compose_v3_ubuntu_pgsql_local.yaml OSはUbuntuでデータベースはPostgreSQLの構成であるコンテナをダウンロードします。ローカルでビルドします。

Zabbix公式は用途に合わせて様々なyamlファイルを提供してくれましたが、個人的には軽量なaplineかつローカルでわざわざビルドする必要もないので、docker-compose_v3_alpine_mysql_latest.yamlかdocker-compose_v3_alpine_pgsql_latest.yamlのどちらかで良いでしょう。MySQLかPostgreSQLかのどちらか得意な方を選べば良いと思います。

さて、このyamlファイルを元にコンテナ環境を構成するには以下のようなコマンドを実行します。

docker-compose -f ./docker-compose_v3_alpine_mysql_latest.yaml up -d

しばらく待つと以下のようなコンテナが起動しています。tcp80でListenしている事も分かります。

[root@centos82 zabbix-docker]# docker container ls
CONTAINER ID        IMAGE                                              COMMAND                  CREATED             STATUS                    PORTS                                            NAMES
331aca73b8ab        zabbix/zabbix-web-nginx-mysql:alpine-5.0-latest    "docker-entrypoint.sh"   57 minutes ago      Up 57 minutes (healthy)   0.0.0.0:8443->8443/tcp, 0.0.0.0:8081->8080/tcp   zabbix-docker_zabbix-web-nginx-mysql_1
ec36a5bf801e        zabbix/zabbix-web-apache-mysql:alpine-5.0-latest   "docker-entrypoint.s…"   57 minutes ago      Up 57 minutes (healthy)   0.0.0.0:80->8080/tcp, 0.0.0.0:443->8443/tcp      zabbix-docker_zabbix-web-apache-mysql_1
558be35aeb3e        zabbix/zabbix-proxy-mysql:alpine-5.0-latest        "/sbin/tini -- /usr/…"   57 minutes ago      Up 57 minutes             0.0.0.0:10071->10051/tcp                         zabbix-docker_zabbix-proxy-mysql_1
be12aa4f7c5b        zabbix/zabbix-agent:alpine-5.0-latest              "/sbin/tini -- /usr/…"   57 minutes ago      Up 57 minutes                                                              zabbix-docker_zabbix-agent_1
ede1bcb6bb14        zabbix/zabbix-proxy-sqlite3:alpine-5.0-latest      "/sbin/tini -- /usr/…"   57 minutes ago      Up 57 minutes             0.0.0.0:10061->10051/tcp                         zabbix-docker_zabbix-proxy-sqlite3_1
b8e5b78b5cba        zabbix/zabbix-server-mysql:alpine-5.0-latest       "/sbin/tini -- /usr/…"   57 minutes ago      Up 57 minutes             0.0.0.0:10051->10051/tcp                         zabbix-docker_zabbix-server_1
90b874e76866        zabbix/zabbix-snmptraps:alpine-5.0-latest          "/usr/bin/supervisor…"   57 minutes ago      Up 57 minutes             0.0.0.0:162->1162/udp                            zabbix-docker_zabbix-snmptraps_1
86c49b27b505        zabbix/zabbix-java-gateway:alpine-5.0-latest       "docker-entrypoint.s…"   57 minutes ago      Up 57 minutes                                                              zabbix-docker_zabbix-java-gateway_1
6f0e4fe33a5d        mysql:8.0                                          "docker-entrypoint.s…"   57 minutes ago      Up 57 minutes                                                              zabbix-docker_mysql-server_1

ブラウザで以下URLを入力します。

パッケージ版のURLは「http://<ip_address>/zabbix/」ですが、コンテナ版のURLはhttp://<ip_address>/」です。

 http://<ip_address>/

初期ユーザ「Admin」、初期パスワード「zabbix」でログインできます。

コンテナ版Zabbixへのブラウザログイン01

ログインが完了すると、以下のような画面になります。

コンテナ版Zabbixへのブラウザログイン02

タイトルとURLをコピーしました