CentOS Stream 9上にzabbixバージョン7.0のインストール

※本サイトはアフィリエイト広告を利用しています。
広告

本記事の概要

インフラエンジニアとして業務に行う場合、各機器(サーバやネットワーク機器)の異常を早期発見して、対処することが求められます。
サーバやネットワーク機器などの稼働監視で使用するzabbixというソフトウェアをインストールします。
今回は前の記事でインストールしたVirtualBox上にCentOS Stream 9をインストールして、その中にzabbixをインストールすることを想定しています。

※本記事の作成日(2023年6月22日)時点での動作確認をしていますが、Webページなどが更新されている可能性があります。適宜読み替えてください。

以下のようなイメージで作成します。

ソフトウェアの構成

以下のソフトウェアを用いて、zabbixサーバを構築します。

  • VirtualBox(※)
  • CentOS Stream 9
  • Zabbix 7.0
  • Apache (Webサーバ用のソフトウェア)
  • MySQL (データベース用のソフトウェア)

   ※VirtualBoxのインストール方法が分からない場合は、「仮想基盤構築のためにVirtualboxインストール」をご確認ください。

Zabbixとは

zabbixとは、サーバやネットワーク機器を監視するためのソフトウェアです。
オープンソース・ソフトウェアとして開発されているため、無償で使用することができます。
zabbixでは、ping監視、通信ポート監視、OSの性能監視(CPU、メモリ、ディスクI/Oの負荷)、サービス監視、ログ監視など様々な監視をすることができます。

CentOS Stream 8のインストール手順

zabbixサーバのOSと動作するCentOS Stream 8をVirtualbox上にインストールする手順を記載します。

(1) ブラウザを起動して、以下のCentOSのダウンロードサイトにアクセスします。
   https://www.centos.org/download/

(2) [CentOS Stream]-[9]-[x86_64]をクリックします。
  

(3) Virtualboxを起動します。その後、「仮想マシン」をクリックして、「新規」をクリックします。
  

(4) 「名前」、「タイプ」、「バージョン」の3つの値を設定して、「次へ」をクリックします。
  

(5) 「メモリサイズ」と「プロセッサー数」を設定して、「次へ」をクリックします。以下のzabbix公式サイトにzabbixの性能要件が記載されています。
  https://www.zabbix.com/documentation/7.0/en/manual/installation/requirements
  

(6) 「Create a Virtual Dard Disk Now」にチェックをつけて、「仮想ハードディスクのサイズ」を設定して、「次へ」をクリックします。
  

(7) 「完了」をクリックします。
  

(8) 作成した仮想マシンをダブルクリックして、起動します
  

(9) 読み込みISOファイル(CentOS Stream 9のISOファイル)を選択して、「Mount and Retry Boot」をクリックします。
  

(10) 「Install CentOS Stream 9」を選択します。
  

(11) 「日本語」-「日本語(日本)」を選択して、「続行」をクリックします。
  

(12) 「インストール先」をクリックします。
  

(13) 「ローカルの標準ディスク」を選択して、「完了」をクリックします。
  

(14) 「インストール先」のアイコンの注意マークが消えたことを確認します。その後、「ソフトウェアの選択」をクリックします。
  

(15) 「Minimal Install」を選択して、「完了」をクリックします。
不要なソフトウェアをインストールすると、ディスク容量を使用し、ソフトウェアの脆弱性が増える可能性があるため、「Minimal Install(最小限のインストール)」でインストールすることを推奨します。
  

(17) 「ソフトウェアの選択」が「Minimal Install」になっていることを確認します。
  

(18) 下部にある「root パスワード」をクリックします。
  

(19) rootユーザのパスワードを入力して、「完了」をクリックします。
  

(20) 「root パスワード」のアイコンの注意マークが消えたことを確認します。その後、一般ユーザーを作成するために「ユーザーの作成」をクリックします。
  

(21) 「ユーザー名」と「パスワード」を入力して、「完了」をクリックします。
  

(22) 「ユーザーの作成」に作成したユーザー名が表示されることを確認します。その後、「インストールの開始」をクリックします。
  

(23) インストールが終わるまでしばらく待って、「システムの再起動」をクリックします。
  

SELinuxの無効化

SELinux (Security-Enhanced Linux) とは、システム上のアプリケーション、プロセス、ファイルのアクセス制御をします。
SELinuxが有効化されているとzabbixは正常に動作しないため、無効化する必要があります。
本章では、SELinuxが無効化する手順を記載します。

(1) CentOS Streamを起動して、rootユーザでログインします。
  ・ユーザ名:root
  ・パスワード:[インストール時に設定したパスワード]

(2) 以下のコマンドを実行して、SELinuxが無効(Disabled)になっていない場合は無効にします。

# getenforce ← 「Disabled」以外が出力された場合、以下の手順を実施
  【「Disabled」以外が出力された場合の手順】
    # vi /etc/selinux/config
      →「SELINUX=enforcing」を「SELINUX=disabled」を変更します。

     ※viコマンド実行後は、以下のキーを入力して、ファイルを編集します。
       「i」で編集モードに入って、ファイルの内容を変更します。
       「ESC」で編集モード終了します。
       「:wq」で保存して終了します。


(3) 以下のコマンドを実行して、OSを再起動します。

# reboot


(4) OS起動後、rootユーザでログインします。

(5) 以下のコマンドを実行して、SELinuxが無効化されていることを確認します。

# getenforce ← 「Disabled」と出力されることを確認します。


MARIADBのインストール

zabbixのデータを格納するためのデータベースとしてMARIADBを使用します。
MARIADBをインストールする手順を記載します。

(1) 以下の手順を実施して、ネットワークを有効化します。
  「nmtui」コマンドを実行して、「Activate a connection」を選択(※)します。
   ※キーボード「↓」「↑」で移動し、「Enter」を押して選択します。
  

  インターフェース名の場所を選択して、インターフェースを有効化(※1)します。
  以下の状態になっていたらインターフェースが有効になっています。
    ・インターフェース名の横に※マークがある
    ・インターフェース選択時に「Deactivate」という表記になっている
  その後、「Back」を選択します。
    ※1 キーボード「↓」「↑」「→」「←」で移動し、「Enter」を押して選択します。
  

  その後、「Quit」を選択します。

  「ip a」コマンドを実行して、インターフェースのIPアドレスが表示されていることを確認します。
  

(2) 以下のコマンドを実行して、MARIADBをインストールします。

# dnf install -y mariadb-server
# mysql --version
  →「mysql  Ver 15.1 Distrib 10.5.16-MariaDB, for Linux (x86_64) using  EditLine wrapper」など
   バージョンが出力されることを確認


(3) 以下のコマンドを実行して、MARIADBの再起動および自動起動の有効化をします。

# systemctl restart mariadb
# systemctl enable mariadb


日本語の文字化け対策

zabbixのバージョン7.0の設定中に日本語の文字列を設定すると、文字化けしてしまいます。
そのため、MARIADBの文字コードの変更と日本語環境に必要なパッケージをインストールします。

(1) 以下のコマンドを実行して、MARIADBの文字コードを変更します。

# cp /etc/my.cnf.d/mariadb-server.cnf /etc/my.cnf.d/mariadb-server.cnf_org
# vi /etc/my.cnf.d/mariadb-server.cnf
  ⇒以下のように「[mysqld]」の以下の3行を追記します。
     [mysqld]
    (中略)
    character-set-server = utf8
    collation-server = utf8_bin
    skip-character-set-client-handshake


(2) 以下のコマンドを実行して、MARIADBを再起動します。

# systemctl restart mariadb


(3) 以下のコマンドを実行して、日本語環境に必要なパッケージをインストールします。

# rpm -Uvh https://repo.zabbix.com/zabbix/6.5/rhel/9/x86_64/zabbix-release-6.5-1.el9.noarch.rpm
# dnf clean all
# dnf -y install zabbix-web-japanese



Zabbixのバージョン7.0のインストール

zabbixのバージョン7.0を構築するための手順を記載します。
zabbixのインストール手順は以下の公式サイトを参考にして作成しています。
 https://www.zabbix.com/download?zabbix=7.0&os_distribution=centos&os_version=9&components=server_frontend_agent&db=mysql&ws=apache



(1) 以下のコマンドを実行して、パッケージを更新します。

# dnf -y update


(2) 必要なソフトウェアをインストールために、以下のコマンドを実行します。

# dnf -y install epel-release
# vi /etc/yum.repos.d/epel.repo
  →以下のように[epel]欄に「excludepkgs=zabbix*」を追記します。
  [epel]
  ...
  excludepkgs=zabbix*
# dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent


(3) 以下のコマンドを実行して、データベースの作成及びテーブルを作成します。

# mysql -uroot -p
  →パスワードは入力せず、[Enter]を押します。
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by '[任意のパスワード]';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;
# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
  →パスワードを入力して、[Enter]を押します。(パスワードは上記の[任意のパスワード]で設定した文字列です)


(4) 以下のコマンドを実行して、「log_bin_trust_function_creators」を無効化します。

# mysql -uroot -p
  →パスワードを入力して、[Enter]を押します。
mysql> set global log_bin_trust_function_creators = 0;
mysql> quit;


(5) 以下のコマンドを実行して、Zabbizサーバのためのデータベースの設定を変更します。

# cp /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf_org
# vi /etc/zabbix/zabbix_server.conf

iを入力して編集モードに変更して、以下の行を編集します。
【変更前】
# DBPassword=
【変更後】
DBPassword=[パスワードを入力]


(6) 以下のコマンドを実行して、Zabbixサーバとエージェントのプロセスを起動します。

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


(6) 以下のコマンドを実行して、zabbixで使用する通信ポートを開放します。

# firewall-cmd --add-port=10051/tcp --zone=public --permanent
# firewall-cmd --add-port=80/tcp --zone=public --permanent
# firewall-cmd --reload


(7) ブラウザを起動して、「http://[zabbixサーバのIPアドレス]/zabbix」にアクセスします。その後、デフォルトの言語を「日本語(ja_JP)」に設定して、「次のステップ」をクリックします。
  

(8) 全てのステータスがOKになっていることを確認して、「次のステップ」をクリックします。
  

(9) 「データベースポート:3306」、「パスワード:[設定したパスワード]」を入力して、「次のステップ」をクリックします。
  

(10) 「Zabbixサーバー名:[任意の名前]」、「デフォルトのタイムゾーン:(UTC +9:00)Asia/Tokyo」を入力して、「次のステップ」をクリックします。
  

(11) 設定した値を確認して、「次のステップ」をクリックします。
  

(12) インストールが終了した旨のメッセージが表示されていることを確認して、「完了」をクリックします。
  

(13) 「ユーザ名:Admin」、「パスワード:zabbix」を入力して、「サインイン」をクリックします。
  

(14) ダッシュボード画面が表示されることを確認します。
  

【補足】 日本語の文字化け対策

zabbixのバージョン7.0の設定中に日本語の文字列を設定すると、文字化けしてしまいます。
そのため、MARIADBの文字コードの変更と日本語環境に必要なパッケージをインストールします。

(1) 以下のコマンドを実行して、MARIADBの文字コードを変更します。

# cp /etc/my.cnf.d/mariadb-server.cnf /etc/my.cnf.d/mariadb-server.cnf_org
# vi /etc/my.cnf.d/mariadb-server.cnf
  ⇒以下のように「[mysqld]」の以下の3行を追記します。
     [mysqld]
    (中略)
    character-set-server = utf8
    collation-server = utf8_bin
    skip-character-set-client-handshake


(2) 以下のコマンドを実行して、MARIADBを再起動します。

# systemctl restart mariadb


(3) 以下のコマンドを実行して、日本語環境に必要なパッケージをインストールします。

# dnf -y install zabbix-web-japanese


(4) 以下のコマンドを実行して、zabbixのサービスを再起動します。

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


【補足】 zabbixによるSNMP監視の設定

もしzabbixサーバを用いてSNMP trapを用いた監視をする場合、本手順を実施する必要があります。
本手順はzabbixの公式サイトである「https://www.zabbix.com/documentation/2.0/jp/manual/config/items/itemtypes/snmptrap」を参考にして作成しています。

(1) 以下のコマンドを実行して、zabbixでSNMP監視をするために必要なパッケージをインストールします。

# dnf install -y net-snmp net-snmp-utils net-snmp-perl wget tar

(2) 以下のコマンドを実行して、SNMP trapを処理するためのスクリプトを格納します。

# wget https://cdn.zabbix.com/zabbix/sources/stable/6.4/zabbix-6.4.4.tar.gz
# tar zxvf zabbix-6.4.4.tar.gz
# cp -p zabbix-6.4.4/misc/snmptrap/zabbix_trap_receiver.pl /usr/local/bin/

(3) 以下のコマンドを実行して、スクリプトの実行結果のログの格納先を設定します。

# vi /usr/local/bin/zabbix_trap_receiver.pl

【変更前】
$SNMPTrapperFile = '/tmp/zabbix_traps.tmp';
$DateTimeFormat = '%H:%M:%S %Y/%m/%d';
【変更後】
$SNMPTrapperFile = '/var/log/snmptrap/snmptrap.log';
$DateTimeFormat = '%H:%M:%S %Y/%m/%d';

(4) 以下のコマンドを実行して、スクリプトに実行権限を付与します。

# chmod +x /usr/local/bin/zabbix_trap_receiver.pl

(5) 以下のコマンドを実行して、スクリプトのログ格納場所のディレクトリを作成します。

# mkdir /var/log/snmptrap

(6) 以下のコマンドを実行して、snmptrapdの設定を変更します。以下の設定値は、SNMPのバージョンはSNMPv2で、コミュニティ名が「public」を使用することを想定しています。

# vi /etc/snmp/snmptrapd.conf

【追記内容】
authCommunity log,execute,net public
perl do "/usr/local/bin/zabbix_trap_receiver.pl";

(7) 以下のコマンドを実行して、snmptrapdサービスの起動及び自動起動をします。

# systemctl start snmptrapd
# systemctl enable snmptrapd

(8) 以下のコマンドを実行して、SNMP trapの送信テストを実行すると、ログファイルに格納されたことを確認します。

# snmptrap -v 2c -c public 127.0.0.1 '' .1.3.6.1.6.3.1.1.5.3

# cat /var/log/snmptrap/snmptrap.log
  ⇒SNMP trapのログが出力されることを確認します。

(9) 以下のコマンドを実行して、zabbixサーバ側でSNMP trapの受信を有効にします。

# vi /etc/zabbix/zabbix_server.conf

【変更前】
# StartSNMPTrapper=0
【変更後】
StartSNMPTrapper=1

(10) 以下のコマンドを実行して、zabbix-serverサービスを再起動します。

# systemctl restart zabbix-server

(11) 以下のコマンドを実行して、SNMP trapのポート(161/udp)のファイアウォールを開放します。

# firewall-cmd --add-port=161/udp --zone=public --permanent
# firewall-cmd --reload

(12) 以下のコマンドを実行して、ログローテーションを有効にします。

# vi /etc/logrotate.d/snmptrap

【設定内容】
/var/log/snmptrap/snmptrap.log {
    daily
    rotate 20
    compress
    delaycompress
    missingok
    notifempty
}


zabbix関連の記事

zabbix関連の記事は以下の通りです。
必要に応じて、ご確認ください。

Noタイトル記事の概要
1zabbixのハンズオン形式での勉強
(構築、監視設定、アラート確認)
zabbixのおすすめの勉強方法をご紹介します。
2仮想基盤構築(Virtualboxインストール)
Virtualboxバージョン6
Virtualboxバージョン7
zabbixサーバを構築するための準備として、
仮想基盤のソフトウェアであるVirtualboxを
インストールします。
3zabbixサーバのインストール

〇zabbixバージョン5.0
[仮想環境に構築]
CentOS Stream 8Ubuntu 20.04
[クラウド環境に構築]
さくらインターネットConoHa VPS
カゴヤ

〇zabbixバージョン6.0
[仮想環境に構築]
CentOS Stream 8

〇zabbixバージョン7.0
[仮想環境に構築]
CentOS Stream 9
zabbixサーバを構築します。
4zabbixの監視設定の流れzabbixの監視設定の流れを理解します。
5zabbixの推奨の監視項目と
zabbix agentのインストール
  ・zabbixバージョン5.0の場合
  ・zabbixバージョン6.0の場合
  ・zabbixバージョン7.0の場合
zabbixにて監視する推奨の項目と、
監視対象サーバにzabbix agentを
インストールする手順を理解します。
5-1死活監視(ping監視)
  ・zabbixバージョン5.0の場合
  ・zabbixバージョン6.0の場合
  ・zabbixバージョン7.0の場合
死活監視の設定をします。
5-2TCP通信ポート応答監視
  ・zabbixバージョン5.0の場合
  ・zabbixバージョン6.0の場合
  ・zabbixバージョン7.0の場合
TCPの通信ポートの応答有無を監視する
設定をします。
5-3CPU使用率監視
  ・zabbixバージョン5.0の場合
  ・zabbixバージョン6.0の場合
  ・zabbixバージョン7.0の場合
サーバのOSのCPU使用率を監視する
設定をします。
5-4メモリ空き容量監視
  ・zabbixバージョン5.0の場合
  ・zabbixバージョン6.0の場合
  ・zabbixバージョン7.0の場合
メモリの空き容量を監視する設定をします。
5-5ドライブのディスク空き容量監視
  ・zabbixバージョン5.0の場合
  ・zabbixバージョン6.0の場合
  ・zabbixバージョン7.0の場合
ドライブのディスク空き容量を
監視する設定をします。
5-6プロセス監視
  ・zabbixバージョン5.0の場合
  ・zabbixバージョン6.0の場合
  ・zabbixバージョン7.0の場合
プロセスの停止を監視する設定をします。
5-7ログファイル監視
  ・zabbixバージョン5.0の場合
  ・zabbixバージョン6.0の場合
  ・zabbixバージョン7.0の場合
ログファイル中に特定のメッセージが
出力されたか監視します。
5-8ファイルの変更(チェックサム)監視
  ・zabbixバージョン5.0の場合
  ・zabbixバージョン6.0の場合
  ・zabbixバージョン7.0の場合
ファイルの内容が変わったことを
監視します。
5-9Windows OSのサービス状態監視
  ・zabbixバージョン5.0の場合
  ・zabbixバージョン6.0の場合
  ・zabbixバージョン7.0の場合
Windows OSのサービスの起動状態を
監視します。
5-10Windowsイベントログ監視
  ・zabbixバージョン5.0の場合
  ・zabbixバージョン6.0の場合
  ・zabbixバージョン7.0の場合
Windowsイベントログに特定のログが
出力されたか監視します。
5-11Webシナリオ(Webページ監視)
  ・zabbixバージョン5.0の場合
  ・zabbixバージョン6.0の場合
  ・zabbixバージョン7.0の場合
Webアクセス時のHTTPステータスコードが
200番であることを監視します。
5-12SNMP trap監視
  ・zabbixバージョン5.0の場合
  ・zabbixバージョン6.0の場合
  ・zabbixバージョン7.0の場合
機器から送信されたSNMP trapを
受信したことを監視します。
5-13ネットワーク機器監視
  ・zabbixバージョン5.0の場合
  ・zabbixバージョン6.0の場合
  ・zabbixバージョン7.0の場合
ネットワーク機器の監視設定をします。
6zabbixの監視データの確認と
メール通知設定
監視データの確認方法を理解します。
また、障害発生時のアラートメールの
通知設定をします。
7zabbixの詳細設計書(パラメータシート)の
サンプル
zabbixのパラメータシートのサンプルを
記載します。
8【仕事依頼】zabbixサーバの
要件定義、設計、構築
zabbixの構築作業をご依頼いただける場合の
作業の流れなどを記載します。


zabbix関連の書籍

zabbixに関する設定を網羅的および詳細に学びたい場合、以下の書籍がおすすめです。
ページ数が多い書籍ですので、分からないことを調べる辞書の役割にもなります。