Skip to content

Instantly share code, notes, and snippets.

@t-iwano
Last active December 31, 2015 19:28
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save t-iwano/8033320 to your computer and use it in GitHub Desktop.
Save t-iwano/8033320 to your computer and use it in GitHub Desktop.

Wakame-vdcを使ってインスタンスの監視をしてみる(Zabbix)

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

Zabbixのインストールと設定

ここではwakame-vdcと連動させるZabbixのインストールと設定を行います。

今回は動作確認のとれているZabbix-1.8を使います。

Zabbixのyumリポジトリの登録

 # rpm -ivh http://repo.zabbix.com/zabbix/1.8/rhel/6/x86_64/zabbix-release-1.8-1.el6.noarch.rpm

Zabbixのインストール

 # yum -y install zabbix-server-mysql zabbix-web-mysql

Zabbix用のDBとユーザーの作成

 # 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;

Zabbix用スキーマとデータをインポート

 # 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

Zabbixサーバーの設定

 # 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

php.iniの編集

 # 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"

Apacheの起動

 # /etc/init.d/httpd restart

Zabbix-Serverの起動

 # /etc/init.d/zabbix-server start

ブラウザでhttp://IPアドレス/zabbixにアクセスして初回設定を行うとログイン画面がでてきます。

Login nameとPasswordを入力してログインしてみましょう。

Login name: admin
Password: zabbix

Wakame-vdcとの連携準備

Wakame-vdcではZabbixAPIを使ってZabbixとの連携を行っています。

ここでは連携させるための準備としてZabbix側に設定を作っていきます。

Zabbix APIで使用するユーザーの作成

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

HostGroupの追加

Wakame側で起動したインスタンスをグループ化するためにHostGroupを追加します。

ZabbixのWebUIにアクセスし[Configuration]->[Hostgroups]->[Create Group]を選択

Group nameを追加してsaveします。

Group name: Public_Template

Zabbix-Templatesの追加

先ほど追加した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

Zabbix-TemplatesにItemを追加

先ほど作成したテンプレートに監視アイテムを追加します。

今回はネットワーク、プロセス、ポート監視用の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の設定

Wakame-vdcではZabbixと連携させるためにnwmongwを使用します。

Wakme-vdcのインストールディレクトリに移動します。

 # cd /home/wakame/work/wakame-vdc/dcmgr/config

nwmongw.confのコピー

 # cp nwmongw.conf.example nwmongw.conf

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'

nwmongwの起動

 # cd /home/wakame/work/wakame-vdc/dcmgr
 # ./bin/nwmongw

インスタンスの監視をしてみよう

ここでは実際にWakame-vdcを使ってインスタンスを起動しZabbixと連携しているかを確認します。

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側も修正する必要がある
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment