Solução de problemas de scripts na nuvem
Falha no carregamento do ambiente
Se um estágio do Mesh Cloud Scripting durante o processo do Mesh Uploader falhar e o erro mostrado for "Verifique os logs para obter mais informações", verifique se os logs de informações estão sendo mostrados no console Unity. Atualmente, alguns erros são mostrados como logs de informações. Isso será melhorado em uma versão futura.
Falha na instalação do pacote Mesh Cloud Scripting
- Se você encontrar erros relacionados à instalação do pacote ou à instalação da ferramenta .NET (
The tool package could not be restored
ouVerify your unity package integrity
), verifique se você não tem fontes de pacotes não válidas em sua configuração global do NuGet (sobC:\Users\<UserName>\AppData\Roaming\NuGet\NuGet.config
ou diretório de configuração padrão do NuGet configurado na máquina). - Se você encontrar o erro ao iniciar o
package is already installed
Modo de Reprodução, sair do Modo de Reprodução e iniciá-lo novamente deve atenuar isso. - Verifique os direitos de acesso no diretório
Assets\.MeshCloudScripting\.Packages
.
Depois de pressionar o botão Unity Editor Play, nada acontece
- Verifique se há erros nos logs do Unity. Em particular, se o código do Mesh Cloud Scripting tiver um erro de compilação, você verá "Cloud Scripting build failed" no seu log de erros. Nesse caso, abra o arquivo csproj para seu Mesh Cloud Scripting e corrija os erros. Se você compilar a partir do Visual Studio, ele mostrará os erros de forma mais conveniente na saída de compilação.
- Se houver outros erros, revise esta página para obter informações adicionais de solução de problemas sobre erros específicos.
- Se não houver erros, pode haver erros de tempo de execução no código do Mesh Cloud Scripting. Anexe ao seu aplicativo com o depurador e inspecione a saída em busca de erros.
- Se nada ajudar, reporte um bug.
Ao ingressar em um evento no aplicativo Microsoft Mesh, o Mesh Cloud Scripting não funciona
- Certifique-se de que a cena seja reproduzida conforme o esperado ao visualizá-la localmente no Unity.
- Verifique se o ambiente implantado corresponde ao scene.map usado pelo serviço Mesh Cloud Scripting.
- No projeto Unity, navegue até o componente Mesh Cloud Scripting e pressione
Serialize Scene
para forçar a serialização do gráfico de cena. - Recarregue seu ambiente com o Mesh Uploader.
- No projeto Unity, navegue até o componente Mesh Cloud Scripting e pressione
- Teste sua versão local do Unity em relação ao serviço implantado.
- Verifique os logs no Unity para quaisquer erros se não estiver funcionando.
- Se nada ajudar, reporte um bug.
- Inspecione os logs do Mesh Cloud Scripting e inclua informações relevantes sempre que possível em seu relatório de bug.
Os cliques não são recebidos
- É possível que seu Mesh Cloud Scripting Service esteja enviando mensagens com uma frequência muito alta para o sistema manipular. Nesse caso, seu clique pode realmente ser recebido, mas, devido a uma grande lista de pendências de mensagens, leva muito tempo para que o resultado seja propagado de volta para o cliente. Tente desativar temporariamente o código de atualização de alta frequência para ver se isso corrige o problema. Se isso acontecer, considere mudar para o Unity Animators em vez de atualizar as propriedades do Mesh Cloud Scripting.
- Se nada ajudar, reporte um bug.
Unity congela depois de pressionar Play
Se você mudar o foco do Unity para outro aplicativo enquanto o Unity estiver sendo reproduzido, o Mesh Cloud Scripting Service continuará a ser executado, enviando mensagens para a fila de mensagens. Quando você muda o foco de volta para o Unity, ele pausa até drenar completamente a fila. Se o Mesh Cloud Scripting Service estiver fazendo muitas alterações de estado frequentes e/ou você tiver mudado o foco do Unity por um longo tempo, o Unity poderá congelar por algum tempo enquanto isso acontece.
Como recolher registos
Coletando logs Unity
Antes de relatar um problema, defina Verbosity como Diagnóstico.
Reproduza o problema e, em seguida, envie os logs do Unity. Você pode encontrar o arquivo de log usando o menu Unity, que é armazenado por padrão em %LOCALAPPDATA%\Unity\Editor\Editor.log
.
Coletando logs de cliente do aplicativo Microsoft Mesh
Configure os logs do cliente de PC criando um arquivo na área de trabalho chamado "startup_settings.json" com o seguinte conteúdo:
{
"use_startup_settings": true,
"log_groups": [
{ "name": "CloudScriptingClientSDK", "level": "Debug" },
{ "name": "CloudScriptingUnityRuntime", "level": "Debug" }
]
}
Reproduza o problema e compartilhe os logs do Unity. Os logs de aplicativos do Microsoft Mesh podem ser encontrados em %USERPROFILE%\AppData\LocalLow\Microsoft\Microsoft Mesh\Player.log
Coletando logs do servidor
A. Fluxo de Registo
I. Fluxo de log no Portal do Azure
Para ver os logs do Mesh Cloud Scripting Service, na seção Monitoring do recurso AppService , clique no menu Log Stream para ver os logs do contêiner, conforme mostrado na imagem abaixo.
II. Fluxo de log por meio da CLI do Azure
Se você tiver a CLI do Azure instalada em sua máquina local, também poderá extrair esses mesmos logs de sua máquina local executando o seguinte comando em seu terminal:
az webapp log tail --name <APP_SERVICE_NAME> --resource-group <RESOURCE_GROUP_NAME>
III. Baixe os logs como um arquivo zip
Você também pode baixar arquivos de log do serviço de aplicativo hospedado acessando as Ferramentas Avançadas (Kudu). Na seção "Ferramentas de Desenvolvimento" do painel esquerdo, localize Ferramentas Avançadas e clique no botão Ir.
O site do SCM é aberto e você pode baixar os logs do Docker como um arquivo Zip, conforme mostrado abaixo.
B. Azure Monitor
Como alternativa, usando o Azure Monitor, você pode escrever consultas KQL (Kusto Query Language) para selecionar logs nos quais você está particularmente interessado em eventos, intervalos de tempo e muito mais. Isso seria configurado automaticamente para você se você marcasse a caixa "Ativar monitoramento de aplicativos" durante a implantação. Caso contrário, consulte a seção Configuração manual do Azure Monitor para configurar o Azure Monitor para sua implantação.
Para usar isso, na seção Monitoramento do painel de navegação, selecione Logs.
No painel Monitoramento de consultas, você pode selecionar os logs em que está interessado. No momento em que este artigo foi escrito, temos "AppServiceConsoleLogs", "AppServiceHTTPLogs", "AppServiceAppLogs" e "AppServicePlatformLogs". Para visualizar os logs do contêiner do Docker, você pode achar os logs em "AppServiceAppLogs" e/ou "AppServiceConsoleLogs" mais úteis.
Na caixa de texto fornecida no lado direito do menu Tabelas , digite a seguinte consulta 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")
Exporte dados para csv.
Configuração manual para o Azure Monitor (opcional)
Ignore se você marcou "Ativar monitoramento de aplicativos" durante a implantação.
Um espaço de trabalho do Log Analytics é necessário para essa configuração. Se você não tiver um espaço de trabalho existente, siga o guia oficial.
Abra o Portal do Azure e navegue até o recurso AppService no qual seu Mesh Cloud Scripting Service está sendo executado.
Clique na guia "Monitoramento" e role até a parte inferior da página. Clique no botão "Configurar o Azure Monitor"
Clique no link "+ Adicionar configuração de diagnóstico" para definir as categorias de log que seriam enviadas para o espaço de trabalho escolhido.
No prompt, preencha o campo "Nome da configuração de diagnóstico", selecione as categorias de log nas quais você está interessado (exemplos: Logs do Console do Serviço de Aplicativo, Logs do Aplicativo do Serviço de Aplicativo), marque a caixa para "Enviar para o espaço de trabalho do Log Analytics" e selecione seu espaço de trabalho existente do Log Analytics preferido.
Habilite o Application Insights na página Serviço de Aplicativo. Isso garantiria que os logs fossem propagados para o espaço de trabalho do Log Analytics.
Preencha o formulário e certifique-se de apontá-lo para o mesmo espaço de trabalho no qual sua Configuração de Diagnóstico foi criada.
Reinicie seu AppService e aguarde alguns minutos. Agora você deve ser capaz de consultar logs no Azure Monitor conforme descrito na seção Azure Monitor.
Investigando implantações de scripts na nuvem no Azure
Na guia Criar ambiente do Carregador de Malha, anote os valores de ID de Assinatura e Grupo de Recursos escolhidos.
No Portal do Azure e na Assinatura selecionada, navegue até o grupo de recursos. Você pode pesquisar o nome do grupo de recursos na barra de pesquisa ou navegar até o serviço "Grupos de recursos" e encontrar seu grupo de recursos lá. Certifique-se de que está no Inquilino e na Subscrição corretos.
No painel "Configurações" do grupo de recursos, navegue até "Implantações". Isso deve conter uma lista de todas as implantações que foram feitas para o grupo de recursos.
As implantações de Cloud Scripting que são do seu interesse são:
Provisionamento de aplicativos: esta é a primeira execução de implantação e é usada para provisionar todos os recursos de script de nuvem necessários. Ele pode ser identificado usando provisionApp como um filtro na janela Implantações.
Configurações do aplicativo: isso cria e atualiza as configurações do aplicativo Web. Ele pode ser identificado usando svc-appsettings como um filtro na janela Implantações.
Configurações do aplicativo de preparo: isso cria e atualiza o slot de preparo do aplicativo Web. Ele pode ser identificado usando svc-staging-appsettings como um filtro na janela Implantações.
Implantação de aplicativos: é usado para alterações subsequentes na infraestrutura. Ele implanta a versão mais recente da imagem do docker cloudhost no slot de preparo do aplicativo Web. Isso pode ser identificado usando deployApp como um filtro na janela Implantações.
Troca de slots de aplicativo: troca as versões de imagem do docker cloudhost presentes no aplicativo Web e o aplicativo Web de slot de preparação. Isso pode ser identificado usando deployApp-swap como um filtro na janela Implantações.
Para ver detalhes adicionais relacionados à implantação, clique no nome da implantação. Os Detalhes da Operação para cada tipo de recurso incluem a mensagem de erro relacionada à implantação.
Aqui está um exemplo de uma implantação que não foi bem-sucedida, incluindo a causa da falha:
As etapas acionáveis subsequentes dependem das mensagens de erro específicas.
Como reportar problemas
- Colete todos os logs disponíveis.
- Siga as orientações de feedback .