Zabbix設定 · 9 min read · Oct 09, 2025

Rocky Linux 9にZabbixサーバーとクライアントをインストールおよび構成する方法

Zabbixは、ネットワーク、サーバー、仮想マシン、クラウドサービスなどのITインフラストラクチャを監視するための無料でオープンソースの監視ソリューションです。そのコアはCとJavaで書かれており、フロントエンドはPHPで書かれています。フロントエンドは、ネットワークの利用状況、CPU負荷、ディスクスペースなどのメトリクスを追跡および監視し、カスタマイズされたトリガーに基づいて通知を送信するためのWebベースのインターフェースを提供します。

Zabbixはクライアント/サーバーモデルとして動作します。さまざまなオペレーティングシステム用のクライアントまたはエージェントがサーバーに接続してデータを送信します。エージェントのないシステムの場合、Zabbixは、Simple Network Management Protocol (SNMP)やIntelligent Platform Management Interface (IPMI)などの一般的な監視プロトコルを使用するオプションを提供します。

このチュートリアルでは、Rocky Linux 9サーバーにZabbixサーバーとクライアントをインストールする方法を学びます。

前提条件

  • Rocky Linux 9を実行している2台のサーバー。1台はサーバーとして機能し、もう1台はサーバーを使用して監視するクライアントです。
  • sudo権限を持つ非rootユーザー。
  • サーバーを指す完全修飾ドメイン名 (FQDN) 例えば zabbix.example.com
  • Amazon SESやMailgunなどのメールサービスを持つSMTPアカウント。
  • すべてが更新されていること。 $ sudo dnf update
  • チュートリアルとZabbixサーバーを実行するために必要な基本的なパッケージがいくつか必要です。これらのいくつかはすでにサーバーにインストールされている場合があります。 $ sudo dnf install wget curl nano unzip yum-utils policycoreutils-python-utils -y

ステップ1 - ファイアウォールの構成

最初のステップはファイアウォールを構成することです。Rocky LinuxはFirewalldファイアウォールを使用します。ファイアウォールの状態を確認します。

$ sudo firewall-cmd --state
running

ファイアウォールは異なるゾーンで動作し、パブリックゾーンがデフォルトで使用されます。ファイアウォールでアクティブなすべてのサービスとポートをリストします。

$ sudo firewall-cmd --permanent --list-services

次の出力が表示されるはずです。

cockpit dhcpv6-client ssh

Zabbixサーバーがエージェントと接続するために必要なポート10050と10051を開きます。

$ sudo firewall-cmd --add-port={10051/tcp,10050/tcp} --permanent

HTTPおよびHTTPSポートを許可します。

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

ファイアウォールの状態を再確認します。

$ sudo firewall-cmd --permanent --list-all

似たような出力が表示されるはずです。

public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: cockpit dhcpv6-client http https ssh
  ports: 10051/tcp 10050/tcp
  protocols:
  forward: yes
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

変更を有効にするためにファイアウォールを再読み込みします。

$ sudo firewall-cmd --reload

ステップ2 - SELinuxを許可モードに設定

SELinuxを許可モードで動作するように構成します。このモードでは、SELinuxはプロセスをブロックせず、すべてを監査ログファイルに記録します。後でSELinuxルールを設定するためにこれを使用します。

$ sudo setenforce 0 && sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

SELinuxの状態を確認します。

$ sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   permissive
Mode from config file:          permissive
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual (secure)
Max kernel policy version:      33

ステップ3 - NginxおよびPHPリポジトリの構成

Zabbixパッケージは自動的にPHPとNginxをインストールします。しかし、古いバージョンを取得します。したがって、プロセスが最新のバージョンをインストールすることを確認する必要があります。

ファイル /etc/yum.repos.d/nginx.repo を編集のために作成して開きます。

$ sudo nano /etc/yum.repos.d/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-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

完了したら、Ctrl + Xを押してファイルを保存し、プロンプトが表示されたらYを入力します。

Nginxメインラインリポジトリを有効にします。

$ sudo dnf config-manager --enable nginx-mainline

次に、PHPリポジトリを構成する必要があります。

最初のステップはEpelリポジトリを取得することです。

$ sudo dnf install epel-release -y

次に、Remiリポジトリをインストールします。

$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm

利用可能なPHPストリームを確認します。

$ dnf module list php -y
Name    Stream              Profiles                                      Summary
php     8.1                 common [d], devel, minimal                    PHP scripting language

Remi's Modular repository for Enterprise Linux 9 - x86_64
Name    Stream              Profiles                                      Summary
php     remi-7.4            common [d], devel, minimal                    PHP scripting language
php     remi-8.0            common [d], devel, minimal                    PHP scripting language
php     remi-8.1            common [d], devel, minimal                    PHP scripting language
php     remi-8.2            common [d], devel, minimal                    PHP scripting language
php     remi-8.3            common [d], devel, minimal                    PHP scripting language

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

デフォルトバージョンは8.1です。このチュートリアル執筆時点で、ZabbixはPHP 8.2と互換性があります。したがって、RemiのPHP 8.2リポジトリを有効にします。次のZabbixバージョンはPHP 8.3をサポートするため、Zabbixバージョンが6.0.26以上の場合はそれを有効にできます。

$ sudo dnf module reset php -y
$ sudo dnf module enable php:remi-8.2

これでZabbixのインストールに進むことができます。

ステップ4 - Zabbixサーバーのインストール

ZabbixパッケージはデフォルトでEPELリポジトリに提供されています。インストールを進める前に、それらを無効にする必要があります。 /etc/yum.repos.d/epel.repo を編集のために開き、[epel] セクションの下に次の行を追加します。

[epel]
...
excludepkgs=zabbix*

完了したら、Ctrl + Xを押してファイルを保存し、プロンプトが表示されたらYを入力します。

Zabbixの最新バージョンは6.4.xですが、LTS(長期サポート)リリースを使用することにします。これは本番環境にとってはるかに安定しています。

Zabbixのリポジトリをインストールします。

$ sudo rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm

すべてのRPMキャッシュを削除します。

$ sudo dnf clean all

Zabbixサーバー、フロントエンド、およびエージェントをインストールします。私たちは目的のためにPostgreSQLサーバーを使用するため、zabbix-web-pgsqlパッケージが必要です。MySQL/MariaDB/Perconaサーバーを使用している場合は、zabbix-web-mysqlパッケージをインストールする必要があります。

$ sudo dnf install zabbix-server-pgsql zabbix-web-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent

ステップ5 - PostgreSQLのインストールと構成

ZabbixはPostgreSQL 13以上で動作します。Rocky Linux 9にはデフォルトでPostgreSQL 13が付属しています。ただし、チュートリアルではPostgreSQL 16を使用します。

PostgreSQLリポジトリRPMファイルをインストールします。

$ sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

組み込みのPostgreSQLモジュールを無効にします。

$ sudo dnf -qy module disable postgresql

次に、以下のコマンドを使用してPostgreSQLをインストールできます。

$ sudo dnf install -y postgresql16-server postgresql16-contrib

データベースを初期化します。

$ sudo /usr/pgsql-16/bin/postgresql-16-setup initdb

PostgreSQLサービスを有効にします。

$ sudo systemctl enable postgresql-16

PostgreSQLサービスを開始します。

$ sudo systemctl start postgresql-16

PostgreSQLサービスの状態を確認します。

$ sudo systemctl status postgresql-16
? postgresql-16.service - PostgreSQL 16 database server
     Loaded: loaded (/usr/lib/systemd/system/postgresql-16.service; enabled; preset: disabled)
     Active: active (running) since Thu 2024-01-18 14:54:46 UTC; 10s ago
       Docs: https://www.postgresql.org/docs/16/static/
    Process: 3407 ExecStartPre=/usr/pgsql-16/bin/postgresql-16-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
   Main PID: 3412 (postgres)
      Tasks: 7 (limit: 24694)
     Memory: 17.4M
        CPU: 117ms
     CGroup: /system.slice/postgresql-16.service
             ??3412 /usr/pgsql-16/bin/postgres -D /var/lib/pgsql/16/data/
             ??3413 "postgres: logger "
             ??3414 "postgres: checkpointer "
             ??3415 "postgres: background writer "
             ??3417 "postgres: walwriter "
             ??3418 "postgres: autovacuum launcher "
             ??3419 "postgres: logical replication launcher "

Zabbixデータベースユーザーを作成します。

$ sudo -u postgres createuser --pwprompt zabbix

パスワードの入力を求められます。

Enter password for new role: 
Enter it again: 

Zabbixデータベースを作成します。

$ sudo -u postgres createdb -O zabbix zabbix

初期スキーマとデータをインポートします。再度パスワードの入力を求められます。

zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix

このプロセスは数分かかる場合があります。

ファイル /etc/zabbix/zabbix_server.conf を編集のために開きます。

$ sudo nano /etc/zabbix/zabbix_server.conf

変数 DBPassword を見つけ、前のステップで選択したパスワードに設定するために、前のハッシュ (#) を削除してコメントを解除します。

DBPassword=psqlpassword

完了したら、Ctrl + Xを押してファイルを保存し、プロンプトが表示されたらYを入力します。

Zabbixサーバーとエージェントサービスを開始および有効にします。

$ sudo systemctl enable zabbix-server zabbix-agent --now

ステップ6 - PHPの構成

ZabbixはPHPとNginxの構成ファイルをインストールしますが、使用する前にいくつかの編集が必要です。

最初に、/etc/php-fpm.d/zabbix.conf を編集のために開きます。

$ sudo nano /etc/php-fpm.d/zabbix.conf

user = apachegroup = apache の値を nginx に変更します。

user = nginx
group = nginx

これは、公式リポジトリからNginxを使用しているため、nginxユーザーで実行され、配布版のNginxが実行されるapacheではないためです。

他のPHP関連の値を編集したり、カスタム定義を追加したりすることもできます。完了したら、Ctrl + Xを押してファイルを保存し、プロンプトが表示されたらYを入力します。

PHP-FPMサービスを開始および有効にします。

$ sudo systemctl enable php-fpm --now

ステップ7 - SSLのインストール

SSL証明書を生成するためにCertbotをインストールする必要があります。それにはSnapdパッケージインストーラーを使用します。Rocky LinuxにはSnapdが付属していないため、Snapdインストーラーをインストールします。EPEL(Enterprise Linux用の追加パッケージ)リポジトリが必要ですが、ステップ3で既にインストールしたため、直接進むことができます。

Snapdをインストールします。

$ sudo dnf install -y snapd

Snapサービスを有効にして開始します。

$ sudo systemctl enable snapd --now

Snapコアパッケージをインストールし、Snapdのバージョンが最新であることを確認します。

$ sudo snap install core && sudo snap refresh core

Snapdが機能するために必要なリンクを作成します。

$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh

Certbotをインストールします。

$ sudo snap install --classic certbot

次のコマンドを使用して、Certbotコマンドが/usr/binディレクトリで実行できるようにシンボリックリンクを作成します。

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Certbotが正しく機能しているか確認します。

$ certbot --version
certbot 2.8.0

次のコマンドを実行してSSL証明書を生成します。

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d zabbix.example.com

上記のコマンドは、サーバーの /etc/letsencrypt/live/zabbix.example.com ディレクトリに証明書をダウンロードします。

Diffie-Hellmanグループ証明書を生成します。

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Certbotの更新スケジューラーサービスを確認します。

$ sudo systemctl list-timers

snap.certbot.renew.service が実行予定のサービスの1つとして表示されます。

NEXT                        LEFT          LAST                        PASSED       UNIT                        ACTIVATES                 -------------------------------------------------------------------------------------------------------------------------------------    
Sat 2024-01-20 10:04:02 UTC 1min 32s left Sat 2024-01-20 08:52:11 UTC 1h 10min ago dnf-makecache.timer         dnf-makecache.service
Sun 2024-01-21 00:00:00 UTC 13h left      Sat 2024-01-20 00:00:10 UTC 10h ago      logrotate.timer             logrotate.service
Sat 2024-01-20 21:13:00 UTC 11h left      Sat 2024-01-20 08:19:11 UTC 1h 43min ago snap.certbot.renew.timer    snap.certbot.renew.service

プロセスのドライランを実行して、SSL更新が正常に機能しているか確認します。

$ sudo certbot renew --dry-run

エラーが表示されなければ、すべて設定完了です。証明書は自動的に更新されます。

ステップ8 - Nginxの構成

ZabbixはデフォルトのNginx構成ファイルをインストールします。SSL証明書を有効にするためのコードを追加するために編集する必要があります。また、listenポートを変更し、HTTPリンクをHTTPSにリダイレクトするためのコードを追加する必要があります。

ファイル /etc/nginx/conf.d/zabbix.conf を編集のために開きます。

$ sudo nano /etc/nginx/conf.d/zabbix.conf

ファイルが次のようになるようにコードを編集します。

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    http2 on;

    root /usr/share/zabbix;

    index index.php;

    access_log  /var/log/nginx/zabbix.access.log;
    error_log   /var/log/nginx/zabbix.error.log;

    ssl_certificate      /etc/letsencrypt/live/zabbix.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/zabbix.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/zabbix.example.com/chain.pem;

    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    location = /favicon.ico {
        log_not_found   off;
    }

    location / {
        try_files $uri $uri/ =404;
    }

    location /assets {
        access_log off;
        expires 10d;
    }

    location ~ \.ht {
        deny all;
    }

    location ~ /(api/|conf[^\.]|include|locale) {
        deny            all;
        return          404;
    }

    location /vendor {
        deny            all;
        return          404;
    }

    location ~ [^/\.php(/|$) {
        fastcgi_pass    unix:/run/php-fpm/zabbix.sock;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_index   index.php;

        fastcgi_param   DOCUMENT_ROOT   /usr/share/zabbix;
        fastcgi_param   SCRIPT_FILENAME /usr/share/zabbix$fastcgi_script_name;
        fastcgi_param   PATH_TRANSLATED /usr/share/zabbix$fastcgi_script_name;

        include fastcgi_params;
        fastcgi_param   QUERY_STRING    $query_string;
        fastcgi_param   REQUEST_METHOD  $request_method;
        fastcgi_param   CONTENT_TYPE    $content_type;
        fastcgi_param   CONTENT_LENGTH  $content_length;

        fastcgi_intercept_errors        on;
        fastcgi_ignore_client_abort     off;
        fastcgi_connect_timeout         60;
        fastcgi_send_timeout            180;
        fastcgi_read_timeout            180;
        fastcgi_buffer_size             128k;
        fastcgi_buffers                 4 256k;
        fastcgi_busy_buffers_size       256k;
        fastcgi_temp_file_write_size    256k;
    }
}

# enforce HTTPS
server {
    listen 80;
    listen [::]:80;
    server_name  zabbix.example.com;
    return 301   https://$host$request_uri;
}

完了したら、Ctrl + Xを押してファイルを保存し、プロンプトが表示されたらYを入力します。

ファイル /etc/nginx/nginx.conf を編集のために開きます。

$ sudo nano /etc/nginx/nginx.conf

include /etc/nginx/conf.d/*.conf; の前に次の行を追加します。

server_names_hash_bucket_size 64;

完了したら、Ctrl + Xを押してファイルを保存し、プロンプトが表示されたらYを入力します。

Nginx構成を確認します。

$ sudo nginx -t

Nginxサービスを開始および有効にします。

$ sudo systemctl enable nginx --now

ステップ9 - Zabbixフロントエンドにアクセス

Zabbixフロントエンドをインストールする前に、Nginxが /etc/zabbix/web ディレクトリにアクセスできるように権限を設定します。

$ sudo chown -R nginx:nginx /etc/zabbix/web

ブラウザでURL https://zabbix.example.com を開くと、次の画面が表示されます。

Zabbix Web Installer Home

次のステップボタンをクリックしてZabbixのインストールを完了します。次のページではシステム要件がチェックされ、すべてが満たされているか確認されます。

Zabbix System Requirements Check

問題がなければ、次のステップボタンをクリックして進みます。次に、データベースの資格情報を入力するように求められます。データベースTLS暗号化オプションのチェックを外してください。設定していないためです。

Zabbix Database details

次のステップボタンを押して進みます。Zabbixサーバーの名前を入力します。これはオプションですが、設定するとメニューバーやページタイトルに表示されます。

Zabbix Settings

次のステップボタンを押して進みます。すべての設定を確認するように求められます。

Zabbix Installation summary

すべてが問題なければ、次のステップボタンを押して進みます。インストールが成功したことを知らせるメッセージが表示されます。

Zabbix Installation Complete

完了ボタンをクリックしてプロセスを完了します。ログインページに移動します。

Zabbix Login Page

デフォルトのユーザー名はAdminで、パスワードはzabbixです。ログイン情報を入力し、サインインボタンをクリックしてZabbixダッシュボードにアクセスします。

Zabbix dashboard

ステップ10 - SELinuxの構成

HTTPデーモンがZabbixに接続できるようにします。

$ sudo setsebool -P httpd_can_connect_zabbix 1

ZabbixがすべてのTCPポートに接続できるようにします。

$ sudo setsebool -P zabbix_can_network on

HAマネージャーエラーを回避するために、daemons_enable_cluster_modeを有効にします。

$ sudo setsebool -P daemons_enable_cluster_mode on

監査ログを使用してカスタムSELinuxポリシーパッケージを作成します。

$ sudo grep "denied.*zabbix" /var/log/audit/audit.log | audit2allow -M zabbix_policy
****************** 重要 *********************  
このポリシーパッケージをアクティブにするには、次を実行してください:

semodule -i zabbix_policy.pp

作成したカスタムSELinuxポリシーパッケージをインストールします。

$ sudo semodule -i zabbix_policy.pp

データベースエラーをチェックするコマンドを実行します。

$ sudo sealert -a /var/log/audit/audit.log

多くのルールを適用するように提案されます。

次のコマンドを実行します。

$ sudo ausearch -c 'php-fpm' --raw | audit2allow -M my-phpfpm
$ sudo semodule -X 300 -i my-phpfpm.pp
$ sudo ausearch -c 'zabbix_agentd' --raw | audit2allow -M my-zabbixagentd
$ sudo semodule -X 300 -i my-zabbixagentd.pp

NginxがPostgreSQLにアクセスできるようにするためのポリシーを適用します。

$ sudo setsebool -P httpd_can_network_connect_db 1

外部ホストへの接続を許可するためのポリシーを適用します。

$ sudo setsebool -P httpd_can_network_connect 1

SELinuxを強制モードに設定します。

$ sudo setenforce 1 && sudo sed -i 's/^SELINUX=.*/SELINUX=enforcing/g' /etc/selinux/config

ステップ11 - リモートシステムにZabbixエージェントをインストール

Zabbixエージェントの主な仕事は、システムから情報を収集し、それを中央のZabbixサーバーに送信して分析することです。Rocky Linux 9システムにエージェントをインストールしますが、任意のディストリビューションで実行できます。

ステップ11.1 - リモートシステムのファイアウォールを構成

Zabbixエージェントがサーバーに接続できるようにポート10050を開きます。

$ sudo firewall-cmd --add-port=10050/tcp --permanent --zone=public
$ sudo firewall-cmd --reload

ステップ11.2 - Zabbixエージェントをインストール

ステップ4を繰り返す必要がありますが、最後のインストール文は除きます。つまり、/etc/yum.repos.d/epel.repoファイルを編集し、[epel]セクションに次の行を追加します。

[epel]
...
excludepkgs=zabbix*

次に、Zabbixリポジトリをインストールし、RPMキャッシュをクリーンアップします。

$ sudo rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm
$ sudo dnf clean all

Zabbixエージェントをインストールします。

$ sudo dnf install zabbix-agent

ステップ11.3 Zabbixエージェントを構成

Zabbixは証明書ベースの暗号化をサポートしていますが、このチュートリアルの簡単さのために、サーバーとエージェント間の接続を保護するために事前共有キー(PSK)を使用します。

PSKファイルを生成します。

$ sudo sh -c "openssl rand -hex 32 > /etc/zabbix/zabbix_agentd.psk"

コピー用のキーを表示します。

$ cat /etc/zabbix/zabbix_agentd.psk
797c84746dfe86f71b0f207785906d2bb886be27149b296d86df6b1ec9de6bbe

このキーをコピーしてください。後で必要になります。

Zabbixエージェントはその構成を /etc/zabbix/zabbix-agentd.conf ファイルに保存します。編集のために開きます。

$ sudo nano /etc/zabbix/zabbix_agentd.conf

次の変数のコメントを解除し、値を以下のように更新します。

Server=
ServerActive=
HostMetadata=ZabbixLinuxClient
Hostname=zabbixclient.example.com

ServerServerActive 変数の値としてZabbixサーバーのIPアドレスを指定します。HostMetadata 変数は、システムを識別するために使用できる任意の値にできます。また、後で説明するZabbixフロントエンドでの自動登録プロセスにも使用されます。Hostname項目はZabbixエージェントノードのシステムホスト名を指します。

ホスト名を確認するには、次のコマンドを使用します。

$ cat /etc/hostname

次に、サーバーとエージェント間の安全な接続を構成するセクションを見つけます。TLSConnect変数を見つけ、その値をunencryptedからpskに変更します。

...
### Option: TLSConnect
#       How the agent should connect to server or proxy. Used for active checks.
#       Only one value can be specified:
#               unencrypted - connect without encryption
#               psk         - connect using TLS and a pre-shared key
#               cert        - connect using TLS and a certificate
#
# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection)
# Default:
# TLSConnect=psk
...

次に、TLSAcceptセクションを見つけ、その値をpskに変更します。

...
### Option: TLSAccept
#       What incoming connections to accept.
#       Multiple values can be specified, separated by comma:
#               unencrypted - accept connections without encryption
#               psk         - accept connections secured with TLS and a pre-shared key
#               cert        - accept connections secured with TLS and a certificate
#
# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection)
# Default:
# TLSAccept=psk
...

次に、TLSPSKIdentityセクションを見つけ、その値をPSK 001に変更します。

...
### Option: TLSPSKIdentity
#       Unique, case sensitive string used to identify the pre-shared key.
#
# Mandatory: no
# Default:
# TLSPSKIdentity=PSK 001
...

これは、Zabbixウェブフロントエンドを通じてホストを追加するために使用するPSK IDです。

最後に、TLSPSKFileセクションを見つけ、その値をPSKファイルの場所に変更します。

...
### Option: TLSPSKFile
#       Full pathname of a file containing the pre-shared key.
#
# Mandatory: no
# Default:
# TLSPSKFile=/etc/zabbix/zabbix_agentd.psk
...

完了したら、Ctrl + Xを押してファイルを保存し、プロンプトが表示されたらYを入力します。

ステップ11.4 - Zabbixエージェントを開始

Zabbixエージェントサービスを開始および有効にします。

$ sudo systemctl enable zabbix-agent --now

ステップ12 - ZabbixフロントエンドにZabbixクライアントを追加して監視

既存の定義されたホストグループに新しいホストを追加するか、新しいホストグループを作成できます。ホストグループは、監視しているノードの種類を分類するのに役立ちます。新しいホストグループを作成するには、ConfigurationメニューのHost groupsオプションを開きます。

ボックスにグループの名前を追加し、Applyボタンをクリックしてグループを作成します。

新しいホストを作成するには、ConfigurationメニューのHostsオプションをクリックし、右上のCreate hostボタンをクリックします。

Zabbix Create Hosts

Zabbixノードのホスト名を追加します。

TemplatesセクションにLinux by Zabbix agentと入力し、ドロップダウンからテンプレートを選択します。

同様に、GroupsセクションにLinux Serversと入力し、選択します。

Interfacesセクションの下にあるAddボタンをクリックし、Agentを選択します。

次に、ZabbixクライアントノードのIPアドレスを追加します。完了すると、完全なNew hostポップアップは次のようになります。

Zabbix New Host Popup

次に、Encryptionタブに切り替えます。Connections to hostおよびConnections from hostオプションの両方にPSKを選択します。PSK IdentityPSK 001に設定します。これは、ステップ11.3で変数TLSPSKIdentityのために設定した値です。次に、PSK値を、以前にエージェントマシンで生成したキーとして設定します。

Zabbix Agent Encryption

完了したら、Addボタンをクリックしてホストの追加を完了します。

新しいホストがリストに表示され、エージェントがサーバーに接続されていることを示す緑のラベルが表示されるはずです。

Zabbix Hosts List

ステップ13 - メール通知の構成

Zabbixは、メール、Slack、Telegram、SMSなど、さまざまなタイプの通知をサポートしています。このチュートリアルの目的のために、メール通知を構成します。Zabbixフロントエンドにアクセスし、Administrationをクリックし、左側のメニューでMedia typesをクリックします。プレーンテキストメール用とHTMLメール用の2つのメールタイプが表示されます。

Zabbix Media Types

Email (HTML)オプションをクリックすると、次のページが表示されます。

Zabbix Email Media type Configure

SMTPサーバーの詳細を入力します。このチュートリアルでは、Amazon SESサービスを使用しています。完了したら、Updateボタンをクリックして詳細を保存します。Media typesページに戻ります。ページのTestボタンをクリックしてメール設定をテストします。ポップアップが表示されます。メールアドレスを入力し、Testボタンをクリックしてテストメールを送信します。

Zabbix Test Email Popup

成功メッセージがポップアップに表示され、正常に動作したことを通知され、受信トレイに次のメールが届くはずです。ポップアップを閉じるには、Cancelボタンをクリックします。

Zabbix Test Email

ステップ14 - 新しいユーザーを作成

デフォルトのZabbixユーザーは、通知を受け取るように構成されていません。これを行うこともできますが、デフォルトのユーザーは使用するには安全ではありません。最良のオプションは、新しいユーザーを作成し、デフォルトのユーザーを無効にすることです。

メニューのAdministration >> Usersセクションにアクセスし、右上のCreate userボタンをクリックして次のページを開きます。

Zabbix New User page

ユーザーの詳細を入力します。ユーザーグループとしてZabbix administratorsを選択します。完了したら、Mediaタブをクリックします。Addボタンをクリックし、タイプとしてEmail (HTML)を選択します。

Zabbix User Media Tab

Send toフィールドにメールアドレスを入力し、Addボタンをクリックしてメールオプションを追加します。次に、Permissionsタブに切り替え、SelectボタンをクリックしてSuper admin roleを追加します。

Zabbix User Permissions

Addボタンをクリックしてユーザーの追加を完了します。次に、フロントエンドからログアウトし、新しいユーザーとして再度ログインし、ユーザーページに戻ります。Adminユーザーをクリックし、Disabledグループを選択してユーザーを更新します。これにより、デフォルトのユーザーが使用できなくなります。

ステップ15 - テストアラートを送信

デフォルトで、Zabbixはサーバー上の空きスペースの量を追跡します。すべてのディスクマウントを検出し、定期的にチェックを行います。

最初のステップは、Zabbixがすべての管理者に通知を送信できるようにする通知トリガーを有効にすることです。Zabbixにはデフォルトのトリガーがすでに構成されています。それを機能させるために有効にする必要があります。Configuration >> Actions >> Trigger actionsにアクセスし、Disabledの状態をクリックしてEnabledに変更します。

Zabbix Trigger Actions

次に、Zabbixノードにログインし、ディスク使用量アラートをトリガーするのに十分な大きさの一時ファイルを作成します。

まず、サーバーの空きスペースを確認します。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        4.0M     0  4.0M   0% /dev
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           780M   51M  730M   7% /run
/dev/vda2        94G   12G   78G  13% /
/dev/vda1       260M  7.0M  253M   3% /boot/efi
tmpfs           390M  4.0K  390M   1% /run/user/1001

これにより、約78GBの空きスペースがあることが示されます。次に、fallocateコマンドを使用して、ディスクスペースの80%以上を事前に割り当てます。アラートをトリガーするのに十分な大きさです。

$ fallocate -l 74G /tmp/temp.img

再度ディスク使用量を確認します。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        4.0M     0  4.0M   0% /dev
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           780M   54M  726M   7% /run
/dev/vda2        94G   86G  3.9G  96% /
/dev/vda1       260M  7.0M  253M   3% /boot/efi
tmpfs           390M  4.0K  390M   1% /run/user/1001

Zabbixはディスクスペースに関するアラートをトリガーし、同様のメールアラートを送信します。メールは次のようになります。

Zabbix Test Alert Email

ダッシュボードでもアラートを確認できるはずで、数秒以内に表示されるはずです。

Zabbix Disk Check Alert Monitoring Dashboard

完了したら、一時ファイルを削除します。

$ rm -f /tmp/temp.img

問題が解決されたことを通知するメールが届くはずです。

Zabbix Test Issue resolved email

ステップ16 - Linuxノードの自動登録を構成

複数のノードをZabbixサーバーに追加する必要がある場合、プロセスが少し面倒になることがあります。幸いなことに、Zabbixフロントエンドでは自動登録を使用してプロセスを自動化できます。

Actions >> Autoregistration actionsにアクセスし、右上のCreate actionボタンをクリックします。

Zabbix Autoregistrations Page

新しい画面に移動したら、アクションに名前(Auto registration of Linux servers)を付けます。

Conditionsの下にあるAddボタンをクリックして条件を追加し、Host metadataをタイプとして選択し、containsをオペレーターとして、Linuxを値として選択します。

Zabbix Auto registration Conditions

Addをクリックして進み、アクション作成ページは次のようになります。

Zabbix Autoregistration New Action Page

Operationsタブをクリックし、Add to host groupを操作として選択し、Host groupsとしてLinux serversを選択します。Addボタンをクリックして完了します。

Zabbix Autoregistration Operation Details

PSK暗号化を使用する場合は、それを構成することもできます。Administration >> General >> Autoregistrationメニューに移動し、両方の暗号化オプションを有効にします。Zabbixサーバーで作成されたPSK IDとPSKキーを入力します。このPSK IDとキーをすべてのノードで使用でき、これらの値を使用して暗号化されます。

Zabbix Autoregistration Encryption

これ以降、LinuxサーバーにZabbixエージェントをインストールして構成するたびに、自動的にZabbixフロントエンドに追加されます。

結論

これで、Rocky Linux 9システムにZabbixサーバーをインストールおよび構成する方法に関するチュートリアルが終了します。また、サーバーと接続するためにリモートサーバーにZabbixエージェントをインストールしました。質問がある場合は、以下のコメントに投稿してください。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。