Cloud Scripting のトラブルシューティング
環境のアップロードに失敗しました
Mesh Uploader のプロセス中に Mesh Cloud Scripting ステージが失敗し、Check the logs for more information」というエラーが表示された場合は、Unity コンソールに情報ログが表示されていることを確認してください。 現在、一部のエラーは情報ログとして表示されています。 これは今後のリリースで改善される予定です。
Mesh Cloud Scripting Package のインストールに失敗しました
- パッケージのインストールまたは .NET ツールのインストール (
The tool package could not be restored
またはVerify your unity package integrity
) に関連するエラーが発生した場合は、グローバル NuGet 構成 (コンピューターで構成されているC:\Users\<UserName>\AppData\Roaming\NuGet\NuGet.config
または既定の NuGet 構成ディレクトリの下) に無効なパッケージ ソースがないことを確認します。 - Play Mode を開始するときに
package is already installed
エラーが発生した場合は、Play Mode を終了してもう一度開始すると、エラーが軽減されます。 - ディレクトリ
Assets\.MeshCloudScripting\.Packages
に対するアクセス権を確認します。
Unity Editor の [Play] ボタンを押しても、何も起こりません
- Unity ログでエラーがないか確認します。 特に、Mesh Cloud Scripting コードにコンパイル エラーがある場合は、エラー ログに "Cloud Scripting build failed" と表示されます。 この場合は、Mesh Cloud Scripting の csproj ファイルを開き、エラーを修正します。 Visual Studio からビルドすると、ビルド出力のエラーがさらに見やすく表示されます。
- 他のエラーがある場合は、このページで特定のエラーに関するその他のトラブルシューティング情報をご確認ください。
- エラーがない場合は、Mesh Cloud Scripting コードにランタイム エラーが発生する可能性があります。 デバッガーを使用してアプリケーションにアタッチし、出力でエラーがないか調べます。
- 解決できなかった場合は、バグを報告します。
Microsoft Mesh アプリケーションにイベントを参加させると、Mesh Cloud Scripting が機能しません
- Unity のローカルでプレビューするときに、シーンが期待どおりに再生されることを確認します。
- デプロイされた環境が、Mesh Cloud Scripting サービスで使用される scene.map と一致していることを確認します。
- Unity プロジェクトで、Mesh Cloud Scripting コンポーネントに移動し、
Serialize Scene
を押してシーン グラフのシリアル化を強制します。 - Mesh Uploader を使用して環境を再アップロードします。
- Unity プロジェクトで、Mesh Cloud Scripting コンポーネントに移動し、
- デプロイされたサービスに対応するローカルの Unity バージョンをテストします。
- 動作していない場合は、Unity のログでエラーがないか確認します。
- 解決できなかった場合は、バグを報告します。
- Mesh Cloud Scripting ログを検査し、バグ レポートに可能な限り関連情報を記載します。
クリックが受信されない
- Mesh Cloud Scripting Service が頻繁にメッセージを送信するため、システムが処理できていない可能性があります。 この場合、クリックは受信されていたとしても、メッセージのバックログが多すぎて、クライアントに結果が反映されるまで時間が長くかかります。 頻度の高い更新コードを一時的に無効にして、問題が解決するかどうかを確認してください。 その場合は、Mesh Cloud Scripting からプロパティを更新するのではなく、Unity Animators の使用を検討してください。
- 解決できなかった場合は、バグを報告します。
Play キーを押すと Unity がフリーズする
Unity の再生中にフォーカスを Unity から別のアプリに切り替えると、Mesh Cloud Scripting Service は引き続き実行され、メッセージ キューにメッセージが送信されます。 Unity にフォーカスを戻すと、キューが完全にドレインされるまで一時停止します。 Mesh Cloud Scripting Service が頻繁に状態を変更している場合や、Unity から長時間フォーカスを切り替えた場合、Unity がしばらくの間フリーズする可能性があります。
ログを収集する方法
Unity ログの収集
問題を報告する前に、Verbosity を Diagnostic に設定します。
問題を再現し、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\Microsoft Mesh\Player.log
にあります。
サーバー ログの収集
A. ログ ストリーム
I. Azure portal ログ ストリーム
Mesh Cloud Scripting Service のログを表示するには、AppService リソースの「Monitoring」セクションで、[Log Stream] メニューをクリックして、次の図に示すようにコンテナーからのログを表示します。
II. Azure CLI を使用したログ ストリーム
ローカル コンピューターに Azure CLI がインストールされている場合は、ターミナルで次のコマンドを実行して、ローカル コンピューターからこれらの同じログを末尾に記録することもできます。
az webapp log tail --name <APP_SERVICE_NAME> --resource-group <RESOURCE_GROUP_NAME>
III. ログを ZIP ファイルとしてダウンロードします。
Advanced Tools (Kudu) に移動して、ホストされているアプリ サービスからログ ファイルをダウンロードすることもできます。 左側のウィンドウの「Development Tools」セクションで、[Advanced Tools] を見つけて、[Go] ボタンをクリックします。
SCM Web サイトが開き、次に示すように Docker ログを Zip ファイルとしてダウンロードできます。
B. Azure Monitor
または、Azure Monitor を使用して、KQL (Kusto 照会言語) クエリを記述して、イベント、時間範囲などから特に関心のあるログを選択することもできます。 これは、デプロイ中に [Enable App Monitoring] チェック ボックスをオンにした場合に自動的に設定されます。 そうでない場合は、「Azure Monitor の手動セットアップ」セクションを参照して、デプロイ用に Azure Monitor を構成します。
これを使用するには、ナビゲーション ウィンドウの「Monitoring」セクションで [Logs] を選択します。
[Query Monitoring] ウィンドウで、関心のあるログを選択できます。 このドキュメントの執筆時点では、"AppServiceConsoleLogs"、"AppServiceHTTPLogs"、"AppServiceAppLogs"、"AppServicePlatformLogs" があります。 Docker コンテナーからログを表示するには、"AppServiceAppLogs" または "AppServiceConsoleLogs" のログの方がより役立つ場合があります。
Tables メニューの右側にあるテキスト ボックスに、次の 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")
CSV 形式でデータをエクスポートする。
Azure Monitor の手動セットアップ (省略可能)
デプロイ時に [Enable App Monitoring] をオンにした場合はスキップします。
このセットアップには Log Analytics ワークスペースが必要です。 既存のワークスペースがない場合は、公式ガイドに従ってください。
Azure Portal を開き、Mesh Cloud Scripting Service が実行されている AppService リソースに移動します。
ページの下部までスクロールし、[Monitoring] をクリックします。 [Configure Azure Monitor] ボタンをクリックします
[+ Add diagnostic setting] リンクをクリックして、選択したワークスペースに送信されるログ カテゴリを設定します。
プロンプトで "Diagnostic setting name" フィールドに入力し、目的のログ カテゴリ (例: App Service Console Logs、App Service Application Logs) を選択し、[Send to Log Analytics workspace] チェック ボックスをオンにして、目的の既存の Log Analytics ワークスペースを選択します。
App Services ポータルから Application Insights を有効にします。 これにより、ログが Log Analytics ワークスペースに確実に反映されます。
フォームに入力し、診断設定が作成されたのと同じワークスペースを指すようにします。
AppService を再起動し、数分待ちます。 「Azure Monitor」セクションの説明に従って、Azure Monitor でログのクエリを実行できるようになりました。
Azure での Cloud Scripting デプロイの調査
Mesh Uploader の [Create Environment] タブで、選択した Subscription ID と Resource Group の値を書き留めます。
Azure portal で選択したサブスクリプション内で、リソース グループに移動します。 検索バーからリソース グループ名を検索するか、"Resource Groups" サービスに移動して、そこでリソース グループを見つけることができます。 Tenant で正しいサブスクリプションを使用していることを確認します。
リソース グループ内の [Settings] ウィンドウで [Deployments] に移動します。 これには、リソース グループに対して行われたすべてのデプロイの一覧が含まれている必要があります。
関心のある Cloud Scripting のデプロイは次のとおりです。
App Provisioning: これは最初のデプロイ実行であり、必要なすべてのクラウド スクリプト リソースをプロビジョニングするために使用されます。 これは、provisionApp を [Deployments] ウィンドウのフィルターとして使用して識別できます。
アプリの設定: Web アプリの設定が作成され、更新されます。 これは、[Deployments ] ウィンドウでフィルターとして svc-appsettings を使用して識別できます。
ステージング アプリの設定: Web アプリのステージング スロットが作成され、更新されます。 これは、svc-staging-appsettings を [Deployments] ウィンドウのフィルターとして使用して識別できます。
アプリの展開: これは、後続のインフラストラクチャの変更に使用されます。 最新バージョンの Cloudhost Docker イメージが Web アプリのステージング スロットにデプロイされます。 これは、[Deployments] ウィンドウでフィルターとして deployApp を使用して識別できます。
アプリ スロットのスワップ: Web アプリとステージン スロット Web アプリに存在する Cloudhost Docker イメージのバージョンをスワップします。 これは、[Deployments] ウィンドウでフィルターとして deployApp-swap を使用して識別できます。
デプロイに関連する追加の詳細を表示するには、デプロイ名をクリックします。 各リソースの種類の Operation Details には、デプロイに関連するエラー メッセージが含まれます。
失敗の原因を含め、成功しなかったデプロイの例を次に示します。
後続の操作可能な手順は、特定のエラー メッセージによって異なります。