Storage Gateway が意図せずオフラインになったことを検知する方法

IoWaitpercent および CachePercentDirty のメトリクスで、データポイントの欠落データをトリガーとしてアラームを設定

困っていた内容

Storage Gateway のファイルゲートウェイが、何らかの原因で突然オフラインになり、数時間のビジネス影響がありました。
そのため、今後はファイルゲートウェイがオフラインになった際はすぐに気づけるようにしたいのですが、オフラインになったことをリアルタイムで検知する方法はございますでしょうか。

どう対応すればいいの?

ゲートウェイのステータスを直接監視できるメトリクスはございません。
しかしながら、IoWaitpercent および CachePercentDirty の CloudWatch メトリクスは、ゲートウェイが起動している期間のみに報告されるようになっております。

IoWaitPercent Percent of time that the gateway is waiting on a response from the local disk.

Percent of the cache that is dirty—that is, it contains content that has not been uploaded to AWS Use the CachePercentDirty metrics with the Average statistic.

Storage Gateway - AWS Storage Gateway

IoWaitpercent および CachePercentDirty の メトリクスの条件が、「0 よりも低いしきい値 かつ データポイントの欠落データを不正(しきい値を超えている)」として CloudWatch アラームのトリガーに設定することで、ゲートウェイが意図せず停止したことを検知することが可能です。

やってみた

準備

以下の内容が事前に設定されていることを、前提で検証します。

Storage Gateway を作成し、ステータスが「実行中」になっていることを確認します。
なお、今回は Storage Gateway への書き込みや読み込みは全く行なわれていない状態で検証します。

また、ファイルゲートウェイをホストする VM は、EC2 インスタンスとして作成しました。
以下の様にインスタンスが「実行中」になっていることも確認します。

CloudWatch Alerm の設定

それでは、オフラインを検知するための CloudWatch アラームを作成します。

IoWaitpercent

まず、IoWaitpercent 用のアラームを作成します。

ここでは統計を「最大」、期間を「5 分」にします。
期間をあまりに短くすると、誤検知する可能性があるので適宜調整しましょう。

また、しきい値の種類を「静的」にして、「0 よりも低い」場合に設定します。
さらに、欠落データの処理を「欠落データを不正(しきい値を超えている)として処理」を選択します。

最後に、通知する SNS トピックへ関連付けます。

CachePercentDirty

次に、CachePercentDirty 用のアラームを作成します。

こちらのアラームも、IoWaitpercent のアラームと同様の設定にします。

挙動の確認

各アラームの状態が「OK」になっていることを確認したら、検証を開始します。

まず、ファイルゲートウェイのゲートウェイ VM である EC2 インスタンスを手動停止します。

停止後に、Storage Gateway がオフラインとなっていることを確認します。

しばらくたつと(本設定だと 10 分程度)、SNS 経由でアラートメールが受信されていることを確認します。

参考資料