Amazon LinuxにZabbix2.0.9をインストールしてみた
以前、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番ポートを開けたセキュリティグループに所属させます。
上のような状態でEC2インスタンスが立ち上がったらZabbixサーバを構築していきましょう。
- 必要なパッケージのインストール
- Zabbix用データベースの作成
- 各種設定
の順序で進めていきます。
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/
でアクセスできます。
アクセスできない場合、原因として、
- 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」
へと進んでください。
「Members」列の「Admin」リンクからAdminユーザの設定画面に移動できます。
この画面でパスワードを変更し、ついでに言語設定も日本語にしておきましょう。
guestユーザも同様に変更してください。
監視対象サーバへのZabbixエージェントのインストール
まず、EC2インスタンスを起動させます。
設定項目はZabbixサーバとほぼ同じですが、セキュリティグループのみ異なります。外部からSSH用セキュリティグループに加えて、Zabbixサーバからのアクセス用に10050番ポートを開けたセキュリティグループに所属させてください。アクセス元はセキュリティグループ「zabbix-server」にしています。
上のような状態でEC2インスタンスが立ち上がったらZabbix監視エージェントを導入していきましょう。
- 必要なパッケージのインストール
- エージェントの設定
の順序で進めていきます。
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
監視設定
ホストの登録
ウェブインタフェースの上部タブから「設定」➡「ホスト」を選び、
「ホストの作成」ボタンを押してください。
ホストとは監視対象のことです。設定項目は、「ホスト名」「グループ」「IPアドレス」のみで大丈夫です。IPアドレスには先ほど構築した監視対象サーバのプライベートIPアドレスを指定しています。
[ec2-user@linux01 ~]$ curl 169.254.169.254/latest/meta-data/local-ipv4 192.168.1.233
下の画像のようにホスト(linux01)の登録ができたら、アイテムの登録を行います。
アイテムの登録
アイテムとは監視項目のことです。Zabbixエージェントを利用する場合、50以上の監視項目の中から必要なものを選ぶことができます。項目の一覧はこちらを参照ください。
「アイテム」リンクからそのホストに設定されているアイテム一覧が面に遷移したら、右上の「アイテムの作成」ボタンを押してください。
今回はCPU使用率を監視してみましょう。
上はユーザプロセス(user)によるCPUの使用率の1分間の平均(avg1)を全CPU(all)について監視する場合です。データ型は「数値(浮動小数)」を指定してください。単位は指定しなくても問題ありませんがここでは「%」を指定しています。
しばらく待ってから「監視データ」➡「最新データ」に移動すると、設定したアイテムの値が表示されるはずです。
グラフ。
しばらく待っても結果が表示されない場合、原因として
- 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サーバの構築には多少手間がかかりますが、一度サーバさえ立ててしまえば監視したいサーバにエージェントをインストールするだけで必要な監視は大体できるようになります。今回は紹介しませんでしたが、障害の判定や管理者への通知も簡単に設定できますので、一度試してみてはいかがでしょうか。