Ubuntu16.04でリモートサーバーを安全に監視するためにZabbixをインストールおよび設定する方法
序章
Zabbix は、ネットワークおよびアプリケーション向けのオープンソースの監視ソフトウェアです。 サーバー、仮想マシン、およびその他の種類のネットワークデバイスから収集された数千のメトリックのリアルタイム監視を提供します。 これらのメトリックは、ITインフラストラクチャの現在の状態を判断し、顧客から苦情が出る前にハードウェアまたはソフトウェアコンポーネントの問題を検出するのに役立ちます。 有用な情報はデータベースに保存されるため、時間の経過とともにデータを分析して、提供されるサービスの品質を向上させたり、機器のアップグレードを計画したりできます。
Zabbixはクライアントサーバーアーキテクチャを使用し、監視対象クライアント上の小さなエージェントを使用してデータを収集し、Zabbixサーバーに送信します。 Zabbixバージョン3は、サーバーと接続されたクライアント間の暗号化された通信をサポートしているため、データが安全でないネットワーク上を移動する間、データは保護されます。
Zabbixサーバーは、MySQL、PostgreSQL、またはOracleを搭載したリレーショナルデータベースにデータを保存します。 また、データを表示してシステム設定を構成できるように、Webインターフェイスも提供します。 このチュートリアルでは、2台のマシンを構成します。 1つはサーバーとして構成され、もう1つは監視するクライアントとして構成されます。 サーバーはMySQLデータベースを使用して監視データを記録し、Apacheを使用してWebインターフェイスを提供します。
前提条件
このチュートリアルに従うには、次のものが必要です。
- 2つのUbuntu16.04サーバー。それぞれがsudo非rootユーザーで構成されています。 これらは、この初期Ubuntuサーバーセットアップ記事に従ってセットアップできます。
- Zabbixサーバーを実行するサーバーには、Apache、MySQL、およびPHPがインストールされている必要があります。 このガイドに従って、サーバーの1つでそれらを構成します。
ステップ1—Zabbixサーバーをインストールする
まず、MySQL、Apache、PHPをインストールしたサーバーにZabbixサーバーをインストールする必要があります。 このチュートリアルでは、このマシンを「Zabbixサーバー」と呼びます。 root以外のユーザーとしてこのマシンにログインします。
- ssh sammy@your_zabbix_server_ip_address
Zabbixをインストールする前に、Zabbixに必要ないくつかのPHPモジュールをインストールする必要があります。 まず、システムの利用可能なパッケージのリストを更新します。
- sudo apt-get update
次に、Zabbixに必要なPHPモジュールをインストールします。
- sudo apt-get install php7.0-xml php7.0-bcmath php7.0-mbstring
これでZabbixをインストールできます。
ZabbixはUbuntuのパッケージマネージャーで利用できますが、古くなっているため、公式のZabbixリポジトリを使用して最新の安定バージョンをインストールします。 リポジトリ構成パッケージをダウンロードしてインストールします。
wget http://repo.zabbix.com/zabbix/3.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.2-1+xenial_all.deb
sudo dpkg -i zabbix-release_3.2-1+xenial_all.deb
次の出力が表示されます。
OutputSelecting previously unselected package zabbix-release.
(Reading database ... 55276 files and directories currently installed.)
Preparing to unpack zabbix-release_3.2-1+xenial_all.deb ...
Unpacking zabbix-release (3.2-1+xenial) ...
Setting up zabbix-release (3.2-1+xenial) ...
パッケージインデックスを更新して、新しいリポジトリが含まれるようにします。
sudo apt-get update
次に、MySQLデータベースをサポートするZabbixサーバーとWebフロントエンドをインストールします。
sudo apt-get install zabbix-server-mysql zabbix-frontend-php
Zabbixエージェントもインストールしてみましょう。これにより、Zabbixサーバーのステータス自体に関するデータを収集できます。
sudo apt-get install zabbix-agent
Zabbixを使用する前に、Zabbixサーバーがエージェントから収集するデータを保持するデータベースを設定する必要があります。
ステップ2—Zabbix用のMySQLデータベースの設定
Zabbixに適したものにするために、新しいMySQLデータベースを作成し、いくつかの基本情報を入力する必要があります。 また、このデータベースに特定のユーザーを作成して、ZabbixがMySQLにログインしないようにします。 root
アカウント。
MySQLサーバーのインストール中に設定したrootパスワードを使用して、rootユーザーとしてMySQLにログインします。
mysql -uroot -p
UTF-8文字をサポートするZabbixデータベースを作成します。
- create database zabbix character set utf8 collate utf8_bin;
次に、Zabbixサーバーが使用するユーザーを作成し、新しいデータベースへのアクセスを許可して、ユーザーのパスワードを設定します。
- grant all privileges on zabbix.* to zabbix@localhost identified by 'your_password';
次に、次の新しい権限を適用します。
- flush privileges;
これでユーザーとデータベースが処理されます。 データベースコンソールを終了します。
- quit;
次に、初期スキーマとデータをインポートする必要があります。 Zabbixのインストールにより、これを設定するファイルが提供されました。
次のコマンドを実行してスキーマを設定し、データをにインポートします zabbix
データベース。 使用します zcat
ファイル内のデータが圧縮されているためです。
zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix
プロンプトが表示されたら、構成した zabbixMySQLユーザーのパスワードを入力します。
このコマンドが成功した場合、このコマンドはエラーを出力しません。 エラーが表示された場合 ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password: YES)
次に、のパスワードを使用したことを確認してください zabbix
ユーザーではなく root
ユーザー。
Zabbixサーバーがこのデータベースを使用するには、Zabbixサーバー構成ファイルでデータベースパスワードを設定する必要があります。 エディターで構成ファイルを開きます。
sudo nano /etc/zabbix/zabbix_server.conf
ファイルの次のセクションを探します。
### Option: DBPassword
# Database password. Ignored for SQLite.
# Comment this line if no password is used.
#
# Mandatory: no
# Default:
# DBPassword=
ファイル内のこれらのコメントは、データベースへの接続方法を説明しています。 を設定する必要があります DBPassword
ファイル内の値をデータベースユーザーのパスワードに変更します。 これらのコメントの下に次の行を追加して、データベースを構成します。
DBPassword=your_zabbix_mysql_password
これでZabbixサーバーの構成は処理されますが、Zabbix Webインターフェイスが正しく機能するようにするには、PHPの設定にいくつかの変更を加える必要があります。
ステップ3—Zabbix用のPHPの設定
Zabbix WebインターフェースはPHPで記述されており、特別なPHPサーバー設定が必要です。 Zabbixのインストールプロセスでは、これらの設定を含むApache構成ファイルが作成されました。 ディレクトリにあります /etc/zabbix
そして、Apacheによって自動的にロードされます。 このファイルに小さな変更を加える必要があるので、開いてください。
sudo nano /etc/zabbix/apache.conf
このファイルには、ZabbixWebインターフェースに必要な要件を満たすPHP設定が含まれています。 行う必要がある唯一の変更は、適切なタイムゾーンを設定することです。これは、デフォルトでコメント化されています。
...
<IfModule mod_php7.c>
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
# php_value date.timezone Europe/Riga
</IfModule>
上で強調表示されているタイムゾーンの行のコメントを解除し、自分のタイムゾーンに変更します。 このサポートされているタイムゾーンのリストを使用して、適切なタイムゾーンを見つけることができます。 次に、ファイルを保存して閉じます。
次に、Apacheを再起動して、これらの新しい設定を適用します。
sudo systemctl restart apache2
これでZabbixサーバーを起動できます。
sudo systemctl start zabbix-server
次に、Zabbixサーバーが正しく実行されているかどうかを確認します。
sudo systemctl status zabbix-server
次のステータスが表示されます。
Output● zabbix-server.service - Zabbix Server
Loaded: loaded (/lib/systemd/system/zabbix-server.service; disabled; vendor preset: enabled)
Active: :active (running) since Thu 2017-06-08 06:40:43 UTC; 6s ago
Process: 15201 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)
...
最後に、サーバーが起動時に起動できるようにします。
- sudo systemctl enable zabbix-server
サーバーがセットアップされ、データベースに接続されます。 それでは、Webフロントエンドを設定しましょう。
ステップ4—ZabbixWebインターフェースの設定を構成する
Webインターフェイスを使用すると、レポートを表示したり、監視するホストを追加したりできますが、使用するには初期設定が必要です。 ブラウザを起動して、アドレスに移動します http://your_zabbix_server_ip_address/zabbix/
. 最初の画面に、ウェルカムメッセージが表示されます。 次のステップをクリックして続行します。
次の画面に、Zabbixを実行するためのすべての前提条件をリストした表が表示されます。
このテーブルのすべての値はOKである必要があるため、そうであることを確認してください。 必ず下にスクロールして、すべての前提条件を確認してください。 すべての準備が整ったことを確認したら、次のステップをクリックして続行します。
次の画面では、データベース接続情報を求められます。
データベースについてZabbixサーバーに通知しましたが、ホストを管理してデータを読み取るには、ZabbixWebインターフェイスもデータベースにアクセスする必要があります。 したがって、ステップ2で構成したMySQLクレデンシャルを入力し、次のステップをクリックして続行します。
次の画面では、オプションをデフォルト値のままにしておくことができます。
名前はオプションです。 複数の監視サーバーがある場合に、1つのサーバーを別のサーバーと区別するためにWebインターフェイスで使用されます。 次のステップをクリックして続行します。
次の画面にはインストール前の概要が表示されるので、すべてが正しいことを確認できます。
次のステップをクリックして、最終画面に進みます。
Webインターフェイスのセットアップが完了しました。 このプロセスにより、構成ファイルが作成されます /usr/share/zabbix/conf/zabbix.conf.php
これをバックアップして、将来使用することができます。 終了をクリックしてログイン画面に進みます。 デフォルトのユーザーはAdminで、パスワードはzabbixです。
ログインする前に、他のサーバーにZabbixエージェントを設定しましょう。
ステップ5—Zabbixエージェントのインストールと設定
次に、監視データをZabbixサーバーに送信するエージェントソフトウェアを設定する必要があります。
「監視対象サーバー」と呼ばれる2番目のサーバーにログインします。
- ssh sammy@your_monitored_server_ip_address
次に、Zabbixサーバーの場合と同様に、次のコマンドを実行してリポジトリ設定パッケージをインストールします。
- wget http://repo.zabbix.com/zabbix/3.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.2-1+xenial_all.deb
- sudo dpkg -i zabbix-release_3.2-1+xenial_all.deb
次に、パッケージインデックスを更新します。
- sudo apt-get update
次に、Zabbixエージェントをインストールします。
- sudo apt-get install zabbix-agent
Zabbixは証明書ベースの暗号化をサポートしていますが、認証局の設定はこのチュートリアルの範囲を超えていますが、事前共有キー(PSK)を使用してサーバーとエージェント間の接続を保護できます。
したがって、最初にPSKを生成します。
- sudo sh -c "openssl rand -hex 32 > /etc/zabbix/zabbix_agentd.psk"
キーを表示して、どこかにコピーできるようにします。 ホストを構成するために必要になります。
- cat /etc/zabbix/zabbix_agentd.psk
キーは次のようになります。
Outputcd12686e166a80aa09a227ae5f97834eaa3d5ae686d2ae39590f17ef85dd6de5
次に、Zabbixエージェント設定を編集して、Zabbixサーバーへの安全な接続を設定します。 テキストエディタでエージェント設定ファイルを開きます。
- sudo nano /etc/zabbix/zabbix_agentd.conf
このファイル内の各設定は、ファイル全体の有益なコメントを介して文書化されていますが、編集する必要があるのはそれらの一部だけです。
まず、ZabbixサーバーのIPアドレスを編集する必要があります。 次のセクションを見つけてください。
### Option: Server
# List of comma delimited IP addresses (or hostnames) of Zabbix servers.
# Incoming connections will be accepted only from the hosts listed here.
# If IPv6 support is enabled then '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' are treated equally.
#
# Mandatory: no
# Default:
# Server=
Server=127.0.0.1
デフォルト値をZabbixサーバーのIPに変更します。
Server=your_zabbix_server_ip_address
次に、Zabbixサーバーへの安全な接続を構成し、事前共有キーのサポートを有効にするセクションを見つけます。 を見つける TSLConnect
次のようなセクション:
### Option: TLSConnect
# How the agent should connect to server or proxy. Used for active checks.
# Only one value can be specified:
# unencrypted - connect without encryption
# psk - connect using TLS and a pre-shared key
# cert - connect using TLS and a certificate
#
# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection)
# Default:
# TLSConnect=unencrypted
次に、次の行を追加して、事前共有キーのサポートを構成します。
TLSConnect=psk
次に、 TLSAccept
次のようなセクション:
### Option: TLSAccept
# What incoming connections to accept.
# Multiple values can be specified, separated by comma:
# unencrypted - accept connections without encryption
# psk - accept connections secured with TLS and a pre-shared key
# cert - accept connections secured with TLS and a certificate
#
# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection)
# Default:
# TLSAccept=unencrypted
次の行を追加して、事前共有キーをサポートするように着信接続を構成します。
TLSAccept=psk
次に、 TLSPSKIdentity
次のようなセクション:
### Option: TLSPSKIdentity
# Unique, case sensitive string used to identify the pre-shared key.
#
# Mandatory: no
# Default:
# TLSPSKIdentity=
次の行を追加して、事前共有キーを識別するための一意の名前を選択します。
TLSPSKIdentity=PSK 001
Zabbix Webインターフェースを介してホストを追加するときに、これを PSKIDとして使用します。
次に、以前に作成した事前共有キーを指すオプションを設定します。 を見つけます TLSPSKFile
オプション:
### Option: TLSPSKFile
# Full pathname of a file containing the pre-shared key.
#
# Mandatory: no
# Default:
# TLSPSKFile=
次の行を追加して、Zabbixエージェントが作成したPSKファイルを指すようにします。
TLSPSKFile=/etc/zabbix/zabbix_agentd.psk
ファイルを保存して閉じます。 これで、Zabbixエージェントを起動し、起動時に起動するように設定できます。
- sudo systemctl start zabbix-agent
- sudo systemctl enable zabbix-agent
適切な対策として、Zabbixエージェントが正しく実行されていることを確認してください。
- sudo systemctl status zabbix-agent
エージェントが実行中であることを示す次のステータスが表示されます。
Output● zabbix-agent.service - Zabbix Agent
Loaded: loaded (/lib/systemd/system/zabbix-agent.service; disabled; vendor preset: enabled)
Active: active (running) since Thu 2017-06-08 08:33:52 UTC; 4s ago
Process: 18185 ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE (code=exited, status=0/SUCCESS)
...
これで、エージェントはZabbixサーバーにデータを送信する準備が整いました。 ただし、これを使用するには、サーバーのWebコンソールからリンクする必要があります。
注: UFWを使用している場合は、ポートへの接続を許可するように構成してください 10050
:
- sudo ufw allow 10050/tcp
UFWの詳細については、 Ubuntu16.04でUFWを使用してファイアウォールを設定する方法をご覧ください。
ステップ6—新しいホストをZabbixサーバーに追加する
監視するサーバーにエージェントをインストールするのは、プロセスの半分にすぎません。 監視する各ホストは、Zabbixサーバーに登録する必要があります。これは、Webインターフェイスを介して行うことができます。
アドレスに移動して、ZabbixサーバーのWebインターフェイスにログインします http://your_zabbix_server_ip_address/zabbix/
.
ログインしたら、上部のナビゲーションバーの構成をクリックし、次にホストをクリックします。 次に、画面右上のホストの作成ボタンをクリックします。 これにより、ホスト構成ページが開きます。
ホスト名とIPアドレスを調整して、クライアントマシンのホスト名とIPアドレスを反映させます。 次に、リストからグループの1つを選択するか、独自のグループを作成して、ホストをグループに追加します。 ホストは複数のグループに属することができます。 LinuxServersグループがデフォルトの適切な選択です。 グループを追加したら、テンプレートタブをクリックします。
タイプ Template OS Linux
検索フィールドで、追加をクリックして、このテンプレートをホストに追加します。
次に、暗号化タブに移動します。 ホストへの接続とホストからの接続の両方でPSKを選択します。 次に、 PSKIdentityをに設定します PSK 001
、これは、前に設定したZabbixエージェントのTLSPSKIdentity設定の値です。 次に、PSKの値をZabbixエージェント用に生成したキーに設定します。 ファイルに保存されているものです /etc/zabbix/zabbix_agentd.psk
エージェントマシン上。
最後に、フォームの下部にある追加ボタンをクリックして、ホストを作成します。
すべてが正常に機能しており、接続が暗号化されていることを示す緑色のラベルが付いた新しいホストが表示されます。
数秒後、モニタリング、最新データの順に移動して、エージェントからのデータを確認できます。
動作を確認するには、監視対象サーバーをシャットダウンして、Zabbixが問題を警告する方法を確認します。 監視対象サーバーがオフラインになると、メインダッシュボードに警告が表示されます。
監視する必要のある追加のサーバーがある場合は、各ホストにログインし、Zabbixエージェントをインストールし、PSKを生成し、エージェントを構成し、最初のホストを追加するのと同じ手順に従って、ホストをWebインターフェイスに追加します。
結論
このチュートリアルでは、サーバーの状態を監視するのに役立つ、シンプルで安全な監視ソリューションをセットアップする方法を学びました。 これで問題を警告できるようになり、取得したデータに基づいていくつかのグラフをプロットして、分析してそれに応じて計画できるようになりました。