次の方法で共有


クラウド スクリプトのトラブルシューティング

環境のアップロードに失敗しました

Mesh Uploader プロセス中に Mesh Cloud Scripting ステージが失敗し、表示されるエラーが "詳細についてはログを確認してください" である場合は、情報ログが Unity コンソールに表示されていることを確認します。 現在、一部のエラーは情報ログとして表示されます。 これは、今後のリリースで改善される予定です。

Mesh Cloud Scripting Package のインストールに失敗しました

  1. パッケージのインストールまたは .NET ツールのインストール (The tool package could not be restored または Verify your unity package integrity) に関連するエラーが発生した場合は、グローバル NuGet 構成 (コンピューターで構成されている NuGet 構成ディレクトリの下 C:\Users\<UserName>\AppData\Roaming\NuGet\NuGet.config または既定) に無効なパッケージ ソースがないことを確認します。
  2. 再生モードを開始するときにエラーが package is already installed 発生した場合は、再生モードを終了してもう一度起動すると、それを軽減する必要があります。
  3. ディレクトリに対するアクセス権を確認します Assets\.MeshCloudScripting\.Packages

Unity エディター Play ボタンを押した後、何も起こりません

  1. Unity ログでエラーがないか確認します。 特に、Mesh Cloud Scripting コードにコンパイル エラーが発生した場合は、エラー ログに "Cloud Scripting build failed" と表示されます。 この場合は、Mesh Cloud Scripting の csproj ファイルを開き、エラーを修正します。 Visual Studio からビルドすると、ビルド出力でエラーがより便利に表示されます。
  2. その他のエラーがある場合は、このページで特定のエラーに関するその他のトラブルシューティング情報を確認してください。
  3. エラーがない場合は、Mesh Cloud Scripting コードにランタイム エラーが発生する可能性があります。 デバッガーを使用してアプリケーションにアタッチし、出力でエラーがないか調べます。
  4. 何も役に立たなかった場合は、 バグを報告してください

Microsoft Mesh アプリケーションでイベントに参加すると、Mesh Cloud Scripting は機能しません

  1. Unity でローカルにプレビューするときに、シーンが期待どおりに再生されることを確認します。
  2. デプロイされた環境が、Mesh Cloud Scripting サービスで使用される scene.map と一致していることを確認します。
    1. Unity プロジェクトで、 Mesh Cloud Scripting コンポーネントに移動し、 を押 Serialize Scene してシーン グラフのシリアル化を強制します。
    2. Mesh Uploader を使用して環境を再アップロードします。
  3. デプロイされたサービスに対してローカル Unity バージョンをテストします。
    • 動作していない場合は、Unity のログでエラーがないか確認します。
  4. 何も役に立たなかった場合は、 バグを報告してください

クリックが受信されない

  1. Mesh Cloud Scripting Service が、システムが処理する頻度が高すぎる場合にメッセージを送信している可能性があります。 この場合、クリックは実際に受信される可能性がありますが、メッセージのバックログが大きいため、結果がクライアントに反映されるまでに長い時間がかかります。 頻度の高い更新コードを一時的に無効にして、問題が解決するかどうかを確認してください。 その場合は、Mesh Cloud Scripting からプロパティを更新するのではなく、Unity アニメーターを駆動することを検討してください。
  2. 何も役に立たなかった場合は、 バグを報告してください

Play キーを押すと Unity がフリーズする

Unity の再生中に Unity から別のアプリにフォーカスを切り替えると、Mesh Cloud Scripting Service は引き続き実行され、メッセージキューにメッセージが送信されます。 Unity にフォーカスを切り替えると、キューが完全にドレインされるまで一時停止します。 Mesh Cloud Scripting Service が頻繁に状態変更を行っている場合、または Unity から長時間フォーカスを切り替えた場合、Unity はしばらくの間フリーズする可能性があります。

ログを収集する方法

Unity ログの収集

問題を報告する前に、[ 詳細度][診断] に設定します。

診断ログの構成

問題を再現し、Unity ログを送信します。 既定では に格納されている Unity メニューを使用してログ ファイルを %LOCALAPPDATA%\Unity\Editor\Editor.log見つけることができます。

Unity ログの収集

Microsoft Mesh アプリケーションからのクライアント ログの収集

次のコンテンツを含む "startup_settings.json" という名前のファイルをデスクトップに作成して、PC クライアント ログを構成します。

{
  "use_startup_settings": true,
  "log_groups": [
    { "name": "CloudScriptingClientSDK", "level": "Debug" },
    { "name": "CloudScriptingUnityRuntime", "level": "Debug" }
  ]
}

問題を再現し、Unity ログを共有します。 Microsoft Mesh アプリケーション ログは、次の場所にあります。 %USERPROFILE%\AppData\LocalLow\Microsoft Corporation\Microsoft Mesh\player.log

サーバー ログの収集

A. ログ Stream

I. Azure Portal でのログ Stream

Mesh Cloud Scripting Service のログを表示するには、AppService リソースの [監視] セクションで、[ログ Stream] メニューをクリックして、次の図に示すようにコンテナーからのログを表示します。

ログ Streamログの選択

II. Azure CLI を使用したログ Stream

ローカル コンピューターに Azure CLI がインストールされている場合は、ターミナルで次のコマンドを実行して、ローカル コンピューターからこれらの同じログを末尾に記録することもできます。

az webapp log tail --name <APP_SERVICE_NAME> --resource-group <RESOURCE_GROUP_NAME>

III. ログを zip ファイルとしてダウンロードする

また、Advanced Tools (Kudu) に移動して、ホストされているアプリ サービスからログ ファイルをダウンロードすることもできます。 左側のウィンドウの [開発ツール] セクションで、[ 高度なツール ] を見つけて、[ 移動 ] ボタンをクリックします。

AppService Advanced Tools

SCM Web サイトが開き、次に示すように Docker ログを Zip ファイルとしてダウンロードできます。

Kudu

B. Azure Monitor

または、Azure Monitor を使用して、KQL (Kusto 照会言語) クエリを記述して、イベント、時間範囲などから特に関心のあるログを選択することもできます。 これは、デプロイ中に [アプリの監視を有効にする] ボックスをオンにした場合に自動的に設定されます。 そうでない場合は、「 Azure Monitor の手動セットアップ 」セクションを参照して、デプロイ用に Azure Monitor を構成します。

これを使用するには、ナビゲーション ウィンドウの [監視 ] セクションで[ログ] を選択 します

AppService 監視

クエリの [監視] ウィンドウで、目的のログを選択できます。 執筆時点では、"AppServiceConsoleLogs"、"AppServiceHTTPLogs"、"AppServiceAppLogs"、"AppServicePlatformLogs" があります。 Docker コンテナーからログを表示するには、"AppServiceAppLogs" や "AppServiceConsoleLogs" のログの方が便利です。

Azure 監視ウィンドウ

[ テーブル ] メニューの右側にあるテキスト ボックスに、次の KQL クエリを入力します。

AppServiceConsoleLogs
| extend newLog = iif(
ResultDescription has ": Orleans.LifecycleSubject"
or ResultDescription has ": Orleans.Runtime.Catalog"
or ResultDescription has ": Microsoft.Hosting.Lifetime"
or ResultDescription has ": Microsoft.Mesh.CloudScripting.CloudApplication"
or ResultDescription has ": Microsoft.Mesh.CloudScripting.Hosting.Launcher.CloudAppInstance"
or ResultDescription has ": Microsoft.Mesh.CloudScripting.Hosting.Core.NamedPipesCloudScriptingSessionGrain"
or ResultDescription has ": Microsoft.Mesh.CloudScripting.Cloud.Middleware.CloudScriptingBridge"
or ResultDescription has "UNOBSERVED EXCEPTION:"
or ResultDescription has ": Microsoft.SceneAppService.SceneAppHub"
or ResultDescription has ": Microsoft.Mesh.CloudScripting.Hosting.Core.NamedPipesCloudScriptingSessionGrain"
or ResultDescription has ": Microsoft.Mesh.CloudScripting.Hosting.Launcher.CloudAppInstanceFactory"
or ResultDescription has ": Microsoft.ClientChannel.Hosting.ProcessLifecycleLoggers"
or ResultDescription has ": Microsoft.Mesh.CloudScripting.Services.ApplicationWorkDispatcher"
or ResultDescription has ": Microsoft.Mesh.CloudScripting.Services.CloudScriptingHostedService"
or ResultDescription has ": Microsoft.Mesh.CloudScripting.Hosting.Launcher.CloudScriptingPreparationService"
or ResultDescription has ": Microsoft.Mesh.CloudScripting.Cloud.Middleware.CloudAppProcessFactory"
or ResultDescription has ": Microsoft.ClientChannel.Resources.ClientLinkGrain"
, 1, 0)
| sort by TimeGenerated asc
| extend logId = row_cumsum(newLog) 
| summarize ResultDescription=make_list(ResultDescription), TimeGenerated=min(TimeGenerated) by logId
| extend ResultDescription = strcat_array(ResultDescription, "")
| sort by TimeGenerated desc
| project TimeGenerated, ResultDescription
| where not (ResultDescription has "Broadcasting data of size")

Azure 監視入力フィールド

データを csv にエクスポートします。

Azure Monitoring Export

Azure Monitor の手動セットアップ (省略可能)

デプロイ中に [アプリの監視を有効にする] をオンにした場合はスキップします。

このセットアップには Log Analytics ワークスペースが必要です。 既存のワークスペースがない場合は、公式 ガイドに従ってください。

  1. Azure Portal を開き、Mesh Cloud Scripting Service が実行されている AppService リソースに移動します。

  2. [監視] タブをクリックし、ページの下部までスクロールします。 [Azure Monitor の構成] ボタンをクリックします

    [AppService 監視] タブ [

  3. [+ 診断設定の追加] リンクをクリックして、選択したワークスペースに送信されるログ カテゴリを設定します。

    診断設定の

  4. プロンプトで [診断設定名] フィールドに入力し、目的のログ カテゴリ (例: App Service コンソール ログ、App Service アプリケーション ログ) を選択し、[Log Analytics ワークスペースに送信] ボックスをチェックし、目的の既存の Log Analytics ワークスペースを選択します。

    診断設定の作成 診断設定

  5. [App Service] ページから Application Insights を有効にします。 これにより、ログが Log Analytics ワークスペースに確実に反映されます。 App Insights を

  6. フォームに入力し、診断設定が作成されたのと同じワークスペースを指すようにします。

    App Insights フォーム

  7. AppService を再起動し、数分待ちます。 これで、「Azure Monitor」セクションの説明に従って、 Azure Monitor でログに対してクエリを実行できるようになります。

Azure でのクラウド スクリプトデプロイの調査

  1. Mesh Uploader の [ 環境の作成 ] タブで、選択した [サブスクリプション ID ] と [ リソース グループ ] の値をメモします。

    _______________

  2. Azure Portal で、選択したサブスクリプションで、リソース グループに移動します。 検索バーからリソース グループ名を検索するか、"リソース グループ" サービスに移動して、そこでリソース グループを見つけることができます。 正しいテナントとサブスクリプションに入っていることを確認します。

  3. リソース グループの [設定] ウィンドウで、[デプロイ] に移動します。 これには、リソース グループに対して行われたすべてのデプロイの一覧が含まれている必要があります。

  4. 関心のあるクラウド スクリプトのデプロイは次のとおりです。

  • アプリのプロビジョニング: これは最初のデプロイ実行であり、必要なすべてのクラウド スクリプト リソースをプロビジョニングするために使用されます。 [デプロイ] ウィンドウで 、provisionApp をフィルターとして使用して識別できます。

  • アプリの設定: これにより、Web アプリの設定が作成され、更新されます。 これは、[デプロイ] ウィンドウのフィルターとして svc-appsettings を使用して識別できます。

  • ステージング アプリの設定: これにより、Web アプリのステージング スロットが作成され、更新されます。 これは、[デプロイ] ウィンドウのフィルターとして svc-staging-appsettings を使用して識別できます。

  • アプリのデプロイ: これは、後続のインフラストラクチャの変更に使用されます。 最新バージョンの cloudhost docker イメージを Web アプリのステージング スロットにデプロイします。 これは、[デプロイ] ウィンドウのフィルターとして deployApp を使用して識別できます。

  • アプリ スロットのスワップ: これにより、Web アプリとステージング スロット Web アプリに存在する cloudhost Docker イメージのバージョンがスワップされます。 これは、[デプロイ] ウィンドウで フィルターとして deployApp-swap を使用して識別できます。

    _______________

デプロイに関連する追加の詳細を表示するには、デプロイ名をクリックします。 各リソースの種類の [操作の詳細] には、デプロイに関連するエラー メッセージが含まれています。

_______________

失敗の原因など、成功しなかったデプロイの例を次に示します。

_______________

_______________

後続の操作可能な手順は、特定のエラー メッセージによって異なります。

問題を報告する方法

  1. 使用可能なすべてのログを収集します。
  2. フィードバック ガイダンスに従ってください。