System Monitoring Column <システム監視コラム>

Pandora FMS Enterprise

Category: 実践編

2015.07.16

今回は、Pandora FMS と CloudStack の連携についてです。

最近はパブリッククラウドのサービスがたくさんありますが、それらのサービス基盤にCloudStackを使っている例は複数あるようです。

クラウド環境は、オンプレミスのシステムとは違ってサーバーの追加が容易ですし使った分だけ課金されるという料金体系になっているのが一般的です。このような クラウド環境では、システムの負荷状況に応じてサーバーをスケールさせたり、ある条件下では特定のサーバーを起動(または停止)させたりという運用をしたいと 考える場面も多いと思います。

想定するシナリオ

弊社の運用サービスでも、監視状況に応じて自動的にクラウド環境のサーバー をスケールさせたいというニーズは良くあります。弊社では Pandora FMS による監視アラートをきっかけに Pandora FMS が自動的に CloudStack を操作し、VM を起動・停止したり、CloudStack が管理するリソースを変更したりするような仕組を実現しています。その概要を紹介したいと思います。

Pandora FMS には、アラート処理の仕組として何らかの監視閾値が超過した場合に任意のアクションを実行するという機能(アラートアクション)があります。ここに CloudStack の API を操作するアクションを定義しておくことにより、監視結果に応じて CloudStack の操作を何でもできるようになります。

pandora-cloudstack

なお、CloudStack の API に関する詳細は、以下を参照してください。

https://cloudstack.apache.org/api.html

以降の例では、

「www01サーバーのping断を検知したら、停止中の別のVMを起動させる」

という設定を行います。

CloudStack側の準備

Pandora FMS から CloudStack を操作するためには、CloudStack の API へアクセスできる必要があります。APIへアクセスするためには、CloudStack 側のユーザの

  • APIキー
  • 秘密鍵

を用意する必要があります。CloudStackのアカウント管理画面からそれらを生成しておきます。

cloudstack-account-fix

これらは、のちほど Pandora FMS 側の準備で必要になりますので、どこかにコピペ等して保存しておきます。

Pandora FMS 側の準備

Pandora FMS 側では、まずは CloudStack の API へアクセスするための仕組を用意します。APIへアクセスするためのアクションとして設定するスクリプトを用意し、Pandora FMS サーバーの適当なディレクトリに置きます。インターネット上を検索すると CloudStack の API を操作するスクリプトはいろいろと見つかります。今回はその中の一つを Pandora FMS のアラートアクションとして使えるように少し修正を加えて用意しました(以下)。

このスクリプトは、次の引数を取るような作りになっています。

  • 1つ目: APIのURL
  • 2つ目: APIキー
  • 3つ目: 秘密鍵
  • 4つ目以降: CloudStackのAPIへ渡すコマンド
#!/usr/local/bin/bash
#
# cloudstack_api.sh
#
PATH=/bin:/usr/bin:/usr/local/bin
api_path="/client/api?"

address=$1
api_key=$2
secret_key=$3

if [ $# -lt 4 ]; then
echo "usage: $0 URL API_KEY SECRET_KEY command=… paramter=… parameter=…"; exit;
elif [[ $4 != "command="* ]]; then
echo "usage: $0 URL API_KEY SECRET_KEY command=… paramter=… parameter=…"; exit;
elif [ $4 == "command=" ]; then
echo "usage: $0 URL API_KEY SECRET_KEY command=… paramter=… parameter=…"; exit;
fi

data_array=("${@:4:($#-3)}" "apikey=${api_key}")
temp1=$(echo -n ${data_array[@]} | \
tr " " "\n" | \
sort -fd -t’=’ | \
perl -pe’s/([^-_.~A-Za-z0-9=\s])/sprintf("%%%02X", ord($1))/seg’| \
tr "A-Z" "a-z" | tr "\n" "&" )

signature=$(echo -n ${temp1[@]})
signature=${signature%&}
signature=$(echo -n $signature | \
openssl sha1 -binary -hmac $secret_key | \
openssl base64 )

signature=$(echo -n $signature | \
perl -pe’s/([^-_.~A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg’)

url=${address}${api_path}$(echo -n ${@:4:($#-3)} | tr " " "&")"&"apikey=$api_key"&"signature=$signature

echo " SEND URL: $url"
curl ${url} | xmllint –format –

今回の例では、Pandora FMS に上記スクリプトを利用して停止中のVMを起動させるためのアラートコマンドを定義します。アラートコマンドの定義は、「アラート管理」⇒「コマンド」から行います。

CloudStack の API で、VMの起動は startVirualMachine というコマンドで実行できます。そこで、Pandora FMS のアラートアクションのコマンドには、次のように定義します(上記スクリプトを /usr/local/ns/bin/cloudstack_api.sh として配置している想定)。

/usr/local/ns/bin/cloudstack_api.sh "_field1_" "_field2_" "_field3_" command=startVirtualMachine id=_field4_ >> /var/log/pandora/cloudstack_api.log

この例では、APIコマンドは startVirualMachine 固定であるため、そのまま Pandora FMS のアラートアクションのコマンド内に記載しています( command=startVirtualMachine の部分)。それ以外の引数については、Pandora FMS のコンソールから設定できるパラメータとして定義しています(_field1_ から _field4_)。

_field1_ から _field4_(フィールド1~4)に対応するパラメータは次の通りです。

  • API URL
  • APIキー
  • 秘密鍵
  • VM ID

 実際の設定画面は次の通りです。

alert-command-fix

以上でコマンドの準備は完了です。

次に、停止しているVMを起動するアクションを定義します。「アラート管理」⇒「アクション」から新規アクションを作成し、コマンドに「VM起動」を選択すると必要なパラメータの入力フォームが表示されるので、それぞれ入力します。

  • API URL: CloudStack の API のURL
  • APIキー: CloudStack 側の準備で確認したAPIキー
  • 秘密鍵: CloudStack 側の準備で確認した秘密鍵
  • VM ID: 起動したい VM の CloudStack 上のID

alert-action-fix

アクションは複数定義することができますので、たとえば、”VM ID” を変えた別のアクションを用意すれば、別のVMを起動する定義も用意することができます。

以上で、Pandora FMS 側の下準備は完了です。

Pandora FMS でアラート検知した場合のVM起動設定

準備が完了したら、Pandora FMS のエージェントモジュール(監視項目)で障害や警告状態になった場合にVM起動のアクションを実行する設定を行うのみです。

「エージェント管理」から設定したいエージェントの “アラート” をクリックし、VM起動のアクションを割り当てます。今回の例では、www01サーバーのping疎通断をきっかけにしたいので、エージェントwww01の “Host Alive” モジュールに VM 起動のアクションを割り当てます。

alert-setting1

アラートの設定では、アクションに設定済の「VM起動」を選択するだけです。以下ように、”Host Alive” (ping疎通) の結果が、”障害状態” であれば、”VM起動” を実行するという選択を行うだけなので、とても簡単です。

alert-setting2

これにより、www01サーバーのping疎通断を検知した場合に、(CloudStack上のIDで指定した)VMを起動する設定は完了です。

今回は、ping疎通断をきっかけとした動作の例を紹介しましたが、Pandora FMS で監視できる内容であればどんなものでもきっかけにすることができます。CPU使用率やネットワークトラフィックといった判断基準を元にしたCloudStack操作はもちろん、

  • 特定のアプリケーションが出力するログの内容をきっかけにする
  • CPU使用率が○○%以上かつ、メモリ使用率が○○%以上といった複合条件をきっかけにする
  • オンプレミスのシステムの監視結果をきっかけにする

など、CloudStackのみでは判断ができない条件でのオートスケールも Pandora FMS を使うことで実現できます。もちろん、オートスケール動作だけでなく、CloudStackのAPIが対応しているあらゆる操作も実現可能です。

監視ツール

大規模システム向け統合システム監視ツールPandora FMS Enterprise

大規模システム向け統合システム監視ツール Pandora FMS Enterprise

世界194か国から120万ダウンロード以上の支持を得るオープンソースの監視ツール Pandora FMSに、大規模システム向け機能を追加した Pandora FMS Enterprise。オープンソースベースの商用製品だから実現できる「運用コストの削減」と「使い勝手の良さ」が特徴です。

クラウド型監視ツール Pandora FMS Enterprise SaaS

クラウド型監視ツール Pandora FMS Enterprise SaaS

直感的で操作性に優れたサーバー監視ツールをSaaSでご提供。充実のサポートですぐに監視を開始できます。

Free

資料ダウンロード

課題解決に役立つ詳しいサービス資料はこちら

資料ダウンロード
  • 統合システム監視ツール Pandora FMS Enterprise カタログ

    直感的で操作性に優れたユーザインターフェイスを持ち、1つのシステムでマルチテナント環境を実現できる統合システム監視ツール Pandora FMS Enterprise、Pandora FMS Enterprise SaaS の機能、サポート内容、料金をご確認いただけます。

Tag: Pandora FMS

Contactお問い合わせ

お見積もり・ご相談など、お気軽にお問い合わせください。

single.php