Azure Monitorを使ってAzure Application Gateway正常性プローブのステータス変化を検知する

 

Azure Application Gatewayのバックエンド正常性の状態変化を検知する検証を行ってみました。

今回は、Azure  Monitorの機能を利用して検知するようにしてみました。Azure Monitorを使ってますのでメール送信等を行う事も標準機能で可能です。

1.Application Gatewayのメトリックで正常性プローブの状況がわかる

Application Gatewayのメトリックでは、正常なホストの数、異常なホストの数を検知する事ができます。これはV1、V2どちらでも可能です。
このホストの数は、正常性プローブによって正常もしくは異常と判断されたバックエンドの数になります。マイクロソフト様のサイトに記載があります。

https://docs.microsoft.com/ja-jp/azure/application-gateway/application-gateway-metrics#backend-metrics

マイクロソフト様のサイトを読むと、以下のような事が言えます。

    • 正常なホストの数が0の場合は、すべてのバックエンドプールに問題が発生しており、サイトが表示されない状態
    • 異常なホストの数が1以上の場合は、1つ以上のバックエンドプールで異常が発生している状態(特定のバックエンドにあるホストが停止している状態

したがって、この状態を監視することにより、Application Gateway経由のバックエンド正常性がわかるのではないかと考えてみました。

2.すべての正常性プローブがNGになった場合に検知する

Azure MonitorでApplication Gatewayのメトリックを監視することができます。

まず、モニター>アラート>新しいアラートルールを選択します。

そうすると、下記画面が表示されますので、リソースの選択でアプリケーションゲートウェイを選択します。

    選択が終わったら、完了を押します。

ルールの作成画面に戻りますので、次に条件の項目で追加を選択してください。

そうすると、下記のようにシグナルロジックの構成が表示されます。

ここに項目が表示されるのですが、今回対象とする項目は下記2つになります。

    • Unhealthy Host Count が異常なホストの数になります
    • Healthy Host Count が正常なホストの数になります

すべて正常性プローブがNGになった場合の検出は正常なホストの数で設定をします。

Healthy Host Countを選択をすると下記のような画面が表示されます。バックエンドのサーバが1つ(ルールもHTTP用1つ)で検証していますので、以下のように1となります。

これが、0になると、正常なバックエンドがなくなる為、すべてのアクセスが停止する状態になります。ですので以下のような設定とします。

    • しきい値:Static
    • 演算子:より小さい
    • 集計の種類:平均
    • しきい値(演算子の方):1

1より小さいとなりますので、バックエンド正常性がNGだった場合(一時的な状態を含む)が検出される事になります。

評価基準は適時選択してください。最後に完了ボタンを選択します。

ルールの作成画面に戻りますので、アクショングループの選択、アラートの詳細を適時記入し、アラートルールの作成をクリックします。

これで、Azure MonitorでApplication Gatewayのバックエンド正常性がすべてNGになった場合に、アラートを発生させることができます。

3.1つでも正常性プローブに異常があった場合に検知する

1つ以上の正常性プローブがNGになった場合の検出は異常なホスト数で行います。

シグナルロジックの構成で、Unhealthy Host Countを選択します。

そうすると、下記画面が表示されます。

すべてのバックエンド正常性がOKなので、0になります。

これが0より大きい場合は、バックエンド正常性に問題が発生している事を示します。ですので、下記のように設定にします。

    • しきい値:Static
    • 演算子:より大きい
    • 集計の種類:平均
    • しきい値(演算子):0

評価基準は適時選択し完了ボタンを選択します。

ルールの作成画面に戻りますので、同様に、アクショングループの選択、アラートの詳細を適時記入し、アラートルールの作成をクリックします。

これで、Azure MonitorでApplication Gatewayのバックエンド正常性で1つでもNGになっている場合に、アラートを発生させることができます。