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
© Copyright 2025 ExpyDoc