Zabbixによる CloudStack環境の 統合監視 - OSS運用管理勉強会

ICTの力を、お客様のビジネスの推進力に。
Zabbixによる
CloudStack環境の
統合監視
戦略マーケティング部
マーケティング1室
三島 匡史
2013年7月19日
1
CloudStack環境における運用課題
CloudStackのデータ収集
作成されたインスタンス
の監視自動化
CloudStackの監視機能では
継続的なデータ収集ができない
CloudStack上で作られる
たくさんのインスタンス
(仮想マシン)の監視を
個別に設定するのは非常に
手間がかかってしまう。
運用の基礎データとして
分析したい
インスタンスの起動と自動に
監視を始めてほしい
2
All Rights Reserved, Uniadex Ltd. 2013
アジェンダ
自己紹介
CloudStackのご紹介
ZabbixによるCloudStack監視自動化
デモ
3
All Rights Reserved, Uniadex Ltd. 2013
自己紹介
三島匡史 (みしま
ただし)
基盤構築サービスのマーケティング担当
OSSを使ったシステム開発教育、Linuxシステム構築、
運用サービスなどの企画、設計、提案などを
いままで行ってきました
CloudStack、Zabbixなどを活用した、
システム基盤構築サービスをご紹介しております
4
All Rights Reserved, Uniadex Ltd. 2013
会社概要
社 名:
住 所:
設 立:
資本金:
株 主:
従業員:
売上高:
関連企業:
ユニアデックス株式会社
東京都江東区豊洲1-1-1
1997年3月4日
7億5,000万円
日本ユニシス株式会社(100%)
2,703名(2013年4月現在)
970億円(2013年3月期実績)
エス・アンド・アイ株式会社(2008年5月 連結子会社化)
日本ユニシスグループの総合ICTサポートサービス企業
ICT基盤のプロフェッショナル集団
お客さまが最適なICT環境を創る
お客さまがICTを効果的に使う
お客さまが自身のICTインフラを安全/確実に守る
という3つの局面に応じた支援サービスを提供
5
All Rights Reserved, Uniadex Ltd. 2013
ユニアデックスの特徴
24時間365日のサービス体制
ハードウエア、ソフトウエア、ネットワークに対応した3つの
サポートを統合したマネージド・サービスセンターと、
国内約180ヵ所の拠点が連携するサポート体制
高品質なサービス
全国 約2200名の技術者が、ISO9001、CMMI、ISMSなど
の認証、ITIL準拠など多くの国際規格に裏付けられた品質
でサービスを提供します
マルチベンダー/ワンストップ
大手有力ベンダーとの強力なパートナーシップのもと、
ベンダーニュートラルな立場で、お客様にとって最適なハー
ドウエア/ソフトウエアを選定/調達。
設計/導入/保守までをワンストップでご提供します
6
All Rights Reserved, Uniadex Ltd. 2013
マルチベンダー、マルチレイヤー、ワンストップ
パブリッククラウド
テンプレート作成
UshareSoft UForge
運用
管理
監視
Zabbix
認証
LDAPManager, IceWall SSO
移行
PlateSpin
バックアップ
Netvault Backup
資産管理
Admi-21
Citrix CloudPlatform
IP&A
仮想化ハイパーバイザー
VMware, XenServer, KVM, Hyper-V
サーバー
IBM,Dell,HP
Cisco Systems
ストレージ
NetApp,EMC,
Dell,HP,IBM,日立
7
ネットワーク
Citrix NetScaler,
Cisco Nexus, F5
BIG-IP,Juniper SRX
All Rights Reserved, Uniadex Ltd. 2013
CloudStackのご紹介
8
All Rights Reserved, Uniadex Ltd. 2013
CloudStack概要
CloudStackとは?
クラウド基盤ソフトウェア
Amazon EC2ライクな IaaS環境を構築可能
プライベートクラウド、パブリッククラウドにおいて実績多数
経緯
2010年5月 VMOps, IncからCloud.comへ社名変更
2011年7月 Citrix Systems, IncがCloud.comを買収
2012年4月 CitrixがApache Foundation Projectに寄贈を発表
OSS版
CITRIX版
9
All Rights Reserved, Uniadex Ltd. 2013
ワールドワイドでの採用実績
国内外で実績多数
120社以上のIaaS/プライベートクラウドで採用
事実上のデファクトスタンダード
通信 / サービスプロバイダー
Web / メディア
企業
出典:Citrix Systems,Inc.
10
All Rights Reserved, Uniadex Ltd. 2013
CloudStackの特徴
操作性に優れたGUI
日本語インターフェース
マルチハイパーバイザーサポート
マルチテナント環境
Router/LB/FW/VPN等のNW機能が豊富
オープンなAPI
CloudStack API
Amazon EC2/S3 互換REST API
11
All Rights Reserved, Uniadex Ltd. 2013
リッチなWebインターフェース
管理、操作がわかりやすい
12
All Rights Reserved, Uniadex Ltd. 2013
インスタンスの作成
簡単5ステップ、わずか10分で
インスタンスを追加
13
All Rights Reserved, Uniadex Ltd. 2013
クラウド管理
マルチハイパーバイザー環境を
統合的に管理
管理サーバー
NFSサーバ
CloudStack
VMware
Xen Server
14
KVM
All Rights Reserved, Uniadex Ltd. 2013
CloudStackの監視機能
ダッシュボードによりシステム全体の
リソース状況の確認
インフラストラクチャ画面で各ゾーンの
リソース状況の確認
継続的監視の機能は無い
15
All Rights Reserved, Uniadex Ltd. 2013
Zabbixによる
CloudStack環境の監視
16
All Rights Reserved, Uniadex Ltd. 2013
CloudStackをうまく、早く、安く 運用するコツ
おすすめはZabbixによる継続的監視
•評価 No.1 のOSS統合監視ソフトウェア
•商用製品に劣らない、充実した機能
•大規模運用にも対応可能な拡張性の高さ
17
All Rights Reserved, Uniadex Ltd. 2013
ZabbixによるCloudStack環境の統合監視
アプリケーション
プロセス監視、ログ監視
ミドルウェア
仮想リソースの状態、サービス監視
OS
仮想
ネットワーク
仮想
ストレージ
ハイパーバイザー
ネットワーク
機器
物理
ストレージ
ZABBIX
仮想
サーバ
仮想サーバーの稼働状況
物理リソースの状態
I/O動作でのハードウェアエラー検出
物理
サーバー
ハードウェア監視 (SNMPトラッ
プ)
リソース監視 (SNMPポーリング)
物理ハードウェア/ソフトウェア/仮想サーバのマルチレイヤーを統合監視
18
All Rights Reserved, Uniadex Ltd. 2013
監視設定の流れ
CloudStack環境監視
1. CloudStack APIからデータ取得
2. 対象データの抽出
3. Zabbixから実行しグラフ化
インスタンス(仮想マシン)の自動監視
1. エージェントを組みこんだテンプレートの準備
2. インスタンスを作成
3. エージェントが自動登録し、監視開始
19
All Rights Reserved, Uniadex Ltd. 2013
ZabbixによるCloudStack環境の監視
CloudStack APIからデータを取得し、
Zabbixでトレンドをグラフ化
①APIよりデータを取得
②データを
変換し、値を取得
CloudStack
Zabbix Server
③値をDBに出力
Web UI
グラフ確認
20
All Rights Reserved, Uniadex Ltd. 2013
CloudStackの全体監視
REST APIを使った監視が可能
HTTPアクセスでデータ取得し、グラフ化
21
All Rights Reserved, Uniadex Ltd. 2013
CloudStackデータの取得
$cloudstack_url = "http://172.16.183.2:8096/api
?command=listCapacity
&account=admin
&response=json";
$cmd = 'curl "'.$cloudstack_url.'" 2> /dev/null';
exec ($cmd,$cs_data_json);
今回は認証が無い簡易APIを使用
commandで取得したいデータを指定
今回は全体のCPUデータを取得したいので
listCapacity を指定
accountはlistCapacityを取得するため管理者を指定
データ形式はjsonを指定
Linuxのcurlコマンドでデータ取得
22
All Rights Reserved, Uniadex Ltd. 2013
データの出力
$cs_data = json_decode ($cs_data_json[0],true);
foreach($cs_data["listcapacityresponse"]["capacity"] as $data){
if( $data["type"] == CAPACITY_TYPE_CPU){
$res=$data["percentused"];
}
}
echo $res;
json形式のデータを連想配列に変換
目的のデータのtypeを指定する
今回はCPUなので typeは「 CAPACITY_TYPE_CPU 」
Zabbixは実行したスクリプトの標準出力を取り込
む
echo で値を出力
23
All Rights Reserved, Uniadex Ltd. 2013
Zabbixの監視設定
監視のアイテムとして追加
タイプ → 外部チェック
キー
→ 監視を実行するスクリプト
データ型 → 浮動小数
24
All Rights Reserved, Uniadex Ltd. 2013
(参考)CloudStack API
http://download.cloud.com/releases/3.0.3/api
_3.0.3/TOC_Root_Admin.html
25
All Rights Reserved, Uniadex Ltd. 2013
(参考)取得したlistCapacityのデータ構造
array(1) {
["listcapacityresponse"]=>
capacityの中に各typeのデー
array(2) {
["count"]=>
タが格納されている
int(9)
["capacity"]=>
array(9) {
[0]=>
typeの値で取得したい
array(6) {
["type"]=>
データを選択する
int(0)
["zoneid"]=>
string(36) "c26de38e-1b84-422c-b82e98c2db42e9c7"
["zonename"]=>
Zoneが複数ある場合は
string(11) "Cloud-Zone1"
Zoneの指定も必要
["capacityused"]=>
int(15904800768)
["capacitytotal"]=>
int(51407183872)
["percentused"]=>
取得対象はpercentusedの値
string(5) "30.94"
}
26
All Rights Reserved, Uniadex Ltd. 2013
(参考)listCapacityのtype
http://download.cloud.com/releases/3.0.3/api_
3.0.3/root_admin/listCapacity.html
CAPACITY_TYPE_MEMORY
0
CAPACITY_TYPE_CPU
1
CAPACITY_TYPE_STORAGE
2
CAPACITY_TYPE_STORAGE_ALLOCATED
3
CAPACITY_TYPE_VIRTUAL_NETWORK_PUBLIC_IP
4
CAPACITY_TYPE_PRIVATE_IP
5
CAPACITY_TYPE_SECONDARY_STORAGE
6
CAPACITY_TYPE_VLAN
7
CAPACITY_TYPE_DIRECT_ATTACHED_PUBLIC_IP
8
CAPACITY_TYPE_LOCAL_STORAGE
9
27
All Rights Reserved, Uniadex Ltd. 2013
デモ
CloudStack環境の監視
インスタンスの監視を自動化
28
All Rights Reserved, Uniadex Ltd. 2013
インスタンスの監視を自動化
テンプレートにZabbixエージェントを組み込み
Zabbixサーバーの情報をセット
インスタンス作成時に自動でインスタンスの情報を
取得し、Zabbixサーバーに送信
テンプレートに
エージェントを
組み込む
テンプレートから
インスタンス作成
監視に必要な情報を
サーバに自動送信
CloudStack
XenServer
29
Zabbix Server
All Rights Reserved, Uniadex Ltd. 2013
Zabbix Serverへの登録のしくみ
ZabbixのAPIを使用
エージェントを起動後、Serverに向けて登録スクリプトを
実行
事前に用意したテンプレートを使い、監視項目も自動設定
json形式のコマンドデータ
{
“jsonrpc”:”2.0”,
“method”:”host.create”,
“id”:3,
“param”:{
“host”:”Linux001”,
“ip”:10.32.147.246”,
“port”: 10050,
“useip”: 1,
“groups”:[ { “groupid”: 4} ],
"templates":[ { "templateid":10001
}]
}
Zabbix_agentd.conf
Server=10.32.155.29
Hostname=Linux001
同じHost名
30
サーバの
IPアドレス
All Rights Reserved, Uniadex Ltd. 2013
CloudStackテンプレートの作成
初期起動時に自動実行するファイルを導入
1.
2.
3.
4.
/etc/rc.local
/root/update_Zabbix_conf.sh
/root/zabbixserver_request.php
root/ZabbixApiAbstract.class.php
 /etc/rc.local
起動スクリプトとして、インスタンス起動時に
動作するスクリプトを指定
/root/update_Zabbix_conf.shを実行する
31
All Rights Reserved, Uniadex Ltd. 2013
送信準備
/root/update_Zabbix_conf.sh
設定ファイルの修正
filename='/etc/zabbix/zabbix_agentd.conf'
hostname=`hostname`
entryupdate="Hostname=$hostname"
sed -i s/^Hostname.*/$entryupdate/g $filename
IPアドレスとホスト名を引数として登録スクリプトを実行
ipaddress=`/sbin/ifconfig | grep 'inet addr' | grep -v
127.0.0.1 | awk '{print $2;}' | cut -d: -f2`
/usr/bin/php /root/zabbixserver_request.php $hostname
$ipaddress
32
All Rights Reserved, Uniadex Ltd. 2013
登録スクリプトを実行
/root/zabbixserver_request.php
Zabbix APIを使ってオブジェクト作成
ユーザ名、パスワードが必要
$host=$argv[1];
$ip=$argv[2];
$api = new ZabbixApi('http://172.16.183.11/zabbix/api_jsonrpc.php',
'Admin', 'zabbix');
33
All Rights Reserved, Uniadex Ltd. 2013
登録スクリプトを実行
/root/zabbixserver_request.php
Zabbix APIを使ってホスト情報を送信
$res = $api->hostcreate( array(
'host' => $host,
'name' => $host,
'ip' => $ip,
'useip' => 1,
'dns' => "",
'groups' => array(array(
'groupid' => 4
)),
'templates' => array(
'templateid' => 10001
)
)
);
34
All Rights Reserved, Uniadex Ltd. 2013
PHPのZabbixAPI用ライブラリ
/root/ZabbixApiAbstract.class.php
PhpZabbixApiライブラリに含まれる
Zabbix APIを実行するためのPHPライブラリ
http://zabbixapi.confirm.ch/
35
All Rights Reserved, Uniadex Ltd. 2013
CloudStackテンプレートの作成
設定完了したインスタンスを停止する
該当インスタンスのボリュームメニューから
「テンプレートの作成」を押下
テンプレートの名前、説明を入力し、作成
36
All Rights Reserved, Uniadex Ltd. 2013
(参考)Zabbix API
Zabbix API ドキュメント
https://www.zabbix.com/documentation/1.8/api
https://www.zabbix.com/documentation/2.0/manual
/appendix/api/api
{
“jsonrpc”:”2.0”,
実行するコマンド
“method”:”host.create”,
クラス「host」の中のcreateを実行
“id”:3,
“param”:{
“host”:”Linux001”,
“ip”:10.32.147.246”,
paramに情報をセットする
“port”: 10050,
“useip”: 1,
“groups”:[ { “groupid”: 4} ],
"templates":[ { "templateid":10001
}]
}
37
All Rights Reserved, Uniadex Ltd. 2013
(参考)Zabbix APIからPhpZabbixApiへの変換
①method名は「.」を抜いた形にする
②paramの「:」を「=>」に変換
③ネストされたものは配列で指定
{
“jsonrpc”:”2.0”,
“method”:”host.create”,
“id”:3,
“param”:{
“host”:”Linux001”,
“ip”:10.32.147.246”,
“port”: 10050,
“useip”: 1,
“groups”:[ { “groupid”: 4} ],
"templates":[ { "templateid":10001 } ]
}
①
②
③
$res = $api->hostcreate( array(
'host' => “Linux001”,
'name' => “Linux001”,
'ip' => “10.32.147.246”,
'useip' => 1,
'dns' => "",
'groups' => array(array(
'groupid' => 4
)),
'templates' => array(
'templateid' => 10001
)
)
);
38
All Rights Reserved, Uniadex Ltd. 2013
まとめ
CloudStackのリソースをモニタリングしグラフ化!!
新しい仮想サーバも素早く監視!!
監視設定が自動化できて効率化!!
39
All Rights Reserved, Uniadex Ltd. 2013
ご清聴ありがとうございました
40
All Rights Reserved, Uniadex Ltd. 2013