スマートホームのサービス停止のモニタリング

1. 始める前に

スマートホームをデバッグするの Codelab で説明したとおり、スマートホーム プロジェクトには指標とログを公開しています。これらの指標は、スマートホーム アクションに問題があるかどうかを識別する際に役立ちます。またログは、そうした問題を解決するための詳細を確認するのに便利です。

dd44868a4ff2df6e.png

プロジェクトに提供された指標を使用してアラートを設定すると、サービス停止を自動的にモニタリングし、サービス中断時に通知を受け取ることができます。プロジェクトの中断を示す信頼度指標を公開します。この Codelab では、Google Cloud Platform で利用できる他のすべてのアラートツールとともに、この信頼性指標について説明します。

前提条件

学習内容

  • プロジェクトのパフォーマンスの問題とサービス中断をモニタリングする方法。
  • しきい値ベースのアラートを作成し、中断中に通知を受け取る方法。
  • プロジェクトに提供される信頼性指標を使用してサービス停止を検出する方法。

2. パフォーマンスのモニタリング

Google スマートホーム エコシステムとの統合を成功させるには、パフォーマンスのモニタリングが不可欠です。Google は、Google Cloud Platform 上でスマートホーム デベロッパーに一連のモニタリング ツールを提供しています。これらのツールを使用すると、プロジェクトのパフォーマンスを把握できます。

ダッシュボードへのアクセス

データにアクセスする最初のステップは、Google Home ダッシュボードを確認することです。Google Cloud コンソールにログインして、[オペレーション] > [モニタリング] > [ダッシュボード] に移動します。利用可能なダッシュボードは多数あり、スマートホーム用のダッシュボードには接頭辞「Google Home Analytics」が付いています。

317697e52ced2437.png

統合タイプごとにダッシュボードを作成しました。クラウド、ローカル、Matter の統合には独自のダッシュボードがあり、カメラ ストリーミング プロトコルのデータはカメラ品質ダッシュボードで確認できます。これらのダッシュボードにデータが含まれるのは、対応するタイプのインテグレーションがあり、リクエストに対応できる機能しているプロジェクトがある場合に限られます。

これらのダッシュボードのいずれかを開くと、次のようなビューが表示されます。

f8bfd69286c569a4.png

ダッシュボードには、プロジェクトで処理されるリクエストの詳細を示すさまざまなグラフが含まれています。すべての統合ダッシュボードには、プロジェクトで処理されるリクエストの合計数を示すグラフ、その統合タイプの成功率を示すグラフ、関連するデバイスタイプとトレイトを示す複数のグラフが表示されます。

スマートホーム アクションのパフォーマンスの評価には、次の 3 つのグラフが重要です。

f511fafd3aaaa1eb.png

サービス停止中は、通常、成功率に下降傾向、エラーの内訳グラフに上昇傾向が表示されます。実行成功率をモニタリングすると停止に気づくことができ、エラーの内訳で上位のエラーを調べるとデバッグに役立ちます。また、リクエスト レイテンシのグラフで、サービス停止中のレイテンシに上昇傾向が見られる場合があります。

なお、Google Home Analytics ダッシュボードに表示されるグラフのデフォルト ビューは、スマートホームの指標データを使用してプロジェクト用に作成されたビューにすぎません。Metrics Explorer を使用すると、同じ基礎となる指標から独自のグラフを作成し、カスタム ダッシュボードに保存することもできます。

Metrics Explorer

Metrics Explorer は、プロジェクトのデータセットの断面を可視化するツールです。このツールには、Google Cloud コンソール[オペレーション] > [Monitoring] > [Metrics Explorer] に移動してアクセスできます。

Google Cloud には、スマートホームに関連しないものを含め、すぐに使えるさまざまな指標が用意されています。スマートホーム用に提供されている指標は「actions.googleapis.com/smarthome_action/...」リソースのリストが表示され、指標選択ボックスに「smarthome」と入力すると、簡単に検索できます。

538d851edfd34764.png

「スマートホーム」を検索すると、プロジェクトで提供されるすべてのスマートホーム指標が表示されます。各指標の詳細については、ドキュメントの [モニタリング] ページと [ロギング] ページをご覧ください。

プロジェクトをモニタリングする際に参照する最も簡単な指標は、リクエスト数指標(デルタ指標)です。この指標には、ユーザーが開始したスマートホームの実行ごとにエントリと、デバイスタイプ、トレイト、実行に関連する実行タイプなどのフィールドと、結果を示すステータス フィールドが記録されます。

この指標を選択すると、次のような各データバケットを示す画面が生成されます。

b1c18141d15a0e09.png

基本的に、この指標に含まれるデータラベルの組み合わせごとに、過去と現在の期間間の変化(差分)を記録するバケットが存在します。これらのバケットをグループ化またはフィルタして、必要なビューデータスライスを取得できます。さらに、データは、アライメント関数(DELTA、MEAN、MEDIAN、SUM)を使用して、選択された時間間隔にアライメントされます。特に必要な場合を除き、通常はデルタ指標とデルタ アライメントを使用します。

Metrics Explorer を使用すると、Google ホーム アナリティクスのダッシュボードに表示されるグラフのほとんどを作成し、後でアクセスできるようにカスタム ダッシュボードでグラフを保存できます。比率グラフなどのより複雑なビューを実現するには、MQL - Monitoring Query Language を使用する必要があります。

3. 成功指標

統合の成功を追跡するには、リクエスト数の指標から計算した成功率をベースライン インジケーターとして使用するか、成功の信頼度(より専門的なアプローチ)を使用できます。

成功

成功率は、すべての統合に対する成功したリクエストの数を、すべてのリクエストに対する成功率で割って計算されます。この指標には、Google ホーム分析ダッシュボードのフルフィルメント成功率グラフからアクセスできます。

55ea8930fbf48d9e.png

フルフィルメント成功率グラフは、プロジェクトのパフォーマンスをモニタリングするのに非常に便利ですが、カスタム ダッシュボードを構築したりアラートを設定したりする場合はあまり有用ではありません。成功率は指標自体ではなく、リクエスト数の指標から導出されるため、いずれかの機能で使用するには、Metrics Explorer で MQL(Monitoring Query Language)を使用して再作成する必要があります。

また、プロジェクトのパフォーマンスの中断を追跡するには、より専門的なアプローチが必要であると考えられます。そのため Google では、現在のフルフィルメント成功率が過去の標準からどの程度逸脱しているかに応じて変化する信頼度の指標を作成しました。

信頼度の指標

プロジェクトの停止は、さまざまな形や規模で発生します。数時間から数分間続くこともあるため、特定が難しい場合があります。そのために、プロジェクトに信頼度指標を作成しました。これは、過去のパフォーマンスに基づいて信頼性を予測するための正規化された値を提供します。信頼度の指標にアクセスするには、Metrics Explorer で「スマートホーム」を検索して、[Execution successconf(実行成功信頼度)] を選択します。

ab467a1777281526.png

スマートホーム統合のパフォーマンスが過去のパフォーマンス(7 日間の平均)以上になると、この指標から最大値(1.0)が出力されます。成功率が標準偏差の 4 倍(これも 7 日間で計算)を超える場合は、この指標から最小値(0.0)が出力されます。標準偏差が小さすぎる(2.5% 未満)場合、この指標は成功率の 10% 低下を 0.0 とみなします。

中間となるすべてのケースで、この指標は 1.0(停止がないことを完全に確信している)から 0.0(停止していることに対する最大の信頼度)の値を提供します。

そのため、アラートを設定する際は(次のセクションで説明)0.5 の値をしきい値として設定することをおすすめします。これは、2 標準偏差または 5% の減少のいずれか高い方に相当します。

4. アラートの設定

次のステップでは、前のセクションで学んだことをすべて使用して、プロジェクトにアラートを設定します。

アラート ポリシーの作成

Google Cloud Platform の自動アラートは、アラート ポリシーで設定します。アラート ポリシーには、サイドメニューの [Operations] > [Monitoring] > [Alerting] タブからアクセスできます。新しいアラート ポリシーを作成するには、[+CREATE POLICY] オプションを選択します。これにより、アラート ポリシーの作成画面が表示されます。

6e417d88c2274b3d.png

アラート ポリシーの作成は、3 つの部分に分かれています。まず、条件を追加して、追跡する対象を決定する必要があります。[ADD CONDITION] ボタンを押すと、Metrics Explorer と同様のウィンドウが表示され、条件を設定するための追加のコントロールがいくつか表示されます。

df1ccf7da741e1c7.png

目標値には、前のセクションで説明した信頼度の指標を選択します。この指標を使用して、配置指定子がデルタに設定されていることを確認します([詳細オプションを表示] > [配置指定子])。次のステップでは、アラート条件を構成し、次の設定を使用します。

4192e0f4ea00dd28.png

Condition trigger if - アラートをトリガーするタイミングを決定するためのメインの構成です。指標にしきい値を設定し、値が超過するかどうかをモニタリングするため、[Any time seriesViolation] を選択します。

Condition - 値がしきい値を下回ったときにアラートをトリガーするため、これを [is below] に設定します。指標では、1.0 は統合が正常に機能していることを意味し、0.0 は明らかな停止を示します。

しきい値 - この値が 0.5 の場合に最良の結果が得られるように、信頼度の指標が作成されました。アラートの頻度を上げ、インシデントが少ない場合に通知を受け取るには、この値を大きくしてみてください(最大 1.0)。その後、アラート数を減らしたい場合は、より重大な問題に対してのみ、この値を下げてみます(最小 0.0)。

For - これは、アラートを受け取るまでの停止期間を指定する設定です。しきい値を超えるポイントがある場合にアラートを受け取れるように、この設定は最新の値のままにしておくことをおすすめします。Google の信頼度指標は 15 分ごとに公開され、その期間の平均的な成功がチェックされます。

条件を追加したら、次のステップとして通知チャンネルを選択します。最も簡単な通知方法は、メールアラートです。[通知チャンネル] プルダウンに表示されるメールアドレスを選択できます。

3cc10629830e7f13.png

[Notify on incidents closure] オプションをオンにすると、インシデントが「Closed」としてマークされると、別の通知が送信されます。その場合は、インシデントの自動クローズ期間も選択する必要があります。これはデフォルトで 7 日間に設定されています。

最後に、アラートに名前を付け、通知に含めるドキュメントを追加します。

686fb1c537fee10.png

特にアラートを受け取る担当者でない場合は、ドキュメントを提出することをおすすめします。インシデント中に確認する場所や、優先順位を付けてデバッグする方法などのステップを追加すると、サービス停止中に役立ちます。必要に応じて、トラブルシューティング ガイドをご覧ください。

保存すると、アラート ポリシーは [アラート] ページの [ポリシー] セクションに表示されます。

c71a001e4df035ee.png

5. サービス停止の軽減

アラートを設定すると、サービス停止時に指定した通知チャンネルから通知が届くほか、[アラート] ページにインシデントのエントリが作成されます。

アラートの受信

この Codelab で提供しているアラート チャネルはメールです。設定すると、アラートを受信しない(サービス停止が発生していない)ことを願いますが、設定すると、通知は次のようになります。

43217b0a145c2cd.png

アラート通知には、指定したしきい値を超える観測値と、インシデントが最初に始まった時点を示すタイムスタンプが表示されます。

インシデントのモニタリング

インシデントが発生すると、[アラート] ページのインシデント セクションにもカウントされます。

fdd883a9604ed981.png

特定のインシデントをクリックすると、停止期間や重大度など、停止に関する詳細が表示されます。

アラートを受け取ったら、まず指標を確認し、ログでサービス停止の原因となっているエラーを検索することをおすすめします。これらの方法については、Codelab のスマートホームのデバッグで復習できます。

6. 完了

17d485868a6771bc.png

これで完了です。プロジェクトに提供された指標を使用してアラートを設定して、サービス停止を自動的にモニタリングし、サービス中断時に通知を受け取る方法を確認しました。

次のステップ

この Codelab で学んだことを活かして、追加リソースを参照しながら以下の演習に挑戦してみましょう。

  • この Codelab で学んだことを、プロジェクトに提供されている他の指標と組み合わせることができます。使用可能な指標の完全なリストは、[Monitoring] ページの [サポートされている指標] セクションで確認できます。
  • Google Cloud Platform ドキュメントの通知オプションのページで説明されているアラートの他の種類の通知チャンネルを確認する。