オンライン エンドポイントを監視する
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 に移動して、エンドポイントまたはデプロイのメトリック ページを検索することもできます。
スタジオで利用可能なリンクを使用してメトリック ページにアクセスするには
Azure Machine Learning Studio に移動します。
左側のナビゲーション バーで、 [エンドポイント] ページを選択します。
エンドポイントの名前をクリックして、エンドポイントを選択します。
エンドポイントの [属性] セクションで [メトリックの表示] を選択して、Azure portal でエンドポイントのメトリック ページを開きます。
利用可能な各デプロイのセクションで [メトリックを表示] を選択して、Azure portal でデプロイのメトリック ページを開きます。
メトリックには、Azure portal から直接アクセスできます。
Azure portal にサインインします。
オンライン エンドポイントまたはデプロイ リソースに移動します。
オンライン エンドポイントとデプロイは、それらを所有しているリソース グループに移動することによって見つけることができる、Azure Resource Manager (ARM) リソースです。 [Machine Learning online endpoint](Machine Learning オンライン エンドポイント) と [Machine Learning online deployment](Machine Learning オンライン デプロイ) というリソースの種類を探します。
左側の列で、 [メトリック] を選択します。
使用可能なメトリック
選択したリソースに応じて、表示されるメトリックは異なります。 メトリックのスコープは、オンライン エンドポイントとオンライン デプロイで異なります。
エンドポイント スコープのメトリック
カテゴリ | メトリック | REST API での名前 | 出荷単位 | 集計 | Dimensions | 期間粒度 | DS エクスポート |
---|---|---|---|---|---|---|---|
トラフィック | アクティブな接続 クライアントからのアクティブになっているコンカレント TCP 接続の合計数。 |
ConnectionsActive |
Count | Average | <なし> | PT1M | いいえ |
トラフィック | 1 分あたりのデータ収集エラー数 1 分あたりに破棄されたデータ収集イベントの数。 |
DataCollectionErrorsPerMinute |
カウント | Minimum、Maximum、Average | deployment 、reason 、type |
PT1M | いいえ |
トラフィック | 1 分あたりのデータ収集イベント数 1 分あたりに処理されたデータ収集イベントの数。 |
DataCollectionEventsPerMinute |
カウント | Minimum、Maximum、Average | deployment 、type |
PT1M | いいえ |
トラフィック | ネットワーク バイト数 エンドポイントで処理された 1 秒あたりのバイト数。 |
NetworkBytes |
BytesPerSecond | Average | <なし> | PT1M | いいえ |
トラフィック | 1 秒あたりの新しい接続数 クライアントから確立された 1 秒あたりの新しい TCP 接続の平均数。 |
NewConnectionsPerSecond |
CountPerSecond | Average | <なし> | PT1M | いいえ |
トラフィック | 要求の待機時間 要求が応答されるまでにかかった平均完了時間間隔 (ミリ秒単位) |
RequestLatency |
ミリ秒 | Average | deployment |
PT1M | はい |
トラフィック | 要求の待機時間 P50 選択した期間に収集されたすべての要求待機時間値によって集計された P50 要求の平均待機時間 |
RequestLatency_P50 |
ミリ秒 | Average | deployment |
PT1M | はい |
トラフィック | 要求の待機時間 P90 選択した期間に収集されたすべての要求待機時間値によって集計された P90 要求の平均待機時間 |
RequestLatency_P90 |
ミリ秒 | Average | deployment |
PT1M | はい |
トラフィック | 要求の待機時間 P95 選択した期間に収集されたすべての要求待機時間値によって集計された P95 要求の平均待機時間 |
RequestLatency_P95 |
ミリ秒 | Average | deployment |
PT1M | はい |
トラフィック | 要求の待機時間 P99 選択した期間に収集されたすべての要求待機時間値によって集計された P99 要求の平均待機時間 |
RequestLatency_P99 |
ミリ秒 | Average | deployment |
PT1M | はい |
トラフィック | 1 分あたりの要求数 1 分以内にオンライン エンドポイントに送信された要求の数 |
RequestsPerMinute |
Count | Average | deployment 、statusCode 、statusCodeClass , modelStatusCode |
PT1M | いいえ |
帯域幅調整
マネージド オンライン エンドポイントのクォータ制限を超えると、帯域幅が調整されます。 制限の詳細については、オンライン エンドポイントの制限に関する記事を参照してください。 要求が調整されるかどうかを確認するには:
- "ネットワーク バイト数" メトリックを監視する
- 応答トレーラーには
ms-azureml-bandwidth-request-delay-ms
フィールドとms-azureml-bandwidth-response-delay-ms
フィールドが与えられます。 フィールドの値は帯域幅調整の遅延 (ミリ秒単位) です。
詳細については、「帯域幅制限の問題」を参照してください。
デプロイ スコープのメトリック
カテゴリ | メトリック | REST API での名前 | 出荷単位 | 集計 | Dimensions | 期間粒度 | DS エクスポート |
---|---|---|---|---|---|---|---|
リソース | CPU メモリ使用率 インスタンスのメモリ使用率 (%)。 使用率は 1 分間隔で報告されます。 |
CpuMemoryUtilizationPercentage |
パーセント | Minimum、Maximum、Average | instanceId |
PT1M | はい |
リソース | CPU 使用率 インスタンスの CPU 使用率 (%)。 使用率は 1 分間隔で報告されます。 |
CpuUtilizationPercentage |
パーセント | Minimum、Maximum、Average | instanceId |
PT1M | はい |
リソース | 1 分あたりのデータ収集エラー数 1 分あたりに破棄されたデータ収集イベントの数。 |
DataCollectionErrorsPerMinute |
カウント | Minimum、Maximum、Average | instanceId 、reason 、type |
PT1M | いいえ |
リソース | 1 分あたりのデータ収集イベント数 1 分あたりに処理されたデータ収集イベントの数。 |
DataCollectionEventsPerMinute |
カウント | Minimum、Maximum、Average | instanceId 、type |
PT1M | いいえ |
リソース | デプロイ容量 デプロイ内のインスタンスの数。 |
DeploymentCapacity |
カウント | Minimum、Maximum、Average | instanceId 、 State |
PT1M | いいえ |
リソース | ディスク使用量 インスタンスのディスク使用率 (%)。 使用率は 1 分間隔で報告されます。 |
DiskUtilization |
パーセント | Minimum、Maximum、Average | instanceId 、disk |
PT1M | はい |
リソース | GPU エネルギー (ジュール単位) GPU ノードでのコンセントのエネルギーの間隔 (ジュール単位)。 エネルギーは 1 分間隔で報告されます。 |
GpuEnergyJoules |
カウント | Minimum、Maximum、Average | instanceId |
PT1M | いいえ |
リソース | GPU メモリ使用率 インスタンスの GPU メモリ使用率 (%)。 使用率は 1 分間隔で報告されます。 |
GpuMemoryUtilizationPercentage |
パーセント | Minimum、Maximum、Average | instanceId |
PT1M | はい |
リソース | GPU 使用率 インスタンスの GPU 使用率 (%)。 使用率は 1 分間隔で報告されます。 |
GpuUtilizationPercentage |
パーセント | Minimum、Maximum、Average | instanceId |
PT1M | はい |
トラフィック | 要求の待機時間 P50 選択した期間に収集されたすべての要求待機時間値によって集計された P50 要求の平均待機時間 |
RequestLatency_P50 |
ミリ秒 | Average | <なし> | PT1M | はい |
トラフィック | 要求の待機時間 P90 選択した期間に収集されたすべての要求待機時間値によって集計された P90 要求の平均待機時間 |
RequestLatency_P90 |
ミリ秒 | Average | <なし> | PT1M | はい |
トラフィック | 要求の待機時間 P95 選択した期間に収集されたすべての要求待機時間値によって集計された P95 要求の平均待機時間 |
RequestLatency_P95 |
ミリ秒 | Average | <なし> | PT1M | はい |
トラフィック | 要求の待機時間 P99 選択した期間に収集されたすべての要求待機時間値によって集計された P99 要求の平均待機時間 |
RequestLatency_P99 |
ミリ秒 | Average | <なし> | PT1M | はい |
トラフィック | 1 分あたりの要求数 1 分以内にオンライン デプロイに送信された要求の数 |
RequestsPerMinute |
Count | Average | envoy_response_code |
PT1M | いいえ |
ダッシュボードとアラートを作成する
Azure Monitor を使用すると、メトリックに基づいてダッシュボードとアラートを作成できます。
ダッシュボードを作成してクエリを視覚化する
カスタム ダッシュボードを作成して、オンライン エンドポイントのメトリックなど、複数のソースからのメトリックを Azure portal で視覚化できます。 ダッシュボードの作成とクエリの視覚化の詳細については、「ログ データを使用したダッシュボード」および「アプリケーション データを使用したダッシュボード」を参照してください。
アラートを作成する
また、カスタム アラートを作成して、オンライン エンドポイントに対する重要な状態の更新を通知することもできます。
メトリック ページの右上で、 [新しいアラート ルール] を選択します。
条件名を選択して、どのようなときにアラートがトリガーされるかを指定します。
[Add action groups](アクション グループの追加)>[Create action groups](アクション グループの作成) の順に選択して、アラートがトリガーされたときに何が起きるようにするかを指定します。
[アラート ルールの作成] を選択して、アラートの作成を完了します。
詳細については、「Azure Monitor アラート ルールの作成」を参照してください。
メトリックに基づいて自動スケーリングを有効にする
UI またはコードを使用して、メトリックを使用したデプロイの自動スケーリングを有効にすることができます。 コード (CLI または SDK) を使用する場合は、自動スケーリングをトリガーする条件において、使用可能なメトリックの表に示されているメトリック ID を使用できます。 詳しくは、「オンライン エンドポイントを自動スケーリングする」をご覧ください。
ログ
オンライン エンドポイントに対して次の 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 ワークスペースの作成に関するページの手順を使用して作成できます。
Azure portal で、エンドポイントを含むリソース グループに移動し、エンドポイントを選択します。
ページの左側にある [監視] セクションで [診断設定] を選択し、[設定の追加] を選択します。
有効にするログ カテゴリを選択し、[Log Analytics ワークスペースへの送信] を選択してから、使用する Log Analytics ワークスペースを選択します。 最後に、[診断設定の名前] を入力し、[保存] を選択します。
重要
Log Analytics ワークスペースへの接続が有効になるまでに最大 1 時間かかる場合があります。 次の手順に進む前に、1 時間待ちます。
エンドポイントにスコアリング要求を送信します。 このアクティビティにより、ログにエントリが作成されます。
オンライン エンドポイントのプロパティまたは Log Analytics ワークスペースから、画面の左側にある [ログ] を選択します。
自動的に開く [クエリ] ダイアログを閉じ、[AmlOnlineEndpointConsoleLog] をダブルクリックします。 表示されていない場合は、[検索] フィールドを使用してください。
[実行] を選択します。
クエリの例
クエリの例は、ログの表示中に [クエリ] タブで確認できます。 オンライン エンドポイントを検索して、クエリの例を見つけます。
ログ列の詳細
次の表に、各ログに格納されるデータの詳細を示します。
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 の診断とデータ収集を有効にする] を選択する必要があります。
関連するコンテンツ
- デプロイされたエンドポイントのコストを表示する方法について学習します。
- メトリックス エクスプローラーの詳細情報を読みます。