Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

OpenStack Heat サービスによるアグリゲートディスカバリーとアラーム

Contrail Insights と Heat の統合には、検出とアラームという 2 つの独立した側面があります。

Heat Stack Discovery

Contrail Insights OpenStack アダプターは、Heat API を使用して OpenStack クラスター内の Heat スタックを検出します。各スタックは、Contrail Insights のラベル Heat の集計として表されます。OpenStack Adapter が Heat スタックを検出すると、OpenStack Adapter は Contrail Insights プラットフォームで集約を構成し、Heat スタックによって定義された仮想マシンおよび仮想ネットワークをアグリゲートのメンバーとして追加します。 図 1 を参照してください。

図 1:Contrail Insights Heat Stack Discovery in Contrail Insights の Heat Stack Discovery

検出機能は、標準的な OpenStack 統合の一部として Contrail Insights OpenStack Adapter によって提供されます。ディスカバリーは、OpenStack コントローラー、OpenStack 構成、または Heat サービスに変更を加える必要がなく、Contrail Insights Heat プラグインのインストールは必要ありません。

図 2 は、Contrail Insights によって発見された 2 つの Heat スタック( stack1ubuntu_stack)を示しています。各スタックは Contrail Insights で 混合 集約として表されます。 混合 集約には、仮想マシンや仮想ネットワークなど、さまざまな種類のエンティティが含まれている場合があります。集約 Heat スタックを表示するには、 ダッシュボードを選択し、[インフラストラクチャ] タブから [ 集約] を選択します。

図 2:Contrail Insights Mixed Aggregate Heat Stacks in Contrail Insights における混合集約ヒート スタック

図 3 は、Heat スタック ubuntu_stack内のエンティティを示しています。ubuntu_vm1とubuntu_vm2の 2 つの仮想マシンと、1 つの仮想ネットワークがubuntu_network1。このページを表示するには、[ダッシュボード] を選択し、[インフラストラクチャ] タブから [集計] を選択します。[集約 1 つ選択] タブで、表示するエンティティを選択します。

図 3:Contrail Insights Virtual Machines in Heat Stacks in Contrail Insights の Heat Stack の仮想マシン

Contrail Insightsのアラームリソースタイプ

Contrail Insights は、Heat スタックの検出に加え、Heat テンプレートの 2 つの新しいリソース タイプを定義する Heat プラグインを提供します。

OS::AppFormix::Alarm

このリソース タイプは、Heat スタック内のリソースを監視するための単一のアラームを定義するために使用されます。

OS::AppFormix::CompositeAlarm

このリソース タイプは、Heat スタック内のリソースを監視するための複合アラームを定義するために使用されます。

Heat スタックがテンプレートから作成されると、アラームと複合アラームが Contrail Insights で設定され、Contrail Insights ストリームベースの分散型分析エンジンによって評価されます。

監視するリソース(仮想マシンなど)を定義するのと同じテンプレートで監視構成を維持すると、メリットがあります。Contrail Insights アラームと複合アラームは、Heat スタック内のリソースがインスタンス化された時点で設定されます。さらに、これらのアラームを使用して Heat AutoScaling ポリシーのスケールアップとスケール ダウンをトリガーできます。これにより、応答性が高くきめ細かい Contrail Insights アラームが発生するため、Heat はより迅速かつ正確に対応できます。

図 4:Heat、Contrail Insights Heat プラグイン、Contrail Insights プラットフォーム Interaction Sequence between Heat, Contrail Insights Heat Plug-In, and Contrail Insights Platform間の相互作用シーケンス

Heat スタックがまたはOS::AppFormix::CompositeAlarmリソースを含OS::AppFormix::Alarmむ Heat テンプレートを使用して作成されると、Heat はリソース プロパティを Contrail Insights Heat プラグインに渡し、Contrail Insights でアラームを設定します。図 4 は、Heat、Contrail Insights Heat プラグイン、Contrail Insights プラットフォームの相互作用を以下の一連のイベントで示しています。

  1. ユーザーは、テンプレートから または OS::AppFormix::CompositeAlarm リソースで Heat スタックをOS::AppFormix::Alarmインスタンス化します。

  2. Heat は、アラーム プロパティを Contrail Insights Heat プラグインに渡します。

  3. リソース OS::AppFormix::Alarm を使用すると、Contrail Insights Heat プラグインが Contrail Insights REST API を使用して Contrail Insights プラットフォームでアラームを構成します。Contrail Insights プラットフォームの URL は、構成パラメーターです(「Contrail Insights Heat プラグインのインストール」を参照してください)。アラームは、 に Event設定されたモードで設定されます。アラームは、アラームの条件を満たす間隔ごとに通知を生成します。

  4. リソース OS::AppFormix::CompositeAlarm を使用すると、Contrail Insights Heat プラグインが Contrail Insights REST API を使用して Contrail Insights プラットフォームで複合アラームを構成します。ユーザーは複合アラームで複数の個別アラームを定義できます。複合アラームの状態は、個々のアラームの状態を組み合わせたものです。ユーザーは、個々のアラームの重みと複合アラームのしきい値を定義できます。アクティブなアラームの重みの合計がユーザーが定義したしきい値を超えた場合、複合アラームはアクティブになります(「例:OS::AppFormix::Alarm を使用した Heat Autoscaling」を参照)。複合アラームがアクティブであれば、60 秒ごとに通知が生成されます。

  5. アラームまたは複合アラームがトリガーされると、HTTP/HTTPS POST によってアラームのプロパティで指定されたエンドポイントに通知がnotification_url配信されます。自動スケーリングを有効にするには、Heat テンプレートで Heat ScalingPolicy リソースnotification_urlsignal_url .この場合、通知は Heat に送信されて処理されます。

Heat テンプレートで、 OS::AppFormix::Alarm リソースタイプを OS::AppFormix::CompositeAlarm 利用できるようにするには、OpenStack コントローラ ホストに Contrail Insights Heat プラグインをインストールして設定する必要があります。以下のセクション「Install Contrail Insights Heat Plug-in」を参照してください。

プラグインを使用した Heat リソースの拡張可能設計の詳細については、 Heat のマニュアルを参照してください。

Contrail Insights Heat プラグインのインストール

OpenStack コントローラ ホストに Heat プラグインをインストールして設定するには、次の手順にしたがってください。

  1. パッケージをコピー appformix-openstack します。

    リリースバンドルから、 appformix_openstack Heatサービスが実行されているOpenStackコントローラホストにPythonパッケージをコピーします。このパッケージは、リリースバンドルのディレクトリ内の pkg PythonホイールまたはRPMパッケージとして提供されます。

  2. パッケージをインストール appformix-openstack します。

    Heat サービスを実行する OpenStack コントローラー ホストで、パッケージをインストールします appformix-openstack 。パッケージの appformix-openstack 最新バージョンは0.6.2です。

    デフォルトでは、次のリソースがインストールされます。

    OpenStack サービスがコンテナで実行されている場合、Heat コンテナからアクセスできるディレクトリにリソースをインストールする必要があります。オプションpip installと を--target使用して、リソースを別のディレクトリにインストールします。例えば:

  3. Heat 設定ファイルを変更します。

    • セクションで と呼ばれる appformix_controller_url 変数を [DEFAULT] 定義し、Contrail Insights Platform のベース URL に設定します。

    • インストール ディレクトリをプラグイン ディレクトリのリストに追加します。セクション内の plugin_dirs エントリーを [DEFAULT] 探し、リストの最後にインストール・ディレクトリーを追加します。OpenStack サービスがコンテナで実行されている場合は、Heat コンテナ内のインストールディレクトリのマウントパスを指定します。

    • 必要に応じて、 と呼ばれる appformix_task_num_iterations 変数を定義し appformix_task_wait_milliseconds 、Heat プラグインが操作がタイムアウトしたことを宣言する前に、Heat プラグインが Contrail Insights API リクエストのステータスを確認する回数と頻度を制御します。両方の変数は、整数値を受け入れます。これらの変数が未定義の場合、デフォルトは以下の値になります。

    これは、変更後の heat.conf ファイルのあるべき姿です。

    OpenStack サービスがコンテナ内で実行されている場合は、すべての Heat コンテナ内の heat.conf ファイルに変更が反映されていることを確認してください。

  4. すべての OpenStack Heat サービスを再起動します。

    OpenStack サービスがコンテナで実行されている場合は、すべての Heat コンテナを再起動します。

OS::AppFormix::Heat テンプレート内のアラーム設定

リソース タイプは OS::AppFormix::Alarm Heat テンプレートで使用して Contrail Insights アラームを作成できます。リソースタイプには、以下の入力パラメーターがあります。

表 1:OS::AppFormix::アラーム リソース タイプ入力パラメーター

パラメーター

説明

alarm_name

アラームを識別する名前。

alarm_metric

アラームで評価するメトリック。

選択肢の一覧を表示するには、Contrail Insights API エンドポイント /describe/alarms を使用し、出力で次のリストを探します。出力['EventRuleParams']['MetricTypeMap'][0][static']['instance']メトリック名として Value キーの値を使用します。

output['EventRuleParams']['MetricTypeMap'][0]['static']['instance']

メトリック名としてキーの Value 値を使用します。

しきい値

メトリック測定値を比較する値。しきい値の単位は、 の alarm_metric値に依存します。

aggregation_function

比較前に測定値を組み合わせる場合に使用する操作。選択肢は次のとおりです。

  • 平均

  • 最大

  • std-dev

  • 合計

comparison_function

測定値としきい値の比較に使用する操作。選択肢は次のとおりです。

  • 以下に

  • 等しい

  • 上記

  • 最小レートの増加

  • 少なくとも、

期間

組み合わせる前にサンプル値を収集する秒数。

num_intervals

比較前にデータを収集する長さの duration 間隔の数。

num_exception_intervals

- アラームがアクティブと見なされるために、アラーム条件が true である必要がある長さの duration 間隔の数。

project_id

(オプション)アラームを評価する必要があるインスタンスを含むプロジェクトの ID。

aggregate_id

(オプション)アラームを評価する必要があるインスタンスを含む集約の ID。

次の構文を使用して、現在の Heat スタック内のインスタンスでアラームを評価する必要があることを示します。

aggregate_id: { get_param: "OS::stack_id" }

project_idまたは aggregate_id をテンプレートで指定する必要があります。

notification_url

アラームがアクティブなときに通知が送信される URL。これは、Contrail Insightsから通知を受信するために準備されたURLです( 通知を参照してください)。Contrail Insights Alarms を使用して自動スケーリングをトリガーする Heat テンプレートの場合、この URL はスケーリング ポリシーに設定 signal_url する必要があります(例: OS::AppFormix::Alarm を使用した Heat Autoscaling の例を参照してください)。

例:OS による Heat Autoscaling::AppFormix::Alarm

Contrail Insights Heat プラグインを使用すると、Contrail Insights アラームを Ceilometer アラームの代わりに Heat Autoscaling テンプレートで使用できます。次の Heat テンプレートは、CPU 使用率に基づいて実行中のインスタンス数を自動的に拡張するために使用 OS::AppFormix::Alarm します。

次のシーケンスでは、「OS::AppFormix::Alarm」テンプレートを使用した Heat Autoscaling から Heat スタックを作成した場合の動作を示します。

  • このテンプレートを使用してヒート スタックを導入すると、最初に 1 つのインスタンス test_vm が作成されます。

  • 2 つの Contrail Insights アラーム cpu_alarm_highcpu_alarm_low は、インスタンスの CPU 使用率の監視に使用されます。Contrail Insights が収集する任意のメトリックを監視するように定義できます。

  • インスタンスの CPU 使用率が 80% を超えると、アラーム cpu_alarm_high がトリガーされます。これにより、 を実行 scaleup_policy すると、アラームがアクティブである限り、実行中のインスタンスの数が 1 60 秒ごとに増加します。実行中 scaleup_policy のインスタンスの数が で の値 max_sizeと等しい場合、実行を停止します。

  • インスタンスの CPU 使用率が 10% を下回ると、アラーム cpu_alarm_low がトリガーされます。これにより、 を実行 scaledown_policy すると、アラームがアクティブである限り、実行中のインスタンスの数が300秒ごとに1減少します。実行中 scaledown_policy のインスタンスの数が で の値 min_sizeと等しい場合、実行を停止します。

OS::AppFormix::Alarm を使用した自動スケーリング テンプレートのヒート スタックの作成

次に、テンプレート「例:OS:AppFormix::Alarm を使用した Heat Autoscaling」から Heat スタックを作成し、VM の CPU 負荷を追加して Contrail Insights アラームをトリガーするときに何が起こるかを確認します。

  1. 「例:OS::AppFormix::Alarm を使用した Heat Autoscaling」で定義されたテンプレートを、 という名前appformix_autoscaling.yamlのファイルに保存します。または aggregate_id フィールドに適切な値をproject_id入力します。次に、テンプレートを使用して Heat スタックを作成します。

  2. 実行中のインスタンスが 1 つ test_vm であることを確認します。

  3. 上のいくつかの負荷を生成します test_vmcpu_alarm_high Contrail Insights ダッシュボードでアラームがアクティブになるのを確認します。

  4. アラームがアクティブな場合は、クラスタ上で実行中のインスタンスを確認します。と呼ばれる test_vm2 つの実行中のインスタンスが存在する必要があります。

  5. 負荷ジェネレータを上で停止します test_vmcpu_alarm_low Contrail Insights ダッシュボードでアラームがアクティブになるのを確認します。

  6. アラームがアクティブな場合は、クラスタ上で実行中のインスタンスを確認します。これで、1 つの test_vm インスタンスが実行されるはずです。

OS::AppFormix::Heat テンプレート内の複合アルアーム構成

複数の個別のアラームを定義し、複合アラームに組み合わせることができます。複合アラームの状態は、個々のアラームの状態を組み合わせたものです。個々のアラームの重みと複合アラームのしきい値を定義できます。複合アラームは、アクティブなアラームの重みの合計がユーザー定義のしきい値と等しいか、または超えた場合にアクティブになります。

OS::AppFormix::CompositeAlarm Heat テンプレートでリソース タイプを使用して、Contrail Insights コンポジット アラームを作成できます。リソースタイプには、以下の入力パラメーターがあります。

表 2:OS::AppFormix::CompositeAlarm リソース タイプ入力パラメーター

パラメーター

説明

composite_alarm_name

複合アラームを識別する名前。

project_id

(オプション)複合アラームを評価する必要があるインスタンスを含むプロジェクトの ID。

aggregate_id

(オプション)複合アラームを評価する必要があるインスタンスを含む集約の ID。

次の構文を使用して、現在の Heat スタック内のインスタンスでアラームを評価する必要があることを示します。

aggregate_id: { get_param: "OS::stack_id" }

project_idまたは aggregate_id をテンプレートで指定する必要があります。

notification_url

アラームがアクティブなときに通知が送信される URL。これは、Contrail Insightsから通知を受信するために準備されたURLです( 通知を参照してください)。Contrail Insights Alarms を使用して自動スケーリングをトリガーする Heat テンプレートの場合、この URL はスケーリング ポリシーの URL に signal_url 設定する必要があります(「例:OS::AppFormix::CompositeAlarm を使用した Heat Autoscaling」を参照してください)。

composite_alarm_rules

複合アラームを構成する個々のアラームのリスト。個々のアラームは、 、 project_id を除きnotification_url、リソースとOS::AppFormix::Alarmaggregate_id同じ入力パラメーターを持ちます。これらのパラメータは、複合アラーム全体に対して一度定義されます。個々のアラームには、 と呼ばれるalarm_weight入力パラメーターも設定されており、これは 0~1 の値です。アクティブなすべてのアラームの重みが合計され、 の値composite_alarm_thresholdと比較されて、複合アラームがアクティブかどうかを判断します。

composite_alarm_threshold

複合アラームがアクティブかどうかを判断するために使用される 0~1 の値。すべてのアクティブなルールの重みの合計がしきい値と等しいか超えている場合、複合アラームはアクティブであると判断されます。

例:OS による Heat Autoscaling::AppFormix::CompositeAlarm

Contrail Insights Heat プラグインを使用すると、Contrail Insights の複合アラームを、Ceilometer アラームの代わりに Heat Autoscaling テンプレートで使用できます。次の Heat テンプレートは、CPU 使用率とメモリ使用率に基づいて、実行中のインスタンス数を自動的に拡張するために使用 OS::AppFormix::CompositeAlarm します。

次のシーケンスでは、Heat スタックが上記のテンプレートから作成された場合の動作について説明します。

  • このテンプレートを使用してヒート スタックを導入すると、最初に 1 つのインスタンス test_vm が作成されます。

  • 2つのContrail Insights複合アラーム composite_alarm_high は、 composite_alarm_low Heatスタック内のインスタンスのリソース使用率を監視するために使用されます。これらは、インスタンスのCPU使用率とメモリ使用率を監視する2つの個別のアラームで構成されています。Contrail Insights が収集する任意のメトリックを監視するように定義できます。

  • composite_alarm_high 個々のアラームは、それぞれ重み 0.5 で定義され、複合アラームは閾値 0.5 で定義されます。これは個々のアラームがアクティブである場合複合アラームがアクティブと見なされることを意味します。

  • composite_alarm_low 個々のアラームは、それぞれ重み 0.5 で定義され、複合アラームは閾値 1.0 で定義されます。つまり、複合アラームは、個々のアラームが両方ともアクティブである場合にのみアクティブとみなされます。

  • インスタンス test_vm の CPU 使用率またはメモリ使用率のいずれかが 80% を超えると、複合アラーム composite_alarm_high がトリガーされます。これにより、 を scaleup_policy 実行すると、複合アラームがアクティブである限り、実行中のインスタンスの数が 1 60 秒ごとに増加します。実行中 scaleup_policy のインスタンスの数が で の値 max_sizeと等しい場合、実行を停止します。

  • インスタンス test_vm の CPU 使用率とメモリ使用率の両方が 10% を下回ると、複合アラーム composite_alarm_low がトリガーされます。これにより、 を実行 scaledown_policy すると、複合アラームがアクティブである限り、実行中のインスタンスの数が60秒ごとに1減少します。実行中 scaledown_policy のインスタンスの数が で の値 min_sizeと等しい場合、実行を停止します。

OS::AppFormix::CompositeAlarm を使用した自動スケーリング テンプレートのヒート スタックの作成

次に、テンプレート「例:OS を使用した Heat Autoscaling::AppFormix::CompositeAlarm」から Heat スタックを作成し、VM の CPU 負荷を追加して Contrail Insights コンポジット アラームをトリガーするときに何が起こるかを確認します。

  1. 「例:OS::AppFormix::CompositeAlarm を使用した Heat Autoscaling」で定義されたテンプレートを と呼ばれるappformix_composite_autoscaling.yamlファイルに保存します。または aggregate_id フィールドに適切な値をproject_id入力します。次に、テンプレートを使用して Heat スタックを作成します。

  2. 実行中のインスタンスが 1 つ test_vm であることを確認します。

  3. 上のいくつかの負荷を生成します test_vmcomposite_alarm_high Contrail Insights ダッシュボードで複合アラームがアクティブになるのを確認します。

  4. 複合アラームがアクティブな場合、クラスタ上で実行中のインスタンスを確認します。と呼ばれる test_vm2 つの実行中のインスタンスが存在する必要があります。

  5. 負荷ジェネレータを上で停止します test_vmcomposite_alarm_low Contrail Insights ダッシュボードで複合アラームがアクティブになるのを確認します。

  6. アラームがアクティブな場合は、クラスタ上で実行中のインスタンスを確認します。これで、1 つの test_vm インスタンスが実行されるはずです。

トラブルシューティング

デバッグするには、 および debug オプションを verbose セクションに[DEFAULT]heat.conf追加して有効にします。

次に Heat サービスまたはコンテナを再起動します。詳細なログは に /var/log/heat/heat-engine.log表示されます。