Ubuntu 16.04でリモートサーバーを安全に監視するためにZabbixをインストールおよび設定する方法

前書き

Zabbixは、ネットワークおよびアプリケーション用のオープンソースの監視ソフトウェアです。 サーバー、仮想マシン、およびその他の種類のネットワークデバイスから収集された数千のメトリックのリアルタイム監視を提供します。 これらのメトリックは、お客様が苦情を申し立てる前に、ITインフラストラクチャの現在の状態を判断し、ハードウェアまたはソフトウェアコンポーネントの問題を検出するのに役立ちます。 有用な情報はデータベースに保存されるため、長期間にわたってデータを分析し、提供されるサービスの品質を改善したり、機器のアップグレードを計画したりできます。

Zabbixはクライアントサーバーアーキテクチャを使用し、監視対象クライアント上の小さなエージェントを使用してデータを収集し、Zabbixサーバーに送信します。 Zabbixバージョン3は、サーバーと接続されたクライアント間の暗号化された通信をサポートしているため、安全でないネットワーク上を移動する間、データは保護されます。

Zabbixサーバーは、MySQL、PostgreSQL、またはOracleを搭載したリレーショナルデータベースにデータを保存します。 また、データを表示し、システム設定を構成できるように、Webインターフェイスも提供します。 このチュートリアルでは、2台のマシンを構成します。 1つはサーバーとして設定され、もう1つは監視するクライアントとして設定されます。 サーバーはMySQLデータベースを使用して監視データを記録し、Apacheを使用してWebインターフェイスを提供します。

前提条件

このチュートリアルを実行するには、次のものが必要です。

  • それぞれがsudo非rootユーザーで構成された2つのUbuntu 16.04サーバー。 このinitial Ubuntu server setup articleに従うことで、これらを設定できます。

  • Zabbixサーバーを実行するサーバーには、Apache、MySQL、およびPHPがインストールされている必要があります。 this guideに従って、サーバーの1つでそれらを構成します。

[[step-1 -—- installing-the-zabbix-server]] ==ステップ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サーバーがそのエージェントから収集するデータを保持するデータベースを設定する必要があります。

[[step-2 -—- configuring-the-mysql-database-for-zabbix]] ==ステップ2—Zabbix用のMySQLデータベースの構成

Zabbixに適したものにするために、新しいMySQLデータベースを作成し、いくつかの基本情報を入力する必要があります。 また、このデータベース用に特定のユーザーを作成して、ZabbixがrootアカウントでMySQLにログインしないようにします。

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)が表示された場合は、rootユーザーではなく、zabbixユーザーのパスワードを使用していることを確認してください。

Zabbixサーバーがこのデータベースを使用するためには、Zabbixサーバー設定ファイルでデータベースパスワードを設定する必要があります。 エディターで構成ファイルを開きます。

sudo nano /etc/zabbix/zabbix_server.conf

ファイルの次のセクションを探します。

/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値をデータベースユーザーのパスワードに設定する必要があります。 これらのコメントの下に次の行を追加して、データベースを構成します。

/etc/zabbix/zabbix_server.conf

DBPassword=your_zabbix_mysql_password

これでZabbixサーバーの設定が処理されますが、Zabbix Webインターフェイスが適切に機能するためには、PHPの設定を変更する必要があります。

[[step-3 -—- configuring-php-for-zabbix]] ==ステップ3—Zabbix用のPHPの設定

ZabbixウェブインターフェースはPHPで書かれており、いくつかの特別なPHPサーバー設定が必要です。 Zabbixのインストールプロセスにより、これらの設定を含むApache設定ファイルが作成されました。 これはディレクトリ/etc/zabbixにあり、Apacheによって自動的にロードされます。 このファイルに小さな変更を加える必要があるため、開いてください。

sudo nano /etc/zabbix/apache.conf

このファイルには、Zabbix Webインターフェースに必要な要件を満たすPHP設定が含まれています。 必要な変更は、適切なタイムゾーンを設定することだけです。これはデフォルトでコメント化されています。

/etc/zabbix/apache.conf

...

    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

上で強調表示されているタイムゾーンの行のコメントを解除し、タイムゾーンに変更します。 このlist of supported time zonesを使用して、適切なものを見つけることができます。 次に、ファイルを保存して閉じます。

次に、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フロントエンドをセットアップしましょう。

[[step-4 -—- configuring-settings-for-the-zabbix-web-interface]] ==ステップ4— ZabbixWebインターフェースの設定を構成する

Webインターフェイスでは、レポートを表示し、監視するホストを追加できますが、使用する前に初期設定が必要です。 ブラウザを起動し、アドレスhttp://your_zabbix_server_ip_address/zabbix/に移動します。 最初の画面に、ようこそメッセージが表示されます。 続行するには、Next stepをクリックしてください。

次の画面で、Zabbixを実行するためのすべての前提条件をリストした表が表示されます。

Prerequisites

このテーブルのすべての値はOKである必要があるため、そうであることを確認してください。 必ず下にスクロールして、すべての前提条件を確認してください。 すべての準備が整ったことを確認したら、Next stepをクリックして続行します。

次の画面では、データベース接続情報を求められます。

DB Connection

Zabbixサーバーにデータベースについて伝えましたが、Zabbix Webインターフェースはデータベースをアクセスしてホストを管理し、データを読み取る必要があります。 したがって、ステップ2で構成したMySQL資格情報を入力し、Next stepをクリックして続行します。

次の画面で、オプションをデフォルト値のままにすることができます。

Zabbix Server Details

Nameはオプションです。複数の監視サーバーがある場合に、1つのサーバーを別のサーバーと区別するためにWebインターフェースで使用されます。 Next stepをクリックして続行します。

次の画面にインストール前の概要が表示されるため、すべてが正しいことを確認できます。

Summary

Next stepをクリックして、最終画面に進みます。

Webインターフェイスのセットアップが完了しました! このプロセスにより、将来バックアップして使用できる構成ファイル/usr/share/zabbix/conf/zabbix.conf.phpが作成されます。 Finishをクリックして、ログイン画面に進みます。 デフォルトのユーザーはAdminで、パスワードはzabbixです。

ログインする前に、他のサーバーでZabbixエージェントを設定しましょう。

[[ステップ-5 ---- installing-and-configuring-the-zabbix-agent]] ==ステップ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アドレスを編集する必要があります。 次のセクションを見つけます。

/etc/zabbix/zabbix_agentd.conf

### 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に変更します。

/etc/zabbix/zabbix_agentd.conf

Server=your_zabbix_server_ip_address

次に、Zabbixサーバーへの安全な接続を設定し、事前共有キーのサポートを有効にするセクションを見つけます。 次のようなTSLConnectセクションを見つけます。

/etc/zabbix/zabbix_agentd.conf

### 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

次に、次の行を追加して、事前共有キーのサポートを構成します。

/etc/zabbix/zabbix_agentd.conf

TLSConnect=psk

次に、次のようなTLSAcceptセクションを見つけます。

/etc/zabbix/zabbix_agentd.conf

### 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

次の行を追加して、事前共有キーをサポートする着信接続を構成します。

/etc/zabbix/zabbix_agentd.conf

TLSAccept=psk

次に、次のようなTLSPSKIdentityセクションを見つけます。

/etc/zabbix/zabbix_agentd.conf

### Option: TLSPSKIdentity
#       Unique, case sensitive string used to identify the pre-shared key.
#
# Mandatory: no
# Default:
# TLSPSKIdentity=

次の行を追加して、事前共有キーを識別する一意の名前を選択します。

/etc/zabbix/zabbix_agentd.conf

TLSPSKIdentity=PSK 001

Zabbix Webインターフェースを介してホストを追加するときに、これをPSK IDとして使用します。

次に、以前に作成した事前共有キーを指すオプションを設定します。 TLSPSKFileオプションを見つけます。

/etc/zabbix/zabbix_agentd.conf

### Option: TLSPSKFile
#       Full pathname of a file containing the pre-shared key.
#
# Mandatory: no
# Default:
# TLSPSKFile=

次の行を追加して、Zabbixエージェントが作成したPSKファイルを指すようにします。

/etc/zabbix/zabbix_agentd.conf

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コンソールからリンクする必要があります。

[。注意]##

Note: UFWを使用している場合は、ポート10050への接続を許可するように構成します。

sudo ufw allow 10050/tcp

UFWの詳細については、How To Set Up a Firewall with UFW on Ubuntu 16.04
をご覧ください。

[[step-6 -—- adding-the-new-host-to-zabbix-server]] ==ステップ6—新しいホストをZabbixサーバーに追加する

監視するサーバーにエージェントをインストールすることは、プロセスの半分だけです。 監視する各ホストは、Zabbixサーバーに登録する必要があります。これは、Webインターフェースから実行できます。

アドレスhttp://your_zabbix_server_ip_address/zabbix/に移動して、ZabbixサーバーのWebインターフェイスにログインします。

The Zabbix login screen

ログインしたら、上部のナビゲーションバーでConfigurationをクリックしてから、Hostsをクリックします。 次に、画面の右上隅にあるCreate hostボタンをクリックします。 これにより、ホスト構成ページが開きます。

Creating a host

Host nameIP ADDRESSを調整して、クライアントマシンのホスト名とIPアドレスを反映させます。 次に、リストからグループの1つを選択するか、独自のグループを作成して、ホストをグループに追加します。 ホストは複数のグループに属することができます。 Linux Serversグループがデフォルトの適切な選択です。 グループを追加したら、[Templates]タブをクリックします。

Adding a template to the host

SearchフィールドにTemplate OS Linuxと入力し、Addをクリックしてこのテンプレートをホストに追加します。

次に、Encryptionタブに移動します。 Connections to hostConnections from hostの両方にPSKを選択します。 次に、PSK identityPSK 001に設定します。これは、前に構成したZabbixエージェントのTLSPSKIdentity設定の値です。 次に、
PSK値をZabbixエージェント用に生成したキーに設定します。 これは、エージェントマシンのファイル/etc/zabbix/zabbix_agentd.pskに保存されているものです。

Setting up the encryption.

最後に、フォームの下部にあるAddボタンをクリックして、ホストを作成します。

すべてが正常に機能し、接続が暗号化されていることを示す緑色のラベルが付いた新しいホストが表示されます。

Zabbix shows your new host.

数秒後、Monitoring、次にLatest dataに移動して、エージェントからのデータを表示できます。

動作していることを確認するには、監視対象サーバーをシャットダウンして、Zabbixがどのように問題を警告しているかを確認します。 監視対象サーバーがオフラインになると、メインダッシュボードに警告が表示されます。

Zabbix shows you a warning about the host that’s offline.

追加のサーバーを監視する必要がある場合は、各ホストにログインし、Zabbixエージェントをインストールし、PSKを生成し、エージェントを設定し、最初のホストを追加するための手順と同じ手順に従って、ホストをWebインターフェースに追加します。

結論

このチュートリアルでは、サーバーの状態を監視するのに役立つ簡単で安全な監視ソリューションを設定する方法を学びました。 問題を警告できるようになり、取得したデータに基づいていくつかのグラフをプロットする機会が得られるため、それを分析して適宜計画を立てることができます。

Related