概要
今回は、VirtualBox上で仮想マシンを二つ用意し、Zabbixで障害を検知させてみます。
まずは、Zabbix Server側の設定を行い、次にZabbix Agent側の設定をしていきます。そして最後に、実際に障害を発生させ、確認してみようと思います。
環境
- VirtualBox 6.1.16
- Zabbix Server側仮想マシン(CentOS8)
- Zabbix Agent側仮想マシン(CentOS8)
- Zabbix 5.2
- Nginx 1.14.1
- MariaDB 10.3.17
Zabbix Server
SELinux 無効化
SELinuxが有効でそのままだと、Zabbix Serverの動作が制限され、うまく動作がしないことがあるので、今回は無効化にします。
# getenforce #確認
Enforcing #有効
# vi /etc/selinux/config
SELINUX=disabled #enforcingからdisabledへ
# reboot #再起動
# getenforce #確認
Disabled #無効
MariaDB インストール
Zabbixが監視して得た情報を保存しておく場所が必要なので、データベースをインストールします。
# dnf install mariadb-server
# systemctl enable mariadb --now #自動起動&起動
次は、MariaDBのrootユーザの初期パスワードを設定していきます。
# mysql_secure_installation #初期rootパスワードを設定
Nginx インストール
Webサーバがなぜ必要かというと、グラフィックな管理画面を使用するためです。Zabbixでは、エージェントの監視状況や設定をwebサイトから行うことができ、非常に見やすく管理しやすくなります。
Apacheでもよかったのですが、Nginxの方が設定することが少し増えるという点が興味深いのでこちらを選択しました。さくっとインストールしていきます。
# dnf install nginx
PHP インストール
# dnf install php
Zabbix インストール
Zabbixのインストール手順はオフィシャルサイト通りに行っています。
# rpm -Uvh https://repo.zabbix.com/zabbix/5.2/rhel/8/x86_64/zabbix-release-5.2-1.el8.noarch.rpm
# dnf clean all
# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-agent
データベース 設定変更
次は、データベースを作成し、ユーザを作成していきます。また、そのユーザにデータベースの使用権限を付与しています。
# mysql -uroot -p
<パスワードを入力> #mysql_secure_installationで設定したパスワード
mysql> create database zabbix character set utf8 collate utf8_bin; #zabbixというデータベース作成
mysql> create user zabbix@localhost identified by 'パスワード'; #zabbixというユーザとパスワード作成
mysql> grant all privileges on zabbix.* to zabbix@localhost; #zabbixに使用権限付与
mysql> quit;
以下のコマンドで、Zabbix用のテーブルをデータベースに作り、ZabbixとMariaDBが連携できるようにします。
# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
# vi /etc/zabbix/zabbix_server.conf
DBPassword=パスワード #mariDBで作成したユーザのパスワード
Nginx 設定変更
ここでは、「Zabbixの管理画面はポート80番を使うよー。」と設定しています。
# vi /etc/nginx/conf.d/zabbix.conf
server {
listen 80; #コメントアウトを外す
}
この /etc/nginx/conf.d/zabbix.conf は全体設定ファイル( /etc/nginx/nginx.conf )で取り込まれるようになっています。そこで、nginx.confのデフォルトでも、ポート80番の設定がすでにされており、バッティングしてしまうので、コメントアウトします。
# vi /etc/nginx/nginx.conf
server {
#listen 80 default_server; #コメントアウト
#listen [::]:80 default_server; #コメントアウト
#server_name _; #コメントアウト
PHP 設定変更
PHP-FPMの実行ユーザと実行グループがデフォルトでapacheになっているので、nginxに変更する必要があります。
# vi /etc/php-fpm.d/zabbix.conf
user = nginx #apache → nginxに変更
group = nginx #apache → nginxに変更
php_value[date.timezone] = Asia/Tokyo #タイムゾーンを変更
ちなみにPHP-FPM(PHP-FastCGI Process Manager)は、NginxがPHPを動かすために必要なプログラムです。つまり、NginxはこのPHP-FPMを通して、PHPを動作させることができます。
参考: NginxでPHPを動かす
ディレクトリ 所有権変更
デフォルトでapacheが所有権に設定されているディレクトリがあり、このままだと、Nginxがアクセスできないので変更していきます。
# ls -ld /etc/zabbix/web
drwxr-xr-x 2 apache apache 33 11月 3 09:38 /etc/zabbix/web
# chown nginx:nginx /etc/zabbix/web
# ls -ld /etc/zabbix/web
drwxr-xr-x 2 nginx nginx 33 11月 3 09:38 /etc/zabbix/web
# ls -l /var/lib/php/
drwxrwx--- 2 root apache 6 5月 7 11:32 opcache
drwxr-xr-x 2 root root 6 5月 7 11:32 peclxml
drwxrwx--- 2 root apache 6 5月 7 11:32 session
drwxrwx--- 2 root apache 6 5月 7 11:32 wsdlcache
# chown root:nginx /var/lib/php/{opcache,session,wsdlcache}
# ls -l /var/lib/php/
drwxrwx--- 2 root nginx 6 5月 7 11:32 opcache
drwxr-xr-x 2 root root 6 5月 7 11:32 peclxml
drwxrwx--- 2 root nginx 6 5月 7 11:32 session
drwxrwx--- 2 root nginx 6 5月 7 11:32 wsdlcache
firewalld 設定変更
Zabbix Serverはポート10051番でZabbix Agentからの通信を待ち受けるので、開放してあげます。また、Webの管理画面を表示したいので、HTTPプロトコルの通信を許可するようにします。
# firewall-cmd --add-port=10051/tcp --zone=public --permanent
success
# firewall-cmd --add-service=http --zone=public --permanent
success
# firewall-cmd --reload
success
自動起動&起動設定
ではこれまでインストールしたサービスを自動起動&起動していきます。
# systemctl enable zabbix-server zabbix-agent nginx php-fpm --now
–nowオプションつけることで、systemctl enableしてsystemctl startという処理を一発ですることができます。(最近知りました。)
Zabbix 初期設定
URLに自分のIPアドレスを入力してアクセスすると、このように表示されます。次のステップを押します。


この前提条件が全てOKになっているかどうか確認して、次のステップを押します。

ここでは、作成したデータベースの情報を入力していきます。パスワード以外入力されているので、問題なければそのままで大丈夫です。パスワードは作成したユーザのパスワードです。

ここは後からでも変えられますし、特にこだわりがなければこのままでOKです。

確認して大丈夫そうだったら、次のステップを押します。

これで完了したので、終了を押します。

すると、このようにログイン画面が表示されますが、管理者用のアカウントがすでに用意されています。ユーザ名: Admin, パスワード: zabbix です。これを入力し、ログイン。

すると管理画面が表示され、システム情報のZabbixサーバの起動の値が「はい」になっていれば問題ないです。これにてZabbix Serverの設定が完了しました。
Zabbix Agent
SELinux 無効化
Agent側も同様に無効化していきます。
# getenforce #確認
Enforcing #有効
# vi /etc/selinux/config
SELINUX=disabled #enforcingからdisabledへ
# reboot #再起動
# getenforce #確認
Disabled #無効
Zabbix Agent インストール
# rpm -Uvh https://repo.zabbix.com/zabbix/5.2/rhel/8/x86_64/zabbix-release-5.2-1.el8.noarch.rpm
# dnf clean all
インストールは、Zabbix Server側とは異なり、zabbix-agentをインストールするだけで済みます。
# dnf install zabbix-agent
Zabbix Agent 設定変更
Hostnameはhostnameコマンドで表示されたホスト名を入力すれば大丈夫です。
# vi /etc/zabbix/zabbix_agentd.conf
Server=Zabbix serverのIPアドレス
ServerActive=Zabbix serverのIPアドレス
Hostname=agentのホスト名
firewalld 設定変更
Zabbix Agentはポート10050番でZabbix Serverからの通信を待ち受けるので、開放してあげます。
# firewall-cmd --add-port=10050/tcp --zone=public --permanent
success
# firewall-cmd --reload
success
自動起動&起動設定
# systemctl enable zabbix-agent --now
Zabbix Agent 登録・設定
ここまできたら、あとは登録するだけです。管理画面の[設定]から[ホスト]を選択し、この画面が表示されるので、右上の[ホスト作成]を押します。

ホスト名はagentのホスト名、グループはLinux serversを選びます。また、インターフェースは[エージェント]でagentのIPアドレスを入力します。

まだ追加は押さず、デンプレート画面に遷移します。そこで、[新規テンプレートをリンク]の[選択]から、「Template OS Linux by Zabbix Agent」を選び、追加を押します。

すると、このように追加されたのが確認できたらOKです。

しばらくすると、グラフにも反映されてきます。

障害検知
では最後に障害の発生を検知できるか検証してみようと思います。
Zabbix AgentのCentOS8を停止させてみます。
# shutdown -h now
しばらく時間をおき、管理画面のダッシュボードへ。

すると、このようにしっかりと障害を検知することができました。グラフィカルで見やすいです。
参考文献
標準テキスト CentOS7 構築・運用・管理パーフェクトガイド
CentOSでZabbix5をインストールし、Zabbix Agentを監視する
Zabbix 4.4 インストール手順(CentOS8 / Nginx1.14 / PHP7.2 / MySQL8.0)
Comments