HinemosでCloudStackを管理する

@moomindaniです。

今回は、HinemosApache 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徹底入門