Zabbix を使ったサーバー監視 (2) - Nginx の監視

(前回の記事: Zabbix を使ったサーバー監視 (1) - Zabbix のインストール)

Zabbix はサーバーで動いているプロセスを監視することができます。 今回は、Zabbix を使って、Webサーバーのひとつである Nginx を監視してみましょう。

今回は 2台のサーバーマシンを使います。ひとつは、前回 Zabbixサーバーを作ったときのサーバーマシンです。この記事では、このサーバーマシンを zabbix-server と呼ぶことにします。 もうひとつは、今回 Webサーバーを作るためのサーバーマシンです。この記事では、このサーバーマシンを web-server と呼ぶことにします。

この記事では、どちらにも仮想マシンを使っており、zabbix-serverの仮想マシンの IPアドレスが 192.168.33.11 で、web-server の仮想マシンの IPアドレスが 192.168.33.12 であることを前提としています。 記事の最後に付録として Vagrantファイルを載せておいたので、参考にしてください。

環境

  • ホストマシン

    • Vagrant 1.7.2
    • VirtualBox 4.3.26
  • ゲストマシン

    • Ubuntu Server 14.04 LTS

Nginx のインストール

web-server で以下のコマンドを実行してください。

sudo yum -y install nginx

Zabbix Agent のインストール

公式サイトのドキュメントに書いてある手順に従って、web-server に Zabbix Agent をインストールしてください。

https://www.zabbix.com/documentation/2.4/manual/installation/install_from_packages

インストールできたら、Zabbix Agent の設定ファイル /etc/zabbix/zabbix_agentd.conf の以下の 3箇所を編集します。

Server=192.168.33.11
ServerActive=192.168.33.11
Hostname=web-server

上記では、ServerServerActive には zabbix-server の IPアドレスを指定しています。 また、Hostname には、web-server を指定しています。ちなみに、Hostname はすべての監視対象のサーバーで一意である必要があります。

上記の設定ファイルを保存したら、Zabbix Agent を再起動します。

sudo service zabbix-agent restart

注意!

AWS では、セキュリティグループの設定もする必要があります。zabbix-server のセキュリティグループでは、Custom TCP port の 10051番 を開けてください。Source には 172.31.0.0/16 などを指定すると良いでしょう。

また、web-server のセキュリティグループでは、Custom TCP port の 10050番 を開けてください。Sourceには、zabbix-server のセキュリティグループの ID を指定すると良いでしょう。

Zabbixサーバー側の設定

Zabbix の画面で、サーバーの監視設定をします。

Host の追加

Zabbix の画面を開き、Configuration -> Hosts に移動してください。そうすると、以下のような画面が表示されるので、この画面内の右上にある Create host をクリックしてください。

スクリーンショット 2015-05-12 17.58.22.png

ホストの新規作成画面が表示されます。今回は web-server という名前で登録します。この名前は、Zabbix Agent の設定ファイルの Hostname の値と同じである必要があります。

スクリーンショット 2015-05-12 17.59.10.png

ホストの設定を保存したら、以下のような画面に遷移します。この画面から、web-server が監視対象になったことが分かります。

スクリーンショット 2015-05-12 17.59.27.png

Template の作成

次に、Nginx の監視設定を記述するテンプレートを作成します。Configuration -> Templates に移動してください。遷移後のページには、初めから用意されているたくさんのテンプレートが表示されているはずです。

スクリーンショット 2015-05-12 18.05.18.png

Create templateボタンをクリックすると、テンプレートの新規作成画面に遷移します。今回は、他のテンプレートのやりかたに従って、図のように Template name と Visible name を設定しました。Groups の設定では、Template を指定してください。これらを入力したら、Addボタンをクリックしてください。バリデーションエラーなどが起きなければ、テンプレートの一覧画面に戻ります。

スクリーンショット 2015-05-12 18.05.46.png

Application の作成

Templates の列の Template App Nginx をクリックして、遷移先のページで Application をクリックしてください。そうすると、Name の入力を求められるので、Nginx と入力して、Addボタンを押してください。

スクリーンショット 2015-05-12 18.06.39.png

Item の作成

次は、Items をクリックして Item のページに行き、Create itemボタンを押してください。

スクリーンショット 2015-05-12 18.06.47.png

そうすると、Item の新規作成画面が表示されるので、以下のように入力して、保存してください。

スクリーンショット 2015-05-12 18.08.56.png

Trigger の作成

最後に、Trigger を設定します。Trigger は、Item の状態を監視し、条件に一致したときに警告などを出す機能です。まず、Trigger というリンクをクリックし、右上の Group を Template にします。そして、Create triggerボタンを押してください。

スクリーンショット 2015-05-13 6.58.00.png

そうすると、Trigger の新規作成画面が表示されるので、以下のように入力してください。これを保存すれば、テンプレートの設定は完了です。

スクリーンショット 2015-05-13 6.59.39.png

それでは、今回作成したテンプレートを web-serverホストに適用してみましょう。Configuration -> Hosts の画面に行き、web-server をクリックしてホストの編集画面に移動してください。そして、Templates というタブに切り替えて、Link new templates に nginx と入力すると、Template App Nginx というテンプレートの名前が表示されますので、それを選択してください。テンプレートを選択した後には、必ず Addボタンを押してください。押さないと、選択したテンプレートが追加されません。 そして、Addした後に、Updateボタンを押して、保存してください。

スクリーンショット 2015-05-12 18.10.47.png

スクリーンショット 2015-05-12 18.11.05.png

スクリーンショット 2015-05-12 18.11.12.png

保存が完了すると、ホストの一覧画面が表示され、そこでテンプレートが追加されたことを確認できます。

スクリーンショット 2015-05-12 18.14.57.png

さて、それでは、Zabbix が Nginx のプロセスを正しく監視できているかを確かめましょう。web-server 側で、Nginx を停止させて、Monitoring -> Dashboard のページを開いてください。以下のようにアラートが表示されているはずです。

スクリーンショット 2015-05-13 7.03.34.png

では、止めていた Nginx を起動してみましょう。Dashboard のページのアラートが消えるはずです。

スクリーンショット 2015-05-13 7.05.24.png

このように、Zabbix では、サーバーのプロセスの状態を監視して、条件に応じて Zabbixの画面上にアラートを出すことができます。

次回は、今回作成した仕組みを利用して、Nginx が落ちたときに、チャットワークを上で管理者に通知する仕組みを作ってみたいと思います。

Zabbix を使ったサーバー監視 (3) - チャットワークへの通知

付録: 今回使用した Vagrantファイル

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(2) do |config|
  config.vm.box = "ubuntu-14.04"
  config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box"
  config.vm.provider "virtualbox" do |vb|
    vb.memory = "1024"
  end

  config.vm.define "zabbix-server" do |cfg|
    cfg.vm.network "private_network", ip: "192.168.33.11"
    cfg.vm.synced_folder "../data-zabbix-server", "/vagrant_data", nfs: true
  end

  config.vm.define "web-server" do |cfg|
    cfg.vm.network "private_network", ip: "192.168.33.12"
    cfg.vm.synced_folder "../data-web-server", "/vagrant_data", nfs: true
  end
end