Wakame Users Group Advent Calendar 2013 12/19を担当
今回Wakame Advent Calendarを機会にVMware PlayerにインストールしたCentOS6.4を上でwakame-vdcとZabbixを使ってインスタンスの監視を行ってみよう思います。
なおVMware PlayerへのCentOS6.4のインストール手順とWakame-vdcの環境構築手順については他の人にまかせてここでは省略させていただきます。
- CentOS6.4がインストールされていること
- Wakame-vdcのセットアップが完了しインスタンスが起動できること
- CentOS6.4
- kernel-2.6.32-358.23.2.el6.x86_64
- zabbix-1.8.19-1.el6.x86_64
ここではwakame-vdcと連動させるZabbixのインストールと設定を行います。
今回は動作確認のとれているZabbix-1.8を使います。
# rpm -ivh http://repo.zabbix.com/zabbix/1.8/rhel/6/x86_64/zabbix-release-1.8-1.el6.noarch.rpm
# yum -y install zabbix-server-mysql zabbix-web-mysql
# mysql -u root
mysql> create database zabbix character set utf8;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
mysql> flush privileges;
# mysql -u root zabbix < /usr/share/doc/zabbix-server-mysql-1.8.19/create/schema/mysql.sql
# mysql -u root zabbix < /usr/share/doc/zabbix-server-mysql-1.8.19/create/data/images_mysql.sql
# mysql -u root zabbix < /usr/share/doc/zabbix-server-mysql-1.8.19/create/data/data.sql
# vi /etc/zabbix/zabbix_server.conf
DBPasswordを追加する
### Option: DBPassword
# Database password. Ignored for SQLite.
# Comment this line if no password is used.
#
# Mandatory: no
# Default:
# DBPassword=
DBPassword=zabbix
# vi /etc/php.ini
タイムゾーンをAsia/Tokyoにする
[Date]
; Defines the default timezone used by the date functions
; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
;date.timezone =
date.timezone = "Asia/Tokyo"
# /etc/init.d/httpd restart
# /etc/init.d/zabbix-server start
ブラウザでhttp://IPアドレス/zabbixにアクセスして初回設定を行うとログイン画面がでてきます。
Login nameとPasswordを入力してログインしてみましょう。
Login name: admin
Password: zabbix
Wakame-vdcではZabbixAPIを使ってZabbixとの連携を行っています。
ここでは連携させるための準備としてZabbix側に設定を作っていきます。
ZabbixのWebUIにアクセスし[Administration]->[Users]を選択
selectメニューから[Users]を選択して[Create User]を選択
以下の項目を設定してsaveします。
Alias: zabbix
Name: zabbix
Surname: api
Password: zabbix
Password(once again):zabbix
User type: Zabbix Super Admin
Groups: API access
Wakame側で起動したインスタンスをグループ化するためにHostGroupを追加します。
ZabbixのWebUIにアクセスし[Configuration]->[Hostgroups]->[Create Group]を選択
Group nameを追加してsaveします。
Group name: Public_Template
先ほど追加したHostGroupに紐づけるTemplatesを追加します。
TemplatesはZabbixにホストを追加したときにホストが使用する監視アイテムやアラート条件、マクロを設定することができます。
特に重要なのがマクロです。
マクロは監視アイテムや、トリガー条件に含めることもできます。
Wakame-vdcでは主にこのマクロの値を変えることでZabbix側の監視アイテムの内容やアラート条件などを変更しています。
ZabbixのWebUIにアクセスし[Configuration]->[Templates]->[Create Template]を選択
Name、Groups、macrosを追加してsaveします
Name: Public_Template
Groups: Public_Template
マクロを複数登録する場合は[Add]を押すことで複数行追加することができます。
{$IPADDRESS} => 0
{$PORT} => 0
{$PROCESS} => 0
先ほど作成したテンプレートに監視アイテムを追加します。
今回はネットワーク、プロセス、ポート監視用の3つのアイテムを追加します。
ZabbixのWebUIにアクセスし[Configuration]->[Templates]->[Create を選択
先ほど作成した[Public_Template]の[Items]を選択
[Create Item]を選択
ネットワーク監視設定
Description: ネットワーク監視
Key: icmpping[{$IPADDRESS},,,,1000]
status: Disabled
プロセス監視設定
Description: プロセス監視
Key: proc.num[,,,{$PROCESS}]
status: Disabled
ポート監視設定
Description: ポート監視
Key: tcp,{$PORT}
status: Disabled
Wakame-vdcではZabbixと連携させるためにnwmongwを使用します。
Wakme-vdcのインストールディレクトリに移動します。
# cd /home/wakame/work/wakame-vdc/dcmgr/config
# cp nwmongw.conf.example nwmongw.conf
# vi nwmongw.conf
先ほどZabbix側で設定したAPIのuserと作成したtemplateの名前を入れます。
# Database connection string
database_uri 'mysql2://localhost/wakame_dcmgr?user=root'
# AMQP broker to be connected.
amqp_server_uri 'amqp://localhost/'
# Driver specific configuration
driver('public_zabbix') {
api_uri 'http://localhost/zabbix/api_jsonrpc.php'
api_user 'zabbix'
api_password 'zabbix'
template_name 'Public_Template'
}
# Register instance, IP or items to backend if the VIFs are attached
# to the Network UUID following.
network 'nw-demo1'
# cd /home/wakame/work/wakame-vdc/dcmgr
# ./bin/nwmongw
ここでは実際にWakame-vdcを使ってインスタンスを起動しZabbixと連携しているかを確認します。
Wakame-vdcを使ってインスタンスを新規に起動します。
インスタンスが起動したらZabbixのWebUIにアクセスし[Configuration]->[Host]を選択し、インスタンスが新規に追加されているか確認します。
インスタンスがHostに追加されていればZabbixへのインスタンスの登録は成功です。
Zabbixにインスタンスを登録しただけではインスタンスのステータスは無効になっているので有効にして監視項目のモニターリングを動く様にします。
curlコマンドを実行しインスタンスのモニターリングを有効にします。
curl -fsSKL -H X_VDC_ACCOUNT_UUID:a-shpoolxx -X PUT \
--data-urlencode monitoring[enabled]=true \
http://localhost:9001/api/12.03/instances/i-ithf6ve2
Zabbix側でHostに追加されているインスタンスのステータスが有効になっていれば成功です。
最後にインスタンスの監視設定を入れてアイテムを有効化します。
curlコマンドを実行しプロセス監視の設定を入れます。
curl -fsSKL -H X_VDC_ACCOUNT_UUID:a-shpoolxx -X POST \
--data-urlencode title=PROCESS \
--data-urlencode enabled=true \
--data-urlencode params[name]=/usr/sbin/httpd \
http://localhost:9001/api/12.03/instances/i-ithf6ve2/monitoring
Zabbix側でHostに追加されているインスタンスのitemsを確認しプロセス監視のステータスが有効になっていれば成功です。
- Zabbixのマクロをうまく使うことで監視項目や、アラート条件を変更することができる
- 複数条件の監視項目を追加する場合は複数のマクロを登録する必要がある
- マクロを追加するとwakame側も修正する必要がある