HinemosでCloudStackを管理する
@moomindaniです。
今回は、HinemosでApache CloudStackを管理する方法について考えてみます。
この記事は CloudStack Advent Calendar 2013 の12月20日分のエントリとなってます。
CloudStackは、サーバ仮想化環境を基盤にして、IaaS型のクラウドを提供するOSSです。
CloudStack 4.2を試しにインストールすると、こんな感じのインタフェースが提供されます。
CloudStackを管理する上で、主な管理対象となる構成要素は下記です。
- 管理サーバ
- ハイパーバイザ
- インスタンス
ここからは、Hinemosを使って具体的にどのように管理(監視・ジョブ制御)できるかを見ていきます。
[準備] Hinemosマネージャサーバのセットアップ
まず、管理サーバ、ハイパーバイザ、インスタンスと疎通可能なネットワークに、Hinemosマネージャサーバを用意します。
Hinemosマネージャのインストール方法は、下記のマニュアル記載の通りです。
Hinemosマネージャをインストールしたら、CloudStackの管理サーバ、ハイパーバイザ、インスタンスをノードとして登録します。
1. 管理サーバの管理
CloudStackの管理サーバを管理する方法を考えます。
#管理サーバの管理とは哲学的ですね・・・
ちなみに、もしCloudStackの管理サーバ上でジョブ管理したいなどの要件があれば、Hinemosエージェントを導入するために、CloudStackの管理サーバをCentOS/RHELとする必要があります。
(UbuntuではHinemosエージェントを使用できないため)
○死活監視
管理サーバに対して、HinemosのPING監視を設定し、応答時間とパケット損失率を監視します。
○リソース監視
管理サーバに対して、Hinemosのリソース監視を設定し、CPU使用率やメモリ使用率、ファイルシステム使用率等を監視します。
○アラート監視
CloudStackでは、すべてのアラートに対してsyslogを生成できます。
下記のドキュメントを参考に、CloudStackのsyslogの宛先ホストをHinemosマネージャサーバに設定します。
CloudStack Admin Guide
あとは、Hinemosのシステムログ監視を設定するだけです。
なお、スクリーンショットでは、パターンマッチ表現に「.*」(すべてマッチ)しか用意していませんが、
本来は監視したいログメッセージに対応するパターンマッチ表現を設計する必要があります。
○CloudStack API監視・実行制御
CloudStack APIを使って、管理サーバを外部から情報取得・制御できます。
まず、Hinemosマネージャサーバ上からCloudStack APIで制御するスクリプトを実装し、それをHinemosのカスタム監視やジョブに設定します。
CloudStack APIを用いたカスタム監視により、listCapacityを利用するとキャパシティの状態監視が可能になります。
この際、カスタム監視のコマンドで指定するスクリプト内で、CloudStack APIで取得した出力結果をHinemosのカスタム監視で読み取り可能なkey,value形式に整形して標準出力する必要があります。
また、CloudStack APIを用いたジョブの制御により、インスタンスの起動/停止のスケジューリングなどが可能になります。
具体的なスクリプティング方法等については、下記の記事が参考になります。
2. ハイパーバイザの管理
CloudStackではハイパーバイザとして、VMware vSphere、KVM、Citrix XenServerが選択できます。
これらのハイパーバイザを管理する方法を考えます。
○死活監視
ハイパーバイザに対して、HinemosのPING監視を設定し、応答時間とパケット損失率を監視します。
○リソース監視
ハイパーバイザに対して、Hinemosのリソース監視を設定し、CPU使用率やメモリ使用率、ファイルシステム使用率等を監視します。
ちなみに、Hinemosの各ハイパーバイザに対応したVM管理オプションを使うと、ハイパーバイザのAPI経由でリソース状況を監視できます。
3. インスタンスの管理
CloudStack上のインスタンスを管理する方法を考えます。
○死活監視
インスタンスに対して、HinemosのPING監視を設定し、応答時間とパケット損失率を監視します。
○リソース監視
インスタンスに対して、Hinemosのリソース監視を設定し、CPU使用率やメモリ使用率、ファイルシステム使用率等を監視します。
★やりたいこと
理想的には、Hinemosエージェントを導入したテンプレートをCloudStackに登録し、そのテンプレートをデプロイした瞬間からHinemosで管理開始できるようにしたいところですが、今回はAdvent Calendarのスケジュール上、タイムオーバーでそこまでできておりません・・・。
この点については実現できる目処はつけたので、今後やってみます。
以上、CloudStackをHinemosで管理する方法について考えてみました。
参考文献:CloudStack徹底入門