本記事では RHEL 8.x および CentOS 8.x への Zabbix 4.4 のインストールについて解説します。Zabbix公式リポジトリでRHEL/CentOS 8.x向けパッケージが提供されていますが、インストール時に注意が必要となる点がいくつかあります。基本的にCentOS 8.1環境を使用して説明しますが、 RHEL 8.x で注意が必要な点については補足事項として記載します。
1. 構成
本記事では以下の構成でインストールを行います。
- CentOS 8.1 (1911)
- Zabbix 4.4.5
- Apache httpd 2.4.37 (OS同梱パッケージ)
- PostgreSQL 10.6 (OS同梱パッケージ)
- ZabbixJavaGateway (JMX監視モジュール)
- SNMPTT (SNMPTRAP監視モジュール) ※
※ SNMPTT は RHEL/CentOS 8向けパッケージが提供されていないため、 RHEL 7向けパッケージを流用します。
2. 構築の流れ
本記事ではRPMパッケージを使用して、以下の手順でインストールを行います。
- パッケージのインストール
- データベース作成
- 設定ファイルの編集
- Zabbixサーバ、エージェント、その他サービスの起動
- Webフロントエンドから初期設定
3. インストール前の準備
SELinuxが有効になっている場合はdisabledもしくはpermissiveにします。また、firewalldの設定でZabbixサーバへの80、10051番ポートへのアクセスを許可しておきます。
4. パッケージのインストール
Zabbix本体および依存パッケージを各RPMリポジトリからyumコマンドでインストールします。本記事では以下のリポジトリを使用します。
4.1 PostgreSQL のインストール
OSに標準で含まれるPostgreSQL 10.6をインストールします。
# dnf -y install postgresql postgresql-server
4.2 Zabbix のインストール
Zabbixサーバ、Webフロントエンド、Zabbixエージェント、ZabbixJavaGatewayをインストールします。
なお、RHEL/CentOS 8.1ではzabbix-server-pgsqlパッケージが依存しているlibssh2パッケージがリポジトリから削除されているため、インストールに失敗します。このため、libssh2のみRHEL/CentOS 8.0のリポジトリからrpmをインストールしておく必要があります。
# rpm -Uvh http://mirror.centos.org/centos/8.0.1905/AppStream/x86_64/os/Packages/libssh2-1.8.0-8.module_el8.0.0+189+f9babebb.1.x86_64.rpm # rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/8/x86_64/zabbix-release-4.4-1.el8.noarch.rpm # dnf clean all # dnf -y install zabbix-server-pgsql zabbix-web-pgsql zabbix-web-japanese zabbix-apache-conf zabbix-agent # dnf -y install zabbix-java-gateway
4.3 SNMPTT のインストール
RHEL/CentOS 7.x までの場合はEPELリポジトリのSNMPTTパッケージを利用していました。しかし、現時点では RHEL/CentOS 8 用 EPEL リポジトリには SNMPTT パッケージは含まれていません。このため、暫定的に RHEL/CentOS 7.x 向けの SNMPTT パッケージを使用してインストールを行います。
また、RHEL/CentOS 8からnet-snmp-perlパッケージがリポジトリから削除されたため、net-snmp-perlを利用する機能は使用できないためご注意ください(※必要な場合は net-snmp の SRPM パッケージから rpm をビルドすることが可能です)。
最初にRHEL/CentOS 8向けEPELリポジトリを有効にします。
# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
CentOSのPowerToolsリポジトリに含まれるperl-Digest-SHA1およびperl-IO-stringyが必要となるため、PowerToolsリポジトリを有効にしてsnmpttパッケージのインストールを行います。
# dnf --enablerepo=PowerTools -y install https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/s/snmptt-1.4-0.9.beta2.el7.noarch.rpm
(注) RHEL 8.xの場合は上記のパッケージはCodeReady Linux Builder for x86_64 (codeready-builder-for-rhel-8-x86_64-rpms)リポジトリに含まれるため、以下のようにしてリポジトリを有効にしてください。
# subscription-manager repos --enable=codeready-builder-for-rhel-8-x86_64-rpms # dnf -y install https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/s/snmptt-1.4-0.9.beta2.el7.noarch.rpm
あわせてnet-snmp、net-snmp-utilsおよびperl-Sys-Syslogパッケージをインストールします。
# dnf -y install net-snmp net-snmp-utils perl-Sys-Syslog
5. データベースの作成
データベースの初期化を行い、Zabbixのデータベースを作成します。
# PGSETUP_INITDB_OPTIONS="-E utf8 --no-locale" /usr/bin/postgresql-setup --initdb * Initializing database in '/var/lib/pgsql/data' * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log
pg_hba.confを編集し、TCP接続時のパスワード認証を有効にします。
# vi /var/lib/pgsql/data/pg_hba.conf # IPv4 local connections: #host all all 127.0.0.1/32 ident host all all 127.0.0.1/32 md5 # IPv6 local connections: #host all all ::1/128 ident host all all ::1/128 md5
PostgreSQLを起動し、ユーザおよびデータベースを作成します。
# systemctl start postgresql # sudo -u postgres createuser --pwprompt zabbix Enter password for new role: Enter it again: # sudo -u postgres createdb -O zabbix zabbix # zcat /usr/share/doc/zabbix-server-pgsql*/create.sql.gz | sudo -u zabbix psql zabbix
6. Zabbixサーバ設定
ZabbixサーバのDB設定、ZabbixJavaGateway、Zabbixエージェント、フロントエンドのタイムゾーン、およびSNMPTTの設定を行います。
# vi /etc/zabbix/zabbix_server.conf DBName=zabbix DBUser=zabbix DBPassword=<パスワード> JavaGateway=127.0.0.1 JavaGatewayPort=10052 StartJavaPollers=1 SNMPTrapperFile=/var/log/snmptt/snmptt.log StartSNMPTrapper=1
# vi /etc/zabbix/zabbix_agentd.conf Server=127.0.0.1 ServerActive=127.0.0.1 Hostname=(Zabbixエージェントのホスト名) ※Zabbixサーバ上のホストの設定と一致させる必要があります
# vi /etc/php-fpm.d/zabbix.conf php_value[date.timezone] = Asia/Tokyo
6.1 SNMPTTの設定
snmptrapdの起動オプションを変更します。
# vi /etc/sysconfig/snmptrapd OPTIONS="-m +ALL -Lsd -On"
snmptrapd.confに、受信したSNMPトラップをSNMPTTに送る設定を追加します。
# vi /etc/snmp/snmptrapd.conf authCommunity log,execute,net public traphandle default /usr/sbin/snmptthandler
snmptthandler-embeddedを使用する場合はtraphandleの代わりに以下を追加します。なお、snmptthandler-embeddedを使用する場合はnet-snmp-perlが必要になります。
perl do "/usr/share/snmptt/snmptthandler-embedded"
snmptt.iniを以下のように変更します。
# vi /etc/snmp/snmptt.ini #mode = standalone mode = daemon #net_snmp_perl_enable = 0 (net-snmp-perlを使用する場合のみ) net_snmp_perl_enable = 1 #net_snmp_perl_best_guess = 0 (net-snmp-perlを使用する場合のみ) net_snmp_perl_best_guess = 2 #sleep = 5 sleep = 1
snmptt.conf に下記を記述すると、すべてのSNMPトラップを「Unknown trap」として受け取り、snmptt.logファイルに出力します。実際には監視したいトラップのOIDごとに設定を行います。
# vi /etc/snmp/snmptt.conf EVENT general .* "Unknown trap" Normal FORMAT ZBXTRAP $aA $ar $*
SNMPTTおよびsnmptrapdの起動および自動起動を有効にします。
# systemctl enable --now snmptt snmptrapd
テストトラップを送信し、snmptt.logログファイルにトラップが出力されることを確認します。
# snmptrap -v 2c -c public 127.0.0.1 '' .1.3.6.1.4.1.8072.9999 .1.3.6.1.4.1.8072.9999 s 'Hello' # cat /var/log/snmptt/snmptt.log Tue Feb 4 15:43:56 2020 .1.3.6.1.4.1.8072.9999 Normal "Unknown trap" localhost - ZBXTRAP 127.0.0.1 127.0.0.1 Hello
7. Zabbixサーバの起動
Zabbixサーバおよび必要なその他サービスを起動し、同時に自動起動設定も行います。
# systemctl enable --now zabbix-server zabbix-agent zabbix-java-gateway httpd php-fpm
8. Webフロントエンドの設定
Webブラウザから http://(Zabbixサーバのホスト名orIPアドレス)/zabbix にアクセスし、画面の指示に従って初期設定を行います。アクセスできない場合はSELinuxおよびfirewalldの設定が正しく行われているかを確認してください。
設定完了後表示されるログイン画面で初期管理者ユーザ/パスワード(Admin/zabbix)でログインするとダッシュボード画面が表示されます。
右上のユーザープロファイルアイコンから、UserタブのLanguageを「Japanese (ja_JP)」に変更し、「Update」ボタンをクリックすると表示が日本語に切り替わります。
以上でRHEL/CentOS 8.xへのZabbixサーバのインストールは完了です。
9. おわりに
今回はRHEL/CentOS 8.xへのZabbixサーバのインストールについて解説しました。RHEL/CentOS 8.xはまだリリースされてから日が浅く、廃止されたパッケージなどもあるため、現時点ではやや手順が煩雑になります。これらの課題は今後のZabbixのリリースで解消していくものと思われます。