Zabbixはオープンソースの統合監視ツールのひとつです。以前は、Nagios, Xymonなどの多数の統合監視ツールが乱立しているような状況でしたが、近年ではZabbix一強になってしまった印象があります。Zabbixは痒い所に手が届くツールで作り込み次第では殆どの監視ができてしまうのが特徴ですが、作り込みに大きな手間隙が必要であるデメリットもあります。そんなZabbixのインストール方法を紹介します。
インストール方法概要
当サイトでは以下3通りのインストール方法を紹介します。
- パッケージインストール
- OVAイメージの利用(仮想アプライアンス)
- コンテナの利用
パッケージインストール
構成検討
「Zabbix ダウンロードページ」へアクセスします。すると、OS, Apache, Nginx, PostgreSQL, MySQLなどの複数の構成を選択できます。
これら構成を選択すると、自動的に構成に応じたインストール手順が表示されます。
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」を押下します。
requimentを満たしているかどうかの確認画面です。もし、NGがあればNG項目を修正します。全部OKの場合は「Next Step」を押下する事ができます。
データベースへの接続パスワードを入力し「Next Step」を押下します。ここで示した手順例の場合ならば、接続パスワードは「password」になります。
そのまま「Next Step」を押下します。
「タイムゾーン」欄に「(UTC+09:00) Asia/Tokyo」を指定し、「Next Step」を押下します。
確認画面です。設定値を最終確認し、「Next Step」を押下します。
「Finish」を押下します。
初回ログイン
初期ユーザ「Admin」、初期パスワード「zabbix」でログインします。
ログインが完了すると以下のような画面が表示されます。
仮想アプライアンス
仮想アプライアンスのダウンロード
「Zabbix公式サイト ダウンロードページ」にて、「Zabbix Appliance」を選びます。
何種類かのイメージファイルが用意されてますので、仮想環境に合わせてイメージファイルをダウンロードします。このページでは多数派の可能性が高いOVF形式の使い方について説明します。
仮想アプライアンスのインポート
ダウンロードしたtar.gzファイルを適宜展開します。
OVFファイルを仮想環境に合わせてインポートします。
以下はOracle Virtual Boxを使用した場合のスクリーンショットです。メモリ、CPUはデフォルト値からの変更が可能です。
仮想マシンの起動
仮想マシンを起動します。システムユーザ「root」、パスワード「zabbix」でログインします。
DHCPの環境の場合は自動的にIPアドレスが付与されます。付与されたIPアドレスは以下コマンドで確認可能です。
ip addr show
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
設定が反映された事を確認します。
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」でログインできます。
ログインが完了すると、以下のような画面になります。
コンテナの利用
「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」でログインできます。
ログインが完了すると、以下のような画面になります。