RHEL/CentOS 8.xへのZabbixのインストール

本記事では 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パッケージを使用して、以下の手順でインストールを行います。

  1. パッケージのインストール
  2. データベース作成
  3. 設定ファイルの編集
  4. Zabbixサーバ、エージェント、その他サービスの起動
  5. 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のリリースで解消していくものと思われます。