Zabbix を使ったサーバー監視 (2) - Nginx の監視
(前回の記事: Zabbix を使ったサーバー監視 (1) - Zabbix のインストール) Zabbix はサーバーで動いているプロセスを監視することができます。 今回は、Zabbix を使って、Webサーバーのひとつである Nginx を監視してみましょう。 今回は 2台のサーバーマシンを使います。ひとつは、前回 Zabbixサーバーを作ったときのサーバーマシンです。この記事では、このサーバーマシンを zabbix-server と呼ぶことにします。 もうひとつは、今回 Webサーバーを作るためのサーバーマシンです。この記事では、このサーバーマシンを web-server ...
(前回の記事: 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
上記では、Server と ServerActive には 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 をクリックしてください。
ホストの新規作成画面が表示されます。今回は web-server という名前で登録します。この名前は、Zabbix Agent の設定ファイルの Hostname の値と同じである必要があります。
ホストの設定を保存したら、以下のような画面に遷移します。この画面から、web-server が監視対象になったことが分かります。
Template の作成
次に、Nginx の監視設定を記述するテンプレートを作成します。Configuration -> Templates に移動してください。遷移後のページには、初めから用意されているたくさんのテンプレートが表示されているはずです。
Create templateボタンをクリックすると、テンプレートの新規作成画面に遷移します。今回は、他のテンプレートのやりかたに従って、図のように Template name と Visible name を設定しました。Groups の設定では、Template を指定してください。これらを入力したら、Addボタンをクリックしてください。バリデーションエラーなどが起きなければ、テンプレートの一覧画面に戻ります。
Application の作成
Templates の列の Template App Nginx をクリックして、遷移先のページで Application をクリックしてください。そうすると、Name の入力を求められるので、Nginx と入力して、Addボタンを押してください。
Item の作成
次は、Items をクリックして Item のページに行き、Create itemボタンを押してください。
そうすると、Item の新規作成画面が表示されるので、以下のように入力して、保存してください。
Trigger の作成
最後に、Trigger を設定します。Trigger は、Item の状態を監視し、条件に一致したときに警告などを出す機能です。まず、Trigger というリンクをクリックし、右上の Group を Template にします。そして、Create triggerボタンを押してください。
そうすると、Trigger の新規作成画面が表示されるので、以下のように入力してください。これを保存すれば、テンプレートの設定は完了です。
それでは、今回作成したテンプレートを web-serverホストに適用してみましょう。Configuration -> Hosts の画面に行き、web-server をクリックしてホストの編集画面に移動してください。そして、Templates というタブに切り替えて、Link new templates に nginx と入力すると、Template App Nginx というテンプレートの名前が表示されますので、それを選択してください。テンプレートを選択した後には、必ず Addボタンを押してください。押さないと、選択したテンプレートが追加されません。 そして、Addした後に、Updateボタンを押して、保存してください。
保存が完了すると、ホストの一覧画面が表示され、そこでテンプレートが追加されたことを確認できます。
さて、それでは、Zabbix が Nginx のプロセスを正しく監視できているかを確かめましょう。web-server 側で、Nginx を停止させて、Monitoring -> Dashboard のページを開いてください。以下のようにアラートが表示されているはずです。
では、止めていた Nginx を起動してみましょう。Dashboard のページのアラートが消えるはずです。
このように、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