Amazon LinuxにZabbix2.0.9をインストールしてみた

2013.10.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

以前、Zabbix1.8.15のインストール方法について本ブログで紹介いたしました。

今回は最新の安定板である2.0系のZabbixをAmazon Linuxにインストールしてみましょう。

アイテム(監視項目のこと)の自動検知やAPI機能の正式化等、運用を効率化できる機能がたくさん追加されているので、これからZabbixを導入される方は2.0系を使うことをお勧めします。

(詳細はリリースノートをご覧ください。)

 

<

h2>構成

  • Zabbixサーバ
    • AMI: Amazon Linux AMI 2013.09
    • セキュリティグループ: base(22/TCPを許可), zabbix-server(80/TCPを許可)
  • 監視対象サーバ
    • AMI: Amazon Linux AMI 2013.09
    • セキュリティグループ: base(22/TCPを許可), zabbix-agent(10050/TCPを許可)

<

h2>Zabbixサーバの構築

まず、EC2インスタンスを起動させます。

AMIは執筆時点で最新のAmazon Linux AMI 2013.09(64bit)を利用します。外部からSSH接続するため22番ポートを開けたセキュリティグループと、ウェブインタフェースアクセス用に80番ポートを開けたセキュリティグループに所属させます。

WS000007

上のような状態でEC2インスタンスが立ち上がったらZabbixサーバを構築していきましょう。

  1. 必要なパッケージのインストール
  2. Zabbix用データベースの作成
  3. 各種設定

の順序で進めていきます。


rootユーザとして作業していきます。

[ec2-user@zabbix-server ~]$ sudo su -
[root@zabbix-server ~]#

必要なパッケージのインストール

まず、Zabbixの公式yumレポジトリを登録し、

[root@zabbix-server ~]# rpm -ivh http://repo.zabbix.com/zabbix/2.0/rhel/6/x86_64/zabbix-release-2.0-1.el6.noarch.rpm
(出力略)

最新版2.2系をインストールする場合は、上記の代わりに下記レポジトリを登録してください。

[root@zabbix-server ~]# rpm -ivh http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6.noarch.rpm
(出力略)

Zabbixサーバとウェブインタフェース、日本語対応のパッケージをインストールします。このとき、依存関係にあるパッケージも自動でインストールされます。

[root@zabbix-server ~]# yum install zabbix-server-mysql zabbix-web-mysql zabbix-web-japanese
(出力略)
[root@zabbix-server ~]# zabbix_server -V
Zabbix server v2.0.9 (revision 39085) (08 October 2013)
Compilation time: Oct 12 2013 21:05:13

Zabbix2.0.9がインストールされてますね。

今回、データベースとしてMySQLを利用するので、MySQLサーバもインストールします。

[root@zabbix-server ~]# yum install mysql-server
(出力略)
[root@zabbix-server ~]# mysqladmin version
mysqladmin  Ver 8.42 Distrib 5.5.34, for Linux on x86_64
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

MySQL5.5.34がインストールされました。

MySQLサーバを起動し、また、次回からインスタンス起動時に自動でMySQLサーバが起動されるようにします。

[root@zabbix-server ~]# service mysqld start
[root@zabbix-server ~]# chkconfig mysqld on

Zabbix用データベースの作成

Zabbix用のデータベースとユーザを作成し、スキーマと初期データをインポートしましょう。

下の例はデータベースユーザを名前、パスワードともに「zabbix」で作成する場合です。適宜変更してください。

[root@zabbix-server ~]# mysql -uroot
(出力略)

mysql> create database zabbix character set utf8;
Query OK, 1 row affected (0.00 sec)

mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> use zabbix;
mysql> source /usr/share/doc/zabbix-server-mysql-2.0.9/create/schema.sql
(出力略)
mysql> begin;
mysql> source /usr/share/doc/zabbix-server-mysql-2.0.9/create/images.sql
(出力略)
mysql> source /usr/share/doc/zabbix-server-mysql-2.0.9/create/data.sql
(出力略)
mysql> commit;

mysql> quit
Bye

各種設定

作成したデータベース情報に合わせてZabbixサーバの設定を行います。

設定する項目はとりあえず「DBName」「DBUser」「DBPassword」の3つだけ大丈夫です。

[root@zabbix-server ~]# vim +83 /etc/zabbix/zabbix_server.conf
     83 ### Option: DBName
     84 #       Database name.
     85 #       For SQLite3 path to database file must be provided. DBUser and DBPassword are ignored.
     86 #
     87 # Mandatory: yes
     88 # Default:
     89 # DBName=
     90
     91 DBName=zabbix
     92
     93 ### Option: DBSchema
     94 #       Schema name. Used for IBM DB2.
     95 #
     96 # Mandatory: no
     97 # Default:
     98 # DBSchema=
     99
    100 ### Option: DBUser
    101 #       Database user. Ignored for SQLite.
    102 #
    103 # Mandatory: no
    104 # Default:
    105 # DBUser=
    106
    107 DBUser=zabbix
    108
    109 ### Option: DBPassword
    110 #       Database password. Ignored for SQLite.
    111 #       Comment this line if no password is used.
    112 #
    113 # Mandatory: no
    114 # Default:
    115 # DBPassword=
    116
    117 DBPassword=zabbix

Zabbixサーバを起動し、自動起動設定も行います。

[root@zabbix-server ~]# service zabbix-server start
Starting Zabbix server:                                    [  OK  ]
[root@zabbix-server ~]# chkconfig zabbix-server on

以上でZabbixサーバの設定、起動は終了です。ウェブサーバApacheを立ち上げればウェブインタフェースにアクセスできるようになります。

ただし、Apacheのバージョンが2.4の場合、Apache用Zabbix設定ファイル(/etc/httpd/conf.d/zabbix.conf)の内容を修正する必要があります。

[root@zabbix-server ~]# httpd -v
Server version: Apache/2.4.6 (Amazon)
Server built:   Sep 20 2013 18:01:06

Apache2.4からアクセス制限の記述方法が変更になったのですが、zabbix-webパッケージに含まれる設定ファイルではApache2.2用の記法で設定されているからです。

こちらの説明にしたがって、設定ファイルを変更します。

[root@zabbix-server ~]# vim /etc/httpd/conf.d/zabbix.conf
  1 #
  2 # Zabbix monitoring system php web frontend
  3 #
  4
  5 Alias /zabbix /usr/share/zabbix
  6
  7 <Directory "/usr/share/zabbix">
  8     Options FollowSymLinks
  9     AllowOverride None
 10     # Order allow,deny
 11     # Allow from all
 12     Require all granted
 13
 14     php_value max_execution_time 300
 15     php_value memory_limit 128M
 16     php_value post_max_size 16M
 17     php_value upload_max_filesize 2M
 18     php_value max_input_time 300
 19     # php_value date.timezone Europe/Riga
 20     php_value date.timezone Asia/Tokyo
 21 </Directory>
 22
 23 <Directory "/usr/share/zabbix/conf">
 24     # Order deny,allow
 25     # Deny from all
 26     Require all denied
 27     <files *.php>
 28         # Order deny,allow
 29         # Deny from all
 30         Require all denied
 31     </files>
 32 </Directory>
 33
 34 <Directory "/usr/share/zabbix/api">
 35     # Order deny,allow
 36     # Deny from all
 37     Require all denied
 38     <files *.php>
 39         # Order deny,allow
 40         # Deny from all
 41         Require all denied
 42     </files>
 43 </Directory>
 44
 45 <Directory "/usr/share/zabbix/include">
 46     # Order deny,allow
 47     # Deny from all
 48     Require all denied
 49     <files *.php>
 50         # Order deny,allow
 51         # Deny from all
 52         Require all denied
 53     </files>
 54 </Directory>
 55
 56 <Directory "/usr/share/zabbix/include/classes">
 57     # Order deny,allow
 58     # Deny from all
 59     Require all denied
 60     <files *.php>
 61         # Order deny,allow
 62         # Deny from all
 63         Require all denied
 64     </files>
 65 </Directory>

また、20行目でタイムゾーンの指定もしています。

以上ですべての設定が終わりました。

ウェブサーバを起動し、インタフェースにアクセスしてみましょう。

[root@zabbix-server ~]# service httpd start
Starting httpd:                                            [  OK  ]
[root@zabbix-server ~]# chkconfig httpd on

動作確認

ウェブインタフェースへは
http://<<パブリックIPアドレス>>/zabbix/ でアクセスできます。

WS000001

アクセスできない場合、原因として、

  • Zabbixサーバのプロセス(zabbix_server)が起動していない
  • ウェブサーバApacheのプロセス(httpd)が起動していない
  • セキュリティグループ「zabbix-server」の80番ポートが開いていない

が考えられます。下記の方法で確認し、問題があれば修正してください。

[root@zabbix-server ~]# ps -C zabbix_server|head -n 2
  PID TTY          TIME CMD
19098 ?        00:00:00 zabbix_server
[root@zabbix-server ~]# ps -C httpd|head -n 2
  PID TTY          TIME CMD
 3938 ?        00:00:25 httpd
[root@zabbix-server ~]# yum install telnet
(出力略)
[root@zabbix-server ~]# telnet $(curl ifconfig.me 2>/dev/null) 80
Trying xxx.xxx.xxx.xxx...
Connected to xxx.xxx.xxx.xxx.
Escape character is '^]'.
Connection closed by foreign host.

無事アクセスできたら

Username: Admin
Password: zabbix
でログインしてください。

初期状態でAdminとguestの2人のユーザがいるので、それぞれパスワードを変更しておきましょう。

ウィザード終了後の画面の画面から
「Administration」→「Users」
へと進んでください。

WS000008

「Members」列の「Admin」リンクからAdminユーザの設定画面に移動できます。

WS000009

この画面でパスワードを変更し、ついでに言語設定も日本語にしておきましょう。

guestユーザも同様に変更してください。

監視対象サーバへのZabbixエージェントのインストール

まず、EC2インスタンスを起動させます。

設定項目はZabbixサーバとほぼ同じですが、セキュリティグループのみ異なります。外部からSSH用セキュリティグループに加えて、Zabbixサーバからのアクセス用に10050番ポートを開けたセキュリティグループに所属させてください。アクセス元はセキュリティグループ「zabbix-server」にしています。

スクリーンショット 2013-10-28 15.47.44

上のような状態でEC2インスタンスが立ち上がったらZabbix監視エージェントを導入していきましょう。

  1. 必要なパッケージのインストール
  2. エージェントの設定

の順序で進めていきます。


Zabbixの公式yumレポジトリ登録まではZabbixサーバと同様に進めて、Zabbixエージェントをインストールします。

[ec2-user@linux01 ~]$ sudo su -
[root@linux01 ~]# rpm -ivh http://repo.zabbix.com/zabbix/2.0/rhel/6/x86_64/zabbix-release-2.0-1.el6.noarch.rpm
(出力略)
[root@linux01 ~]# yum install zabbix-agent
(出力略)
[root@linux01 ~]# zabbix_agent -V
Zabbix agent v2.0.9 (revision 39085) (08 October 2013)
Compilation time: Oct 12 2013 21:09:19

引き続きZabbixエージェントの設定を行います。
とりあえず、エージェントに問い合わせを行うZabbixサーバのIPアドレスの指定だけで大丈夫です。

本検証環境のZabbixサーバのプライベートIPアドレスは

[root@zabbix-server ~]# curl 169.254.169.254/latest/meta-data/local-ipv4
192.168.1.21

ですので、設定ファイルの「Server」に同じ値を指定します。

[root@linux01 ~]# vim +86 /etc/zabbix/zabbix_agentd.conf
 86 # Server=127.0.0.1
 87 Server=192.168.1.21

以上で、エージェント側の設定はおしまいです。エージェントを起動し、ウェブインタフェースから監視設定を行いましょう。

[root@linux01 ~]# service zabbix-agent start
Starting Zabbix agent:                                     [  OK  ]
[root@linux01 ~]# chkconfig zabbix-agent on

監視設定

ホストの登録

ウェブインタフェースの上部タブから「設定」➡「ホスト」を選び、

スクリーンショット 2013-10-28 16.37.09

「ホストの作成」ボタンを押してください。

スクリーンショット 2013-10-28 16.43.18

ホストとは監視対象のことです。設定項目は、「ホスト名」「グループ」「IPアドレス」のみで大丈夫です。IPアドレスには先ほど構築した監視対象サーバのプライベートIPアドレスを指定しています。

[ec2-user@linux01 ~]$ curl 169.254.169.254/latest/meta-data/local-ipv4
192.168.1.233

下の画像のようにホスト(linux01)の登録ができたら、アイテムの登録を行います。 スクリーンショット 2013-10-28 16.56.43

アイテムの登録

アイテムとは監視項目のことです。Zabbixエージェントを利用する場合、50以上の監視項目の中から必要なものを選ぶことができます。項目の一覧はこちらを参照ください。

「アイテム」リンクからそのホストに設定されているアイテム一覧が面に遷移したら、右上の「アイテムの作成」ボタンを押してください。

スクリーンショット 2013-10-28 17.14.35

今回はCPU使用率を監視してみましょう。

スクリーンショット 2013-10-28 17.22.50

上はユーザプロセス(user)によるCPUの使用率の1分間の平均(avg1)を全CPU(all)について監視する場合です。データ型は「数値(浮動小数)」を指定してください。単位は指定しなくても問題ありませんがここでは「%」を指定しています。

スクリーンショット 2013-10-28 17.41.37

しばらく待ってから「監視データ」➡「最新データ」に移動すると、設定したアイテムの値が表示されるはずです。

スクリーンショット 2013-10-28 17.52.35

グラフ。

スクリーンショット 2013-10-28 17.52.54

しばらく待っても結果が表示されない場合、原因として

  • Zabbixエージェントのプロセス(zabbix_agentd)が起動していない
  • セキュリティグループ「zabbix-agent」の10050番ポートが開いていない

が考えられます。下記の方法で確認し、問題があれば修正してください。

監視対象サーバから

[root@linux01 ~]# ps -C zabbix_agentd|head -n 2
  PID TTY          TIME CMD
 1413 ?        00:00:00 zabbix_agentd
[root@linux01 ~]# netstat -anp|grep zabbix_agentd
tcp        0      0 0.0.0.0:10050               0.0.0.0:*                   LISTEN      1413/zabbix_agentd  
tcp        0      0 :::10050                    :::*                        LISTEN      1413/zabbix_agentd

Zabbixサーバから

[root@zabbix-server ~]# yum install telnet
(出力略)
[root@zabbix-server ~]# telnet <<監視対象サーバのプライベートIPアドレス>> 10050
Trying 192.168.1.233...
Connected to 192.168.1.233.
Escape character is '^]'.
Connection closed by foreign host.

Zabbixサーバの構築には多少手間がかかりますが、一度サーバさえ立ててしまえば監視したいサーバにエージェントをインストールするだけで必要な監視は大体できるようになります。今回は紹介しませんでしたが、障害の判定や管理者への通知も簡単に設定できますので、一度試してみてはいかがでしょうか。