オンライン エンドポイントを監視する

Azure Machine Learning は、Azure Monitor との統合を使用して、オンライン エンドポイントのメトリックとログを追跡および監視します。 メトリックをグラフで表示し、エンドポイントとデプロイメントを比較し、Azure portal ダッシュボードにピン留めし、アラートを構成し、ログ テーブルからクエリを実行し、サポートされているターゲットにログをプッシュすることができます。 Application Insights を使用して、ユーザー コンテナーからのイベントを分析することもできます。

  • メトリック: 要求の待機時間、1 分あたりの要求数、1 秒あたりの新しい接続数、ネットワーク バイトなどのエンドポイント レベルのメトリックの場合は、ドリルダウンしてデプロイ レベルまたは状態レベルで詳細を確認できます。 CPU/GPU 使用率、メモリ、ディスク使用率などのデプロイ レベルのメトリックも、インスタンス レベルにドリルダウンできます。 Azure Monitor では、グラフ内のこれらのメトリックを追跡し、ダッシュボードとアラートを設定して、さらに分析を行うことができます。

  • ログ: Kusto クエリ構文を使ってログに対してクエリを実行できる Log Analytics ワークスペースにメトリックを送信できます。 Azure Storage アカウントや Event Hubs にメトリックを送信して、さらに処理を行うこともできます。 また、オンライン エンドポイント関連のイベント、トラフィック、コンソール (コンテナー) ログに専用のログ テーブルを使うことができます。 Kusto クエリを使うと、複数のテーブルの複雑な分析と結合を行うことができます。

  • Application Insights: キュレーションされた環境には Application Insights との統合が含まれています。これは、オンライン デプロイを作成するときに有効または無効にすることができます。 組み込みのメトリックとログは Application Insights に送信され、Application Insights の組み込み機能 (ライブ メトリック、トランザクション検索、エラー、パフォーマンスなど) を使用してさらに分析できます。

この記事では、次の方法について説明します。

  • メトリックとログを表示および追跡するための適切な方法を選択する
  • オンライン エンドポイントのメトリックを表示する
  • メトリックのダッシュボードを作成する
  • メトリック アラートの作成
  • オンライン エンドポイントのログを表示する
  • Application Insights を使用してメトリックとログを追跡する

前提条件

  • Azure Machine Learning のオンライン エンドポイントをデプロイします。
  • 少なくとも、エンドポイントに対する閲覧者アクセス権が必要です。

メトリック

オンライン エンドポイントまたはデプロイのメトリック ページは、Azure portal で表示できます。 これらのメトリック ページに簡単にアクセスするには、Azure Machine Learning スタジオ ユーザー インターフェイス (特にエンドポイントのページの [詳細] タブ) で使用できるリンクを使用します。 これらのリンクに従うと、エンドポイントまたはデプロイの Azure portal の正確なメトリック ページに移動します。 または、Azure portal に移動して、エンドポイントまたはデプロイのメトリック ページを検索することもできます。

スタジオで利用可能なリンクを使用してメトリック ページにアクセスするには

  1. Azure Machine Learning Studio に移動します。

  2. 左側のナビゲーション バーで、 [エンドポイント] ページを選択します。

  3. エンドポイントの名前をクリックして、エンドポイントを選択します。

  4. エンドポイントの [属性] セクションで [メトリックの表示] を選択して、Azure portal でエンドポイントのメトリック ページを開きます。

  5. 利用可能な各デプロイのセクションで [メトリックを表示] を選択して、Azure portal でデプロイのメトリック ページを開きます。

    A screenshot showing how to access the metrics of an endpoint and deployment from the studio UI.

メトリックには、Azure portal から直接アクセスできます。

  1. Azure portal にサインインします。

  2. オンライン エンドポイントまたはデプロイ リソースに移動します。

    オンライン エンドポイントとデプロイは、それらを所有しているリソース グループに移動することによって見つけることができる、Azure Resource Manager (ARM) リソースです。 [Machine Learning online endpoint](Machine Learning オンライン エンドポイント)[Machine Learning online deployment](Machine Learning オンライン デプロイ) というリソースの種類を探します。

  3. 左側の列で、 [メトリック] を選択します。

使用可能なメトリック

選択したリソースに応じて、表示されるメトリックは異なります。 メトリックのスコープは、オンライン エンドポイントとオンライン デプロイで異なります。

エンドポイント スコープのメトリック

  • 要求の待機時間
  • 要求待ち時間 P50 (50 パーセンタイルでの要求待ち時間)
  • 要求待ち時間 P90 (90 パーセンタイルでの要求待ち時間)
  • 要求待ち時間 P95 (95 パーセンタイルでの要求待ち時間)
  • 1 分あたりの要求数
  • 1 秒あたりの新しい接続数
  • アクティブな接続数
  • ネットワーク バイト数

次のディメンションで分割:

  • デプロイ
  • 状態コード
  • 状態コード クラス

たとえば、デプロイ ディメンションに沿って分割して、エンドポイントで異なるデプロイの要求待ち時間を比較できます。

帯域幅調整

マネージド オンライン エンドポイントのクォータ制限を超えると、帯域幅が調整されます。 制限の詳細については、オンライン エンドポイントの制限に関する記事を参照してください。 要求が調整されるかどうかを確認するには:

  • "ネットワーク バイト数" メトリックを監視する
  • 応答トレーラーには ms-azureml-bandwidth-request-delay-ms フィールドと ms-azureml-bandwidth-response-delay-ms フィールドが与えられます。 フィールドの値は帯域幅調整の遅延 (ミリ秒単位) です。 詳細については、「帯域幅制限の問題」を参照してください。

デプロイ スコープのメトリック

  • CPU 使用率
  • デプロイ容量 (要求されたインスタンスの種類のインスタンスの数)
  • ディスク使用率
  • GPU メモリ使用率 (GPU インスタンスのみ該当)
  • GPU 使用率 (GPU インスタンスのみ該当)
  • メモリ使用率

次のディメンションで分割:

  • インスタンス ID

たとえば、オンライン デプロイの異なるインスタンス間で CPU 使用率やメモリ使用率を比較できます。

ダッシュボードとアラートを作成する

Azure Monitor を使用すると、メトリックに基づいてダッシュボードとアラートを作成できます。

ダッシュボードを作成してクエリを視覚化する

カスタム ダッシュボードを作成して、オンライン エンドポイントのメトリックなど、複数のソースからのメトリックを Azure portal で視覚化できます。 ダッシュボードの作成とクエリの視覚化の詳細については、「ログ データを使用したダッシュボード」および「アプリケーション データを使用したダッシュボード」を参照してください。

アラートを作成する

また、カスタム アラートを作成して、オンライン エンドポイントに対する重要な状態の更新を通知することもできます。

  1. メトリック ページの右上で、 [新しいアラート ルール] を選択します。

    Screenshot showing 'New alert rule' button surrounded by a red box.

  2. 条件名を選択して、どのようなときにアラートがトリガーされるかを指定します。

    Screenshot showing 'Configure signal logic' button surrounded by a red box.

  3. [Add action groups](アクション グループの追加)>[Create action groups](アクション グループの作成) の順に選択して、アラートがトリガーされたときに何が起きるようにするかを指定します。

  4. [アラート ルールの作成] を選択して、アラートの作成を完了します。

詳細については、「Azure Monitor アラート ルールの作成」を参照してください。

ログ

オンライン エンドポイントに対して次の 3 つのログを有効にできます。

  • AmlOnlineEndpointTrafficLog: 要求の情報を確認する場合は、トラフィック ログを有効にすることを選択できます。 いくつかのケースを次に示します。

    • 応答が 200 でない場合、[ResponseCodeReason] 列の値を調べて、発生した内容を確認します。 また、オンライン エンドポイントのトラブルシューティングに関する記事の「HTTPS 状態コード」セクションで理由を確認します。

    • [ModelStatusCode] 列と [ModelStatusReason] 列でモデルの応答コードと応答の理由を確認できます。

    • 合計所要時間、要求/応答所要時間、ネットワーク帯域幅の調整によって発生した延期期間など、要求の所要時間を確認できます。 ログを調べて、内訳の待機時間を確認できます。

    • 最近の要求数または失敗した要求数を確認する場合に、 ログを有効にすることもできます。

  • AmlOnlineEndpointConsoleLog: コンテナーがコンソールに出力するログを含めます。 いくつかのケースを次に示します。

    • コンテナーの起動に失敗した場合、コンソール ログがデバッグに役立つ場合があります。

    • コンテナーのビヘイビアーを監視し、すべての要求が正しく処理されていることを確認します。

    • コンソール ログに要求 ID を書き込みます。 Log Analytics ワークスペースで要求 ID、AmlOnlineEndpointConsoleLog、AmlOnlineEndpointTrafficLog を結合すると、オンライン エンドポイントのネットワーク エントリ ポイントからコンテナーへの要求をトレースできます。

    • また、このログを使って、モデルで各要求を処理するために必要な時間を決定する際にパフォーマンス分析を行うこともできます。

  • AmlOnlineEndpointEventLog: コンテナーのライフ サイクルに関するイベント情報を含めます。 現在、次の種類のイベントに関する情報を提供しています。

    名前 メッセージ
    バックオフ Back-off restarting failed container (失敗したコンテナーの再起動をバックオフしました)
    プルされました Container image "<IMAGE_NAME>" already present on machine (コンテナー イメージ "<IMAGE_NAME>" がマシンに既に存在しています)
    強制終了しています Container inference-server failed liveness probe, will be restarted (コンテナー inference-server の liveness probe が失敗し、再起動されます)
    作成済み Created container image-fetcher (コンテナー image-fetcher を作成しました)
    作成済み Created container inference-server (コンテナー inference-server を作成しました)
    作成済み Created container model-mount (コンテナー model-mount を作成しました)
    LivenessProbeFailed Liveness probe failed: <FAILURE_CONTENT> (liveness probe が失敗しました: <FAILURE_CONTENT>)
    ReadinessProbeFailed Readiness probe failed: <FAILURE_CONTENT> (readiness probe が失敗しました: <FAILURE_CONTENT>)
    Started Started container image-fetcher (コンテナー image-fetcher を開始しました)
    Started Started container inference-server (コンテナー inference-server を開始しました)
    Started Started container model-mount (コンテナー model-mount を開始しました)
    強制終了しています Stopping container inference-server (コンテナー inference-server を停止しています)
    強制終了しています Stopping container model-mount (コンテナー model-mount を停止しています)

ログを有効または無効にする方法

重要

ログでは Azure Log Analytics を使用します。 現在 Log Analytics ワークスペースがない場合は、Azure portal での Log Analytics ワークスペースの作成に関するページの手順を使用して作成できます。

  1. Azure portal で、エンドポイントを含むリソース グループに移動し、エンドポイントを選択します。

  2. ページの左側にある [監視] セクションで [診断設定] を選択し、[設定の追加] を選択します。

  3. 有効にするログ カテゴリを選択し、[Log Analytics ワークスペースへの送信] を選択してから、使用する Log Analytics ワークスペースを選択します。 最後に、[診断設定の名前] を入力し、[保存] を選択します。

    Screenshot of the diagnostic settings dialog.

    重要

    Log Analytics ワークスペースへの接続が有効になるまでに最大 1 時間かかる場合があります。 次の手順に進む前に、1 時間待ちます。

  4. エンドポイントにスコアリング要求を送信します。 このアクティビティにより、ログにエントリが作成されます。

  5. オンライン エンドポイントのプロパティまたは Log Analytics ワークスペースから、画面の左側にある [ログ] を選択します。

  6. 自動的に開く [クエリ] ダイアログを閉じ、[AmlOnlineEndpointConsoleLog] をダブルクリックします。 表示されていない場合は、[検索] フィールドを使用してください。

    Screenshot showing the log queries.

  7. [実行] を選択します。

    Screenshots of the results after running a query.

クエリの例

クエリの例は、ログの表示中に [クエリ] タブで確認できます。 オンライン エンドポイントを検索して、クエリの例を見つけます。

Screenshot of the example queries.

ログ列の詳細

次の表に、各ログに格納されるデータの詳細を示します。

AmlOnlineEndpointTrafficLog

プロパティ 説明
認証方法 クライアントから要求されたメソッド。
パス クライアントから要求されたパス。
SubscriptionId オンライン エンドポイントの機械学習サブスクリプション ID。
AzureMLWorkspaceId オンライン エンドポイントの機械学習ワークスペース ID。
AzureMLWorkspaceName オンライン エンドポイントの機械学習ワークスペース名。
EndpointName オンライン エンドポイントの名前。
DeploymentName オンライン デプロイの名前。
Protocol 要求のプロトコル。
ResponseCode クライアントに返された最後の応答コード。
ResponseCodeReason クライアントに返された最後の応答コードの理由。
ModelStatusCode モデルからの応答の状態コード。
ModelStatusReason モデルからの応答の状態の理由。
RequestPayloadSize クライアントから受信した合計バイト数。
ResponsePayloadSize クライアントに返された合計バイト数。
UserAgent コメントを含むが最大 70 文字に切り捨てられた要求のユーザー エージェント ヘッダー。
XRequestId 内部トレース用に Azure Machine Learning によって生成された要求 ID。
XMSClientRequestId クライアントによって生成された追跡 ID。
TotalDurationMs 要求の開始時刻からクライアントに最後の応答バイトが返されたときまでの時間 (ミリ秒単位)。 クライアントが切断された場合、開始時刻からクライアントの切断時刻までが測定されます。
RequestDurationMs 要求の開始時刻からクライアントから要求の最後のバイトを受信したときまでの時間 (ミリ秒単位)。
ResponseDurationMs 要求の開始時刻からモデルから最初の応答バイトが読み取られたときまでの時間 (ミリ秒単位)。
RequestThrottlingDelayMs ネットワーク帯域幅の調整による要求データ転送の延期期間 (ミリ秒単位)。
ResponseThrottlingDelayMs ネットワーク帯域幅の調整による応答データ転送の延期期間 (ミリ秒単位)。

AmlOnlineEndpointConsoleLog

プロパティ 説明
TimeGenerated ログが生成された時刻のタイムスタンプ (UTC)。
OperationName ログ レコードに関連付けられている操作。
InstanceId このログ レコードを生成したインスタンスの ID。
DeploymentName ログ レコードに関連付けられているデプロイの名前。
コンテナー名 ログが生成されたコンテナーの名前。
メッセージ ログのコンテンツ。

AmlOnlineEndpointEventLog

プロパティ 説明
TimeGenerated ログが生成された時刻のタイムスタンプ (UTC)。
OperationName ログ レコードに関連付けられている操作。
InstanceId このログ レコードを生成したインスタンスの ID。
DeploymentName ログ レコードに関連付けられているデプロイの名前。
名前 イベントの名前です。
メッセージ イベントのコンテンツ。

Application Insights の使用

キュレーションされた環境には Application Insights との統合が含まれています。これは、オンライン デプロイを作成するときに有効または無効にすることができます。 組み込みのメトリックとログは Application Insights に送信され、Application Insights の組み込み機能 (ライブ メトリック、トランザクション検索、エラー、パフォーマンスなど) を使用してさらに分析できます。

詳細については、「Application Insights の概要」を参照してください。

スタジオでは、オンライン エンドポイントのページの [監視] タブを使用して、マネージド オンライン エンドポイントのアクティビティ モニターグラフを高レベルで表示できます。 [監視] タブを使用するには、エンドポイントの作成時 [Application Insight の診断とデータ収集を有効にする] を選択する必要があります。

A screenshot of monitoring endpoint-level metrics in the studio.