第 1 回 Zabbix を動かしてみよう

1. はじめに

Zabbix は、オープンソースの企業向けシステム監視ツールです。
Web ベースの使いやすい管理インタフェース、大規模な監視への対応、可視化機能などが特長です。

今回は、Zabbix エージェントをインストールした監視対象機器の動作状況が管理画面から閲覧できるようになるまでを扱います。

Zabbix 導入の全体の流れを理解したり、初めての方が作業の感覚を掴めるように、画面を交えながらインストールから基本的な設定まで解説していきます。

2. 対象環境

Zabbix の要件とサポートする環境はシステム要件をご確認ください。

今回は以下の環境に Zabbix を導入します。

なお、別途管理画面にアクセスするための Web ブラウザを動作させるコンピュータが必要です。

本記事では Windows 10 で Firefox 93.0 を使用します。

役割 OS ホスト名 (IP アドレス)
監視サーバ CentOS 7.9 (x86_64) zabbix-server (192.168.5.1)
監視エージェント CentOS 7.9 (x86_64) zabbix-agent (192.168.5.2)

なお、本環境では SELinux および ファイアウォールの設定は無効化しています。

3. 必要なソフトウェア

Zabbix の動作には以下のソフトウェアが必要になります。
詳細はソフトウェア要件をご確認ください。

  • Apache/Nginx
  • PHP
  • PostgreSQL/MySQL/ etc.

本記事では、Apache, PostgreSQL を使います。
またバージョンは以下のディストリビューション標準のものを使用します。

  • Apache httpd 2.4.6
  • PostgreSQL 9.2.24
# yum install httpd postgresql postgresql-server

PHP については Zabbix 5.0 では PHP 7.2 以上を使う必要があります。PHP のインストールは後述します。

4. Zabbix サーバ のインストール

今回は Zabbix のダウンロードページで以下のプラットフォームを選択した際の rpm を取得してインストールを行います。

ZABBIXバージョン 5.0 LTS
OSディストリビューション CentOS
OSバージョン 7
データベース PostgreSQL
WEB SERVER Apache

まず、rpm パッケージをインストールします。

# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
# yum clean all

次に Zabbix サーバをインストールします。

# yum install zabbix-server-pgsql

続いて Zabbix フロントエンドをインストールしますが、その前に SCL リポジトリを追加します。

# yum install centos-release-scl

/etc/yum.repos.d/zabbix.repo を編集し、zabbix-frontend リポジトリを有効にします。

# vi /etc/yum.repos.d/zabbix.repo

[zabbix-frontend]
...
enabled=1
...

Zabbix フロントエンドパッケージをインストールします。また、この過程で依存関係により php72 もインストールされます。

# yum install zabbix-web-pgsql-scl zabbix-apache-conf-scl zabbix-web-japanese

ここまでで以下のパッケージがインストールされます。(2021/10/26 現在)

# yum list installed | grep zabbix
fping.x86_64                              3.16-1.el7                 @zabbix-non-supported
zabbix-apache-conf-scl.noarch             5.0.17-1.el7               @zabbix-frontend
zabbix-release.noarch                     5.0-1.el7                  installed  
zabbix-server-pgsql.x86_64                5.0.17-1.el7               @zabbix    
zabbix-web.noarch                         5.0.17-1.el7               @zabbix-frontend
zabbix-web-deps-scl.noarch                5.0.17-1.el7               @zabbix-frontend
zabbix-web-japanese.noarch                5.0.17-1.el7               @zabbix-frontend
zabbix-web-pgsql-scl.noarch               5.0.17-1.el7               @zabbix-frontend

# yum list installed | grep rh-php
rh-php72.x86_64                           1-2.el7                    @centos-sclo-rh
rh-php72-php-bcmath.x86_64                7.2.24-1.el7               @centos-sclo-rh
rh-php72-php-cli.x86_64                   7.2.24-1.el7               @centos-sclo-rh
rh-php72-php-common.x86_64                7.2.24-1.el7               @centos-sclo-rh
rh-php72-php-fpm.x86_64                   7.2.24-1.el7               @centos-sclo-rh
rh-php72-php-gd.x86_64                    7.2.24-1.el7               @centos-sclo-rh
rh-php72-php-json.x86_64                  7.2.24-1.el7               @centos-sclo-rh
rh-php72-php-ldap.x86_64                  7.2.24-1.el7               @centos-sclo-rh
rh-php72-php-mbstring.x86_64              7.2.24-1.el7               @centos-sclo-rh
rh-php72-php-pdo.x86_64                   7.2.24-1.el7               @centos-sclo-rh
rh-php72-php-pear.noarch                  1:1.10.5-1.el7             @centos-sclo-rh
rh-php72-php-pgsql.x86_64                 7.2.24-1.el7               @centos-sclo-rh
rh-php72-php-process.x86_64               7.2.24-1.el7               @centos-sclo-rh
rh-php72-php-xml.x86_64                   7.2.24-1.el7               @centos-sclo-rh
rh-php72-php-zip.x86_64                   7.2.24-1.el7               @centos-sclo-rh
rh-php72-runtime.x86_64                   1-2.el7                    @centos-sclo-rh

5. データベースの作成

データベースの初期化

# PGSETUP_INITDB_OPTIONS="-E utf8 --no-locale" /usr/bin/postgresql-setup initdb
Initializing database ... OK

PostgreSQL の起動

# systemctl start postgresql

postgres ユーザーにパスワードを設定

# sudo -u postgres psql -c "alter user postgres with password 'postgres'"

パスワード認証を有効にするため pg_hba.conf を編集

# vi /var/lib/pgsql/data/pg_hba.conf
-------
# TYPE DATABASE USER ADDRESS METHOD

# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
-------

PostgreSQL の再起動

# systemctl restart postgresql

zabbix ユーザー、Zabbix 初期データベース作成

# sudo -u postgres createuser --pwprompt zabbix
Enter password for new role: (今回は zabbix をパスワードとします)
Enter it again:
Password: (postgres ユーザーのパスワードを入力します)
# sudo -u postgres createdb -O zabbix zabbix
# zcat /usr/share/doc/zabbix-server-pgsql-5.0.17/create.sql.gz | sudo -u zabbix psql zabbix

6. Zabbix サーバ の設定・起動

/etc/zabbix/zabbix_server.conf を編集し、DB に関する設定をします。

# vi /etc/zabbix/zabbix_server.conf
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix

次にフロントエンドのタイムゾーンを Asia/Tokyo にします。

# vi /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
php_value[date.timezone] = Asia/Tokyo

zabbix-server, httpd, php-fpm を起動します。
また、postgresql も含め自動起動を有効にします。

# systemctl start zabbix-server httpd rh-php72-php-fpm
# systemctl enable zabbix-server httpd rh-php72-php-fpm postgresql
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/rh-php72-php-fpm.service to /usr/lib/systemd/system/rh-php72-php-fpm.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql.service to /usr/lib/systemd/system/postgresql.service.

これで Zabbix サーバのインストールから起動までが完了しました。

7. Web フロントエンドでセットアップ

次に Web フロントエンドでセットアップを行います。

Web ブラウザから http://(Zabbix サーバのホスト名 or IP アドレス)/zabbix にアクセスし、画面の指示に従って初期設定を行います。
アクセスできない場合は SELinux および firewalld の設定が正しく行われているかを確認してください。

[Next step] をクリックし「Check of pre-requisites」ですべて OK になっていることを確認します。

問題がなければ [Next step] をクリックし次に進みます。

次にデータベースの設定をします。以下の情報を入力し、[Next step] をクリックします。

※「Database port」を 0 にすると、「Database type」に「PostgreSQL」を選択した場合、自動的に 5432 が設定されます。

Database type PostgreSQL
Database host localhost
Database port 5432
Database name zabbix
User zabbix
Password (データベースの zabbix ユーザーのパスワード)

「Zabbix server details」ではフロントエンドから Zabbix サーバへの接続先を設定します。

今回のように Zabbix サーバとフロントエンドを同じホストで動作させる場合はデフォルトのままで構いません。

次に「Pre-Installation summary」で設定内容を確認します。よければ [Next step] をクリックし次に進みます。

「Install」で 「Congratulations! You have successfully installed Zabbix frontend.」が表示されたらインストール完了です。

[Finish] をクリックして完了します。

8. Zabbix エージェントをインストール

それでは次は Zabbix エージェントをインストールします。
今回 Zabbix エージェントをインストールするサーバは Zabbix サーバをインストールしたサーバとは別のサーバです。

なお、Zabbix サーバがインストールされているサーバにも Zabbix エージェントをインストールし、Zabbix サーバ自身の監視も行なうことが一般的です。

まずは Zabbix のレポジトリを追加します。

# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
# yum clean all

次に zabbix-agent のみインストールします。

# yum install zabbix-agent

インストールができたら設定ファイルを編集します。

9. Zabbix エージェントの設定・起動

以下のパラメータについて変更を行います。

Server Zabbix サーバの IP アドレス
Hostname Zabbix エージェントのホスト名
※Zabbix フロントエンド上の設定と合わせる必要があります
ServerActive Zabbix サーバの IP アドレス

今回の環境の場合は以下のように設定します。

# vi /etc/zabbix/zabbix_agentd.conf
Server=192.168.5.1
Hostname=zabbix-agent
ServerActive=192.168.5.1

設定が完了したら zabbix-agent の起動および自動起動有効化をします。

# systemctl start zabbix-agent
# systemctl enable zabbix-agent
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.

Zabbix エージェントはデフォルトで 10050 番ポートを使用します。
ファイアウォールが有効な場合は 10050 番ポートへの接続を受け付けるようにしてください。

これで Zabbix エージェントのインストールから起動までが完了しました。

10. 管理画面へのログイン

それでは管理画面にログインしましょう。

インストール直後の状態ではデフォルトで特権管理者が存在します。

Username Admin
Password zabbix

ログインフォームにこれらの情報を入力し、「Admin」ユーザーでログインします。

ログイン後にパスワードを変更することを推奨します。

ログインに成功したらダッシュボード画面が表示されます。


デフォルトの言語は英語ですので、日本語に変更する場合は画面左下の [User settings] から変更を行います。

[Language] を [Japanese (ja_JP)] に変更します。また、パスワードの変更を行う際も、画面内の
[Change password] から変更することが可能です。変更項目を入力したら [Update] をクリックします。

日本語表記に変わったことが確認できました。

以降は日本語表記で説明します。

11. ユーザーとユーザーグループ

画面左側の [管理] → [ユーザー] を選択すると、

現在登録されているユーザーとその所属ユーザーグループが表示されます。

インストール直後の状態では「Admin」ユーザーと「guest」ユーザーのみが登録されています。

Zabbix のユーザーは「ユーザー」、「管理者」、「特権管理者」の 3 種類があります。

  • ユーザー
    監視データなどの閲覧のみ権限があります。
  • 管理者
    「ユーザー」の権限に加えて、監視項目などの設定が可能になります。
  • 特権管理者
    「管理者」の権限に加えて、ユーザーの作成や認証方法の設定など Zabbix の管理が可能になります。

なお、Admin ユーザーの種類は「特権管理者」、guest ユーザーの種類は「ユーザー」として用意されています。

ユーザーグループについてはグループ毎に特定のホストグループに対する権限の付与が可能です。

guest ユーザーが所属している Guests グループおよび Admin ユーザーが所属している Zabbix administrators グループの権限はこのようになっています。

  • Guests グループ
    どのホストグループに対してもあらゆる権限がありません。
  • Zabbix administrators グループ
    すべてのホストグループに対して権限が付与されています。

データを表示するのみの閲覧専用グループや、データの表示だけでなく監視設定も行うことができる管理作業用グループを用意するなど用途に応じて、ユーザーグループを用意しておくと便利です。

ユーザーとユーザーグループの詳細については Zabbix マニュアルの以下の項目を参照してください。

それでは新規ユーザーを作成してみましょう。

新規ユーザーを作成するには、画面右上の [ユーザーの作成] をクリックします。

ここではゲスト相当のユーザーを作成します。以下の項目を入力し、[追加] をクリックします。

エイリアス (ログインユーザー名) user
名前 Zabbix
名字 User
パスワード (任意のパスワード)
グループ Guests
言語 日本語(jp_JP)

「user」が作成されたことが確認できました。ただし、 「user」は Guests グループに所属しているため監視設定や障害情報を表示する権限はないのでご注意ください。

12. ホストの登録

ここからは実際に監視を行うための設定を行います。
最初に監視対象のホストを登録します。

    1. 画面左側の [設定] → [ホスト] を選択します。
    2. 画面右上の [ホストの作成] をクリックします。
    3. 以下の項目を入力し、[追加] をクリックします。
ホスト名 zabbix-agent
表示名 (管理画面で表示する名前) Zabbix-agent
グループ (ホストが所属するグループ) Linux servers
インターフェース タイプ エージェント
IPアドレス
(Zabbix エージェントの IP アドレス)
192.168.5.2

ホストの一覧に作成したホストが表示されます。

13. テンプレートの作成

次に、監視項目 (アイテム) を登録するためのテンプレートを設定します。

アイテムは直接ホストに登録することもできますが、テンプレートを使用することで、複数のアイテムをグループ化してまとめて扱うことができるので便利です。

Zabbix ではあらかじめさまざまなテンプレートが登録されていますので、これらをサンプルとして使うこともできます。ここでは新規にテンプレートを作成してみます。

    1. [設定] → [テンプレート] を選択します。
    2. 画面右上の [テンプレートの作成] をクリックします。
    3. 以下の項目を入力し、[追加] をクリックします。
テンプレート名 Test template
表示名 (管理画面上で表示する名前) テストテンプレート
グループ Templates

14. アイテムの登録

続いて、先ほど作成した「テストテンプレート」に監視項目を追加します。
Zabbix では監視項目のことをアイテムと呼びます。
アイテムはホストもしくはテンプレートに対し、登録します。

ここでは、例として監視対象サーバの CPU 使用率を取得するアイテムを作成します。

[設定] → [テンプレート] を選択するとテンプレートの一覧が表示されます。

画面上部の [名前] 検索窓に「テストテンプレート」と入力し、[適用] をクリックします。

そうすると「テストテンプレート」が表示されます。

「テストテンプレート」行の「アイテム」をクリックします。

画面右上の [アイテムの作成] をクリックし、アイテムを作成します。

以下の項目を入力します。
なお、[キー] には直接アイテムキーを入力することも可能ですが、[選択] をクリックすると別ウィンドウが開き、キーを一覧から選択することも可能です。

「system.cpu.util[,,]」は、「すべての CPU の最近 1 分間の平均使用率」という意味になります。

名前 (アイテム名) CPU usage
タイプ (アイテムのタイプ) Zabbixエージェント
キー system.cpu.util[,,]
データ型 数値(浮動小数)
監視間隔 30s

[追加] をクリックすることでアイテムを登録できますが、今回は登録する前にテストを行います。
[テスト] ではアイテムを追加する前に意図したデータを取得できるかテストすることができます。

現在疎通が取れているホスト「Zabbix-agent」(192.168.5.2) に対しテストを行います。

[ホストのアドレス] に 192.168.5.2 を、[ポート] に 10050 を入力し [値の取得とテスト] をクリックします。

値の取得ができていることを確認できたので、[追加] をクリックしてアイテムの追加を行います。

「テストテンプレート」のアイテム一覧に先ほど追加したアイテムが表示されました。

以上で、テンプレートへのアイテムの追加および確認ができました。

15. テンプレートのリンク

次に「テストテンプレート」をホスト「Zabbix-agent」にリンクさせます。

Zabbix ではホストにテンプレートを適用することを「リンク」と呼びます。

  1. [設定] → [ホスト] から「Zabbix-agent」をクリックします。
  2. [テンプレート] タグを開き、[新規テンプレートをリンク] に「テストテンプレート」と入力し、選択します。
  3. [更新] をクリックすると「Zabbix-agent」に「テストテンプレート」が適用され、先ほど作成したアイテムが「Zabbix-agent」に追加されていることが分かります。

アイテムの数が 1 に、テンプレートカラムには「テストテンプレート」が表示されていることが確認できます。

16. 監視データの確認

実際に監視対象から情報を取得できているかを確認しましょう。
[監視データ] → [最新データ] を選択すると以下のように「Zabbix-agent」の CPU 使用率が取得できているでしょうか。


アイテム行の右端の [グラフ] をクリックすると過去の履歴をグラフで参照することができます。

データを表示させる時間範囲は柔軟に指定ができます。添付画像のグラフは [最新の1時間] のデータを表示させています。

17. まとめ

今回は、Zabbix をインストールし、監視対象と監視項目を設定して実際に監視が行えるようになるまでを解説しました。

次回は、その他の監視項目や、障害の発生を検知してアラートメールを送信したり、より便利に監視を行うための機能を紹介します。