監視ツール入門 ~Zabbix~

本資料の概要

SaaSやPaaS等を自社サービスとして提供している場合、SaaSやPaaS等を支えているIaaSの仮想サーバーやベアメタルサーバーを監視(モニタリング)することで、障害あるいは障害の予兆をいち早く発見し対処しなければなりません。障害が起きてサービスが止まる場合、会社やあなた自身の社会的信用の低下、数億円や数十億円規模の損害賠償をあなた自身に請求されることさえ珍しくありません。
そこで、IaaSの仮想サーバーやベアメタルサーバーを監視(モニタリング)する手段としてよく使われる「Zabbix」のインストールについて説明します。

Zabbix

「Zabbix(ザビックス)」の2023年7月時点の最新版は、6.4 です。「Zabbix(ザビックス)」は、GNU GPLバージョン2ライセンスのオープンソースソフトウェアであり、監視システムとして最も多く使われており、数多くの企業のデータセンターで採用されているネットワーク監視システムです。つまり、デファクトスタンダード(事実上の標準)ツールの1つです。

https://www.zabbix.com/jp

zabbixは、大きく3つのソフトウェアで構成されています。

  • Zabbix Server

    • 監視サーバーです。

  • Zabbix Frontend

    • 監視サーバーであるZabbix ServerをWebブラウザ上で操作するためのUI(ユーザインタフェース)です。

  • Zabbix agent

    • 監視対象のサーバーにインストールすることで、Zabbix Serverから監視ができるようになります。

監視サーバー「Zabbix Server」用仮想マシンの用意

ここでは、監視対象のサーバー「Zabbix Servver」がVirtualBox上にありますので、同じVirtualBox上の仮想マシンを使います。監視サーバーにグローバルIPが割り当てられている場合は、監視対象は、AWSやMicrosoft Azure などのクラウド上の仮想マシンを対象にすることができます。

< 以下は、VirtualBoxを使った場合の例 >

仮想サーバーのスペック

  • OS:Ubutnu Server 22.04

  • 仮想CPU割り当て数 : 2以上

  • 仮想メモリ割り当て:4096MB(4GB)以上

  • 仮想ディスク:64GB以上

  • ネットワーク設定:NAT + ホストオンリーアダプタの構成。ホストオンリーアダプタには、固定IPを割り当てること。

  • デスクトップ環境:なし

  • SSH接続:必須 ( ユーザー名 + パスワードでもOK )

仮想サーバー の設定

  • ホストオンリーアダプタの固定IP例:192.168.99.10

  • Your server’s name (ホスト名):ubuntu1zabbix

  • ユーザー名 : vboxuser

  • パスワード:任意のもの

LAMP環境の構築

LAMP(ラムプ)環境は、Linux、Apache、MySQL(MariaDB)、PHP の頭文字をつなげたものです。

次のコマンドを実行し、インストールを行います。

sudo apt update -y sudo apt upgrade -y sudo apt install -y apache2 php-fpm mariadb-server

IPアドレスの確認

ip a

実行結果として、次のように表示された。今回の仮想マシンのホストオンリーアダプタ(enp0s8)のIPアドレスに、192.168.56.103 が割り当てられていることがわかる。

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:9a:b2:8f brd ff:ff:ff:ff:ff:ff inet 10.0.2.15/24 metric 100 brd 10.0.2.255 scope global dynamic enp0s3 valid_lft 84684sec preferred_lft 84684sec inet6 fe80::a00:27ff:fe9a:b28f/64 scope link valid_lft forever preferred_lft forever 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:f9:91:b1 brd ff:ff:ff:ff:ff:ff inet 192.168.56.103/24 metric 100 brd 192.168.56.255 scope global dynamic enp0s8 valid_lft 383sec preferred_lft 383sec inet6 fe80::a00:27ff:fef9:91b1/64 scope link valid_lft forever preferred_lft forever

PHP-FPMの設定

ApacheのFastCGI modを有効化。

Apacehとphp-fpmを再起動。

Apaceh2で、FastCGI modの有効化を確認するため、info.php を作成する。<< Aapche2の場合であって、Nginxとは異なる。

Webブラウザで、info.php を確認する。Webブラウザで、http://仮想マシンのIPアドレス/info.php にアクセス。「FPM/FastCGI」が表示されていればOKの状態。

php.ini の編集によるPHPの設定変更

php.ini の場所を探す

以前に作成した、info.php にアクセスし、php.ini のパスを探します。「/etc/php/8.1/fpm/php.ini」にあることがわかります。

PHPの設定変更

エディタを使って設定ファイルを編集します。「post_max_size」「max_execution_time」「max_input_time」の3つを編集後、エディタで保存します。

post_max_sizeの編集

編集前

編集後

max_execution_timeの編集

編集前

編集後

max_input_timeの編集

編集前

編集後

php-fpmの再起動

php-fpmを再起動し、編集したPHPの設定を再読み込みします。

PHPの設定確認

info.php にアクセスし、php.ini の編集内容を確認します。

MariaDBの初期化

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

実行結果

[Unix_Socket] 認証に切り替えるか否か、確認が求められていますので、n を入力し、Enterキーを押します。

rootパスワードの変更を行うか、確認が求められていますので、n を入力し、Enterキーを押します。変更は任意です。

匿名ユーザーの削除を行うか、確認が求められていますので、y を入力し、Enterキーを押します。

次のように結果が表示されます。

rootユーザーでのリモートログインを行うか確認が求められます。y を入力し、Enterキーを押します。これで、リモートログインができなくなります。

テストデータベースを削除するか、確認が求められていますので、y を入力し、Enterキーを押します。

テストデータベースが削除されます。

特権情報をリロードします。確認が求められていますので、y を入力し、Enterキーを押します。

実行結果

MariaDBの初期設定が完了します。

MariaDBへの接続確認

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

実行結果

ユーザー情報の一覧表示

実行結果

データベースの一覧表示

実行結果

接続解除

実行結果

監視ツール Zabbixのインストールと起動

Zabbixの公式サイトで提示されたメッセージにしたがって進めます。>> https://www.zabbix.com/jp/download

プラットフォームを選ぶことで、どのように進めれば良いか、コマンドが提示されます。

Zabbix リポジトリの追加

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

Zabbix のインストール

Zabbix Server、frontend、agent をインストールします。

Zabbix向けにデータベースを設定

MariaDBに接続します。

実行結果

MariaDBに接続した状態で、次のコマンドを実行します。

実行結果

Zabbixの初期スキーマとデータをインポート

次のコマンドを実行します。データベースにおけるzabbixユーザーのパスワードは、password になっています。「create user」コマンドを実行した際に設定したパスワードを使います。

zabbixユーザーのパスワードを入力します。

log_bin_trust_function_creators オプションを無効にします。MariaDBに接続します。

実行結果

MariaDBに接続した状態で、次のコマンドを実行します。

MariaDBの接続を解除します。

実行結果

ZabbixのDBパスワードを編集

エディタを開き、Zabbix Serverの設定ファイルを編集します。エディタは、今回はnanoを使っていますが、vi でも構いません。

変更前

変更後

変更を保存します。使用したエディタに従ってください。

Zabbixの起動

Zabbix Serverとagentを起動します。

また、サーバー起動時に自動起動するように設定します。

実行結果

監視サーバー「Zabbix Server」のWeb UIにアクセスとセットアップ

Zabbix UI のデフォルト URL は http://仮想マシンのIPアドレス/zabbix です。Webブラウザでアクセスします。

「Default language」を、Japaneseにすることで、日本語でセットアップを行うことができます。

前提条件について警告がでた場合は、警告にあわせて使用環境を修正します。後述のphp.ini の修正後、再読み込みを行います。

前提条件のチェック画面で、すべてOKがでれば良いです。「次のステップ」をクリックします。

「データベース接続設定」の画面が表示されます。データベースのユーザー名やパスワードを入力します。「次のステップ」をクリックします。

「設定」の画面が表示されます。Zabbixサーバー名やタイムゾーンを設定します。「次のステップ」をクリックします。

「設定パラメータの確認」画面が表示されます。「次のステップ」をクリックします。

インストール終了です。「終了」をクリックします。

Zabbixのログイン画面が表示されます。初期ユーザー名とパスワードは、Admin / zabbix です。入力後、「サインイン」をクリックします。

ログイン後、ダッシュボード画面が表示されます。

監視対象ホストの追加とモニタリング

https://mydocument.atlassian.net/wiki/spaces/support4textbook/pages/1759772697 を実施後、Zabbix Server のダッシュボード画面から、監視対象のホスト登録を行います。監視対象ホストには、Zabbix agent のインストールが必要です。Zabbix agent の作業を未実施の場合は、https://mydocument.atlassian.net/wiki/spaces/support4textbook/pages/1759772697 を実施してから次に進んでください。

監視サーバー「Zabbix Server」から、監視対象ホストの検出

Linuxのターミナルで、zabbix_get コマンドを使い、監視対象ホストを取得できる確認します。

実行結果

上記は、 で設定した監視対象の仮想サーバーのホスト名です。ホスト名が検出されれば、監視対象ホストとして、監視サーバーに追加(=登録)することができます。

監視サーバーに、監視対象ホストを追加

監視サーバーのダッシュボード画面で、「データ編集」>>「ホスト」をクリック。その後、画面右上の「ホストの作成」をクリック。

「新しいホストの作成」画面が表示されます。「テンプレート」の「選択」をクリックします。

「テンプレートグループ」を選び、「Linux by Zabbix agent」のテンプレートにチェックを入れて、画面下の「選択」をクリックします。

「新しいホストの作成」画面で「ホストグループ」の「選択」をクリックします。その後、「Linux servers」にチェックを入れ、「選択」をクリックします。

「新しいホストの作成」画面で、「テンプレート」に「Linux by Zabbix agent」の値が入り、「ホストグループ」に「Linux servers」の値が入りました。次は、「インターフェース」の「追加」>>「エージェント」の順にクリックします。

エージェントの「IPアドレス」に、監視対象ホストの固定IPアドレス( 例として、 で使った仮想マシンの固定IPアドレスを使用)を入力します。その後、「追加」をクリックします。

しばらく待つか、Webブラウザで再読み込みを行うと、下図のように監視対象ホスト(例 ubuntu1agent)がホストの一覧に追加され、「エージェントの状態」が緑色になります。これで監視対象ホストが追加され、監視がスタートしたことを示します。

監視対象ホストのモニタリング

追加した監視対象ホストのモニタリング(監視)状況を実際に見てみましょう。監視サーバーのダッシュボード画面で、画面左側の「監視データ」>>「ホスト」の順にクリックします。

ホストの一覧で、「グラフ」をクリックすると、選択した監視対象ホストで表示可能なグラフのリストが表示されます。監視対象ホストの監視には、「zabbix agent」を使っており、エージェント型の監視では、CPU、メモリ、ネットワークトラっフィック、ディスク、プロセス数を監視することができます。下図では、ホストの名前が「ubuntu1agent」のホストでは、15個のグラフがあることがわかります。

「グラフ」をクリックすることで、グラフがすべて表示されます。画面を下にスクロール(移動)することで、他のグラフを確認することができます。

たとえば、「Linux : Memory usage」では、現在の監視対象ホストのメモリの使用状況がグラフで表示されます。

ダッシュボード画面

ダッシュボード画面には、警告や監視対象ホストの状況が表示されます。

ダッシュボード画面に警告が表示される例

たとえば、監視対象ホスト名「ubuntu1agent」のCPU負荷を高めることで、下図のように「Current problems」に「Linux: Load average is too high (per CPU load over 1.5 for 5m)」の警告が表示されます。

ダッシュボード画面、ウィジェットのカスタマイズ

監視対象ホスト名「ubuntu1agent」のCPU利用状況を追加する例を参考に、ダッシュボード画面のカスタマイズ方法を見ていきます。

ダッシュボード画面における、グラフや地図を表示している小さな部品をウィジェットと言います。ポータルやダッシュボード画面では、ガジェットやウィジェットといった言い方がお馴染みです。ここでは「Top hosts by CPU utilization」のウィジェットで、歯車のアイコンをクリックします。

「ウィジェットの変更」が表示されます。「ホスト」の欄で「選択」を押し、「ホストグループ」に「Linux servers」を指定し、追加したいホスト名にチェックを入れ、「選択」をクリックします。

「ホスト」の欄に、選択したホストが追加されたことがわかります。「適用」をクリックします。

画面右上の「変更を保存」をクリックします。

これでダッシュボード画面のウィジェットをカスタマイズすることができ、表示する情報を増やすことができました。

次のアクション

ここまでの内容で、Zabbixでサーバーを監視することができることがわかりました。

SaaSやPaaS等を自社サービスとして提供している場合、SaaSやPaaS等を支えているIaaSの仮想サーバーやベアメタルサーバーを監視し、障害や障害の予兆が生じた際には、速やかにメールやチャット、チケット管理システム(RedmineやJira software cloud等)に通知して欲しく、そうした仕組みを実装する機能、あるいはリモートコマンドで自動再起動を指示するような機能がZabbixにはあります。

Zabbix環境を自分で構築し、監視ができるようなった次の段階は、Zabbixのオンラインドキュメントを参考に実装してみましょう。メール通知の場合、メールサーバーが必要です。仮想マシンを使う場合は、PostfixやDovecotを使うと自前で構築できます。

  • Zabbix ドキュメント

    • 日本語版(2023年7月現在、バージョン6.0が最新) https://www.zabbix.com/jp/manuals

    • 英語版(2023年7月現在、バージョン6.4が最新)https://www.zabbix.com/documentation/current/en/manual

    • 通知関連は、下記を中心に設定が必要。

      • トリガー

      • アクション

      • 通知設定

    • 公式ドキュメントでわからない場合は、インターネット上で調べても良いが、古いバージョンの情報が非常に多いので、Zabbixの公式ドキュメントのリリース情報を確認しながら、古いバージョンと最新版の差を把握しながらインターネット上の各種情報を読む必要がある。つまり、インターネット上にある公式ドキュメント以外の情報は要注意ということ。

    • 面倒くさい場合は、公式のトレーニングに出たり、書籍を読むのも手。

  • Zabbixのトレーニング・セミナー情報 : https://enterprise.zabbix.co.jp/events << 有料トレーニングは要自己負担。