ウェブサイト検索

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


Ubuntu 16.04を使用していませんか?別のバージョンやディストリビューションを選択してください。

紹介

Zabbixはネットワークおよびアプリケーションのためのオープンソースの監視ソフトウェアです。これは、サーバー、仮想マシン、その他のネットワークデバイスから収集された数千のメトリックのリアルタイム監視を提供します。これらのメトリックは、ITインフラストラクチャの現在の健康状態を判断し、顧客が不満を言う前にハードウェアやソフトウェアコンポーネントの問題を検出するのに役立ちます。役立つ情報はデータベースに保存されるため、時間をかけてデータを分析し、提供されるサービスの品質を向上させたり、設備のアップグレードを計画したりすることができます。

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

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

前提条件

このチュートリアルに従うためには、次のものが必要です:

  • sudo 非ルートユーザーが設定された2台の Ubuntu 16.04 サーバー。これらは、最初の Ubuntu サーバー設定に関する記事に従って設定できます。
  • Zabbixサーバーを実行するサーバーには、Apache、MySQL、およびPHPがインストールされている必要があります。あなたのサーバーの一つでそれらを構成するためのガイドに従ってください。

ステップ1 — Zabbixサーバーのインストール

まず、MySQL、Apache、PHPをインストールしたサーバーにZabbixサーバーをインストールする必要があります。このマシンをこのチュートリアルでは「Zabbixサーバー」と呼びます。このマシンに非rootユーザーとしてログインします:

  1. ssh sammy@your_zabbix_server_ip_address

Zabbixをインストールする前に、Zabbixが必要とするいくつかのPHPモジュールをインストールする必要があります。まず、システムの利用可能なパッケージのリストを更新してください:

  1. sudo apt-get update

次に、Zabbixが必要とするPHPモジュールをインストールします:

  1. 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

次の出力が表示されます:

Selecting 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サーバーとウェブフロントエンドをインストールします:

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データベースを作成し、基本情報でそれを populate する必要があります。また、ZabbixがrootアカウントでMySQLにログインしないように、このデータベース用の特定のユーザーも作成します。

MySQLサーバーのインストール中に設定したrootパスワードを使用して、rootユーザーとしてMySQLにログインします:

mysql -uroot -p

UTF-8文字サポートを持つZabbixデータベースを作成してください:

  1. create database zabbix character set utf8 collate utf8_bin;

次に、Zabbixサーバーが使用するユーザーを作成し、新しいデータベースへのアクセスを与え、そのユーザーのパスワードを設定します:

  1. grant all privileges on zabbix.* to zabbix@localhost identified by 'your_password';

それでは、新しい権限を適用してください。

  1. flush privileges;

それはユーザーとデータベースの管理を行います。データベースコンソールから退出してください。

  1. quit;

次に、初期スキーマとデータをインポートする必要があります。Zabbix のインストールが私たちにこれを設定するためのファイルを提供してくれました。

以下のコマンドを実行して、スキーマを設定し、データをzabbixデータベースにインポートします。ファイル内のデータが圧縮されているため、zcatを使用します。

zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix

zabbix MySQLユーザーのパスワードを、表示されたときに設定した通り入力してください。

このコマンドは成功した場合、エラーを出力しません。もしERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password: YES)というエラーが表示された場合は、rootユーザーではなく、zabbixユーザーのパスワードを使用していることを確認してください。

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

ファイルには、Zabbixウェブインターフェースに必要な要件を満たす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

次のステータスが表示されます:

● 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)
  ...

最後に、サーバーをブート時に起動するように設定します:

  1. sudo systemctl enable zabbix-server

サーバーが設定され、データベースに接続されました。さて、ウェブフロントエンドを設定しましょう。

ステップ4 — Zabbixウェブインターフェースの設定を構成する

ウェブインターフェースは、報告を表示し、監視したいホストを追加することを可能にしますが、使用する前に初期設定が必要です。ブラウザを起動し、アドレス http://your_zabbix_server_ip_address/zabbix/ にアクセスしてください。最初の画面には、ウェルカムメッセージが表示されます。次のステップをクリックして続けてください。

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

この表のすべての値はOKでなければなりませんので、それを確認してください。すべての前提条件を確認するために、必ず下にスクロールしてすべてを見てください。すべてが準備完了であることを確認したら、次のステップをクリックして進んでください。

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

私たちはZabbixサーバーにデータベースについて伝えましたが、Zabbixウェブインターフェースもホストを管理し、データを読み取るためにデータベースにアクセスする必要があります。したがって、ステップ2で設定したMySQLの認証情報を入力し、次のステップをクリックして進んでください。

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

名前はオプションです; 複数の監視サーバーがある場合、Webインターフェースでサーバーを区別するために使用されます。続行するには次のステップをクリックしてください。

次の画面では、すべてが正しいことを確認できるように、プレインストールの要約が表示されます。

次のステップをクリックして、最終画面に進んでください。

ウェブインターフェースの設定が完了しました!このプロセスでは、構成ファイル /usr/share/zabbix/conf/zabbix.conf.php が作成されます。これはバックアップを取って今後使用することができます。[完了] をクリックしてログイン画面に進んでください。デフォルトのユーザーは Admin で、パスワードは zabbix です。

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

ステップ5 — Zabbixエージェントのインストールと構成

今、監視データをZabbixサーバーに送信するエージェントソフトウェアを設定する必要があります。

2番目のサーバーにログインします。このサーバーを「監視サーバー」と呼びます。

  1. ssh sammy@your_monitored_server_ip_address

次に、Zabbix サーバーと同様に、以下のコマンドを実行してリポジトリ構成パッケージをインストールします:

  1. wget http://repo.zabbix.com/zabbix/3.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.2-1+xenial_all.deb
  2. sudo dpkg -i zabbix-release_3.2-1+xenial_all.deb

次に、パッケージインデックスを更新します:

  1. sudo apt-get update

次に、Zabbixエージェントをインストールします:

  1. sudo apt-get install zabbix-agent

Zabbixは証明書ベースの暗号化をサポートしていますが、証明書認証局の設定はこのチュートリアルの範囲を超えています。ただし、事前共有キー(PSK)を使用してサーバーとエージェントの接続を保護することができます。

まず、PSKを生成します:

  1. sudo sh -c "openssl rand -hex 32 > /etc/zabbix/zabbix_agentd.psk"

キーを表示してどこかにコピーできるようにしてください。ホストの設定にそれが必要です。

  1. cat /etc/zabbix/zabbix_agentd.psk

鍵はこのようなものになるでしょう:

cd12686e166a80aa09a227ae5f97834eaa3d5ae686d2ae39590f17ef85dd6de5

次に、Zabbixエージェントの設定を編集して、Zabbixサーバーとの安全な接続を設定します。テキストエディタでエージェントの設定ファイルを開いてください。

  1. 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ウェブインターフェイスを通じて追加する際に、これをPSK IDとして使用します。

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

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

作成したPSKファイルをZabbixエージェントに指示するために、この行を追加してください:

TLSPSKFile=/etc/zabbix/zabbix_agentd.psk

ファイルを保存して閉じます。これでZabbixエージェントを起動し、ブート時に自動スタートするように設定できます:

  1. sudo systemctl start zabbix-agent
  2. sudo systemctl enable zabbix-agent

念のため、Zabbixエージェントが正しく動作していることを確認してください。

  1. sudo systemctl status zabbix-agent

次のステータスが表示され、エージェントが実行中であることを示します。

● 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サーバーにデータを送信する準備ができています。しかし、これを使用するには、サーバーのウェブコンソールからリンクする必要があります。

注意: UFWを使用している場合は、ポート10050への接続を許可するように設定してください。

  1. sudo ufw allow 10050/tcp

UFWについてさらに学ぶには、Ubuntu 16.04でUFWを使用してファイアウォールを設定する方法をご覧ください。

ステップ6 — Zabbixサーバーに新しいホストを追加する

監視したいサーバーにエージェントをインストールすることはプロセスの半分に過ぎません。監視したい各ホストはZabbixサーバーに登録する必要があり、これはウェブインターフェースを通じて行うことができます。

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

ログインしたら、上部のナビゲーションバーの設定をクリックし、その後ホストをクリックします。そして、画面の右上隅にあるホストの作成ボタンをクリックします。これにより、ホスト設定ページが開きます。

クライアントマシンのホスト名とIPアドレスを反映するようにホスト名とIPアドレスを調整してください。その後、リストからグループの1つを選択するか、自分のグループを作成することでホストをグループに追加します。ホストは複数のグループに属することができます。Linuxサーバーグループは良いデフォルトの選択です。グループを追加したら、テンプレートタブをクリックしてください。

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

次に、暗号化タブに移動します。ホストへの接続とホストからの接続の両方に対してPSKを選択します。その後、PSK識別子をPSK 001に設定します。これは、前に設定したZabbixエージェントのTLSPSKIdentity設定の値です。次に、PSK値をZabbixエージェントのために生成したキーに設定します。それは、エージェントマシンのファイル/etc/zabbix/zabbix_agentd.pskに保存されているものです。

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

新しいホストには、すべてが正常に動作しており、接続が暗号化されていることを示す緑のラベルが表示されます。

数秒後に、モニタリングに移動し、次に最新のデータを選択すると、エージェントからのデータを見ることができます。

物事が正常に機能していることを確認するために、監視サーバーをシャットダウンして、Zabbixが問題をどのように警告するかを確認してください。監視サーバーがオフラインになると、メインダッシュボードに警告が表示されます:

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

結論

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

関連記事: