本記事の概要
インフラエンジニアとして業務に行う場合、各機器(サーバやネットワーク機器)の異常を早期発見して、対処することが求められます。
サーバやネットワーク機器などの稼働監視で使用するzabbixというソフトウェアをインストールします。
今回は前の記事でインストールしたVirtualBox上にCentOS Stream 9をインストールして、その中にzabbixをインストールすることを想定しています。
※本記事の作成日(2024年6月10日)時点での動作確認をしていますが、Webページなどが更新されている可能性があります。適宜読み替えてください。
以下のようなイメージで作成します。
ソフトウェアの構成
以下のソフトウェアを用いて、zabbixサーバを構築します。
- VirtualBox(※)
- CentOS Stream 9
- Zabbix 7.0
- Apache (Webサーバ用のソフトウェア)
- MySQL (データベース用のソフトウェア)
※VirtualBoxのインストール方法が分からない場合は、「仮想基盤構築のためにVirtualboxインストール」をご確認ください。
Zabbixとは
zabbixとは、サーバやネットワーク機器を監視するためのソフトウェアです。
オープンソース・ソフトウェアとして開発されているため、無償で使用することができます。
zabbixでは、ping監視、通信ポート監視、OSの性能監視(CPU、メモリ、ディスクI/Oの負荷)、サービス監視、ログ監視など様々な監視をすることができます。
CentOS Stream 9のインストール手順
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.22-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/7.0/alma/9/x86_64/zabbix-release-7.0-2.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/7.0/zabbix-7.0.0.tar.gz
# tar zxvf zabbix-7.0.0.tar.gz
# cp -p zabbix-7.0.0/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 | タイトル | 記事の概要 |
---|---|---|
1 | zabbixのハンズオン形式での勉強 (構築、監視設定、アラート確認) | zabbixのおすすめの勉強方法をご紹介します。 |
2 | 仮想基盤構築(Virtualboxインストール) 〇Virtualboxバージョン6 〇Virtualboxバージョン7 | zabbixサーバを構築するための準備として、 仮想基盤のソフトウェアであるVirtualboxを インストールします。 |
3 | zabbixサーバのインストール 〇zabbixバージョン5.0 [仮想環境に構築] CentOS Stream 8、Ubuntu 20.04 [クラウド環境に構築] さくらインターネット、ConoHa VPS、 カゴヤ 〇zabbixバージョン6.0 [仮想環境に構築] CentOS Stream 8 〇zabbixバージョン7.0 [仮想環境に構築] CentOS Stream 9 | zabbixサーバを構築します。 |
4 | zabbixの監視設定の流れ | zabbixの監視設定の流れを理解します。 |
5 | zabbixの推奨の監視項目と 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-2 | TCP通信ポート応答監視 ・zabbixバージョン5.0の場合 ・zabbixバージョン6.0の場合 ・zabbixバージョン7.0の場合 | TCPの通信ポートの応答有無を監視する 設定をします。 |
5-3 | CPU使用率監視 ・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-9 | Windows OSのサービス状態監視 ・zabbixバージョン5.0の場合 ・zabbixバージョン6.0の場合 ・zabbixバージョン7.0の場合 | Windows OSのサービスの起動状態を 監視します。 |
5-10 | Windowsイベントログ監視 ・zabbixバージョン5.0の場合 ・zabbixバージョン6.0の場合 ・zabbixバージョン7.0の場合 | Windowsイベントログに特定のログが 出力されたか監視します。 |
5-11 | Webシナリオ(Webページ監視) ・zabbixバージョン5.0の場合 ・zabbixバージョン6.0の場合 ・zabbixバージョン7.0の場合 | Webアクセス時のHTTPステータスコードが 200番であることを監視します。 |
5-12 | SNMP trap監視 ・zabbixバージョン5.0の場合 ・zabbixバージョン6.0の場合 ・zabbixバージョン7.0の場合 | 機器から送信されたSNMP trapを 受信したことを監視します。 |
5-13 | ネットワーク機器監視 ・zabbixバージョン5.0の場合 ・zabbixバージョン6.0の場合 ・zabbixバージョン7.0の場合 | ネットワーク機器の監視設定をします。 |
6 | zabbixの監視データの確認と メール通知設定 | 監視データの確認方法を理解します。 また、障害発生時のアラートメールの 通知設定をします。 |
7 | zabbixの詳細設計書(パラメータシート)の サンプル | zabbixのパラメータシートのサンプルを 記載します。 |
8 | 【仕事依頼】zabbixサーバの 要件定義、設計、構築 | zabbixの構築作業をご依頼いただける場合の 作業の流れなどを記載します。 |
zabbix関連の書籍
zabbixに関する設定を網羅的および詳細に学びたい場合、以下の書籍がおすすめです。
ページ数が多い書籍ですので、分からないことを調べる辞書の役割にもなります。