Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Importante
Uma nova versão do serviço dos Gêmeos Digitais do Azure foi lançada. À luz das funcionalidades expandidas do novo serviço, o serviço original dos Gêmeos Digitais do Azure (descrito neste conjunto de documentação) foi desativado.
Para acessar a documentação do novo serviço, consulte a Documentação Ativa do Azure Digital Twins .
Este artigo resume como diagnosticar e depurar funções definidas pelo usuário nos Gêmeos Digitais do Azure. Em seguida, ele identifica alguns dos cenários mais comuns encontrados ao depurá-los.
Dica
Leia Como configurar o monitoramento e o registro em log para saber mais sobre como configurar ferramentas de depuração nos Gêmeos Digitais do Azure usando Logs de Atividades, Logs de Diagnóstico e Azure Monitor.
Problemas de depuração
Saber como diagnosticar problemas nos Gêmeos Digitais do Azure permite que você analise efetivamente os problemas, identifique as causas dos problemas e forneça soluções apropriadas para eles.
Uma variedade de ferramentas de log, análise e diagnóstico são fornecidas para esse fim.
Habilitar o registro em log para sua instância
Os Gêmeos Digitais do Azure dão suporte a log, monitoramento e análise robustos. Os desenvolvedores de soluções podem usar logs do Azure Monitor, logs de diagnóstico, logs de atividades e outros serviços para dar suporte às necessidades complexas de monitoramento de um aplicativo IoT. As opções de registro em log podem ser combinadas para consultar ou exibir registros em vários serviços e fornecer registro em log detalhado para muitos serviços.
- Para a configuração de log específica dos Gêmeos Digitais do Azure, leia Como configurar o monitoramento e o registro em log.
- Consulte a visão geral do Azure Monitor para saber mais sobre configurações de log avançadas habilitadas por meio do Azure Monitor.
- Examine o artigo Coletar e consumir dados de log de seus recursos do Azure para definir as configurações de log de diagnóstico nos Gêmeos Digitais do Azure por meio do portal do Azure, da CLI do Azure ou do PowerShell.
Depois de configurado, você poderá selecionar todas as categorias de log, métricas e usar workspaces avançados do Log Analytics do Azure Monitor para dar suporte aos esforços de depuração.
Telemetria do sensor de rastreamento
Para rastrear a telemetria do sensor, verifique se as configurações de diagnóstico estão habilitadas para sua instância dos Gêmeos Digitais do Azure. Em seguida, verifique se todas as categorias de log desejadas estão selecionadas. Por fim, confirme se os logs desejados estão sendo enviados para os logs do Azure Monitor.
Para corresponder uma mensagem de telemetria do sensor aos seus respectivos logs, você pode especificar uma ID de correlação nos dados do evento enviados. Para fazer isso, defina a x-ms-client-request-id
propriedade como um GUID.
Depois de enviar a telemetria, abra o log analytics do Azure Monitor para consultar logs usando a ID de Correlação definida:
AzureDiagnostics
| where CorrelationId == 'YOUR_CORRELATION_IDENTIFIER'
Valor da consulta | Substituir por |
---|---|
YOUR_CORRELATION_IDENTIFIER | A ID de Correlação especificada nos dados do evento |
Para ler todos os logs de telemetria recentes, faça uma consulta:
AzureDiagnostics
| order by CorrelationId desc
Se você habilitar o registro em log para sua função definida pelo usuário, esses logs aparecerão na instância do log analytics com a categoria UserDefinedFunction
. Para recuperá-los, insira a seguinte condição de consulta no log analytics:
AzureDiagnostics
| where Category == 'UserDefinedFunction'
Para obter mais informações sobre operações de consulta avançadas, leia Introdução às consultas.
Identificar problemas comuns
Diagnosticar e identificar problemas comuns é importante ao solucionar problemas de sua solução. Vários problemas que normalmente são encontrados ao desenvolver funções definidas pelo usuário são resumidos nas subseções a seguir.
Nos exemplos abaixo, YOUR_MANAGEMENT_API_URL
refere-se ao URI das APIs dos Gêmeos Digitais:
https://YOUR_INSTANCE_NAME.YOUR_LOCATION.azuresmartspaces.net/management/api/v1.0
Nome | Substituir por |
---|---|
NOME_DA_SUA_INSTÂNCIA | O nome da Instância do Azure Digital Twins |
SUA_LOCALIZAÇÃO | A região em que sua instância está hospedada |
Verificar se uma atribuição de função foi criada
Sem uma atribuição de função criada dentro da API de Gerenciamento, a função definida pelo usuário não tem acesso para executar ações como enviar notificações, recuperar metadados e definir valores computados dentro da topologia.
Verifique se existe uma atribuição de função para sua função definida pelo usuário por meio da API de Gerenciamento:
GET YOUR_MANAGEMENT_API_URL/roleassignments?path=/&traverse=Down&objectId=YOUR_USER_DEFINED_FUNCTION_ID
Valor do parâmetro | Substituir por |
---|---|
SEU_ID_FUNÇÃO_DEFINIDA_PELO_USUÁRIO | A ID da função definida pelo usuário para recuperar atribuições de função para |
Saiba como criar uma atribuição de função para sua função definida pelo usuário, se não houver atribuições de função.
Verificar se o validador funciona para a telemetria de um sensor
Com a chamada a seguir na API de Gerenciamento das instâncias dos Gêmeos Digitais do Azure, você poderá determinar se um determinado correspondente se aplica ao sensor especificado.
GET YOUR_MANAGEMENT_API_URL/matchers/YOUR_MATCHER_IDENTIFIER/evaluate/YOUR_SENSOR_IDENTIFIER?enableLogging=true
Parâmetro | Substituir por |
---|---|
YOUR_MATCHER_IDENTIFIER | A ID do correspondente que você deseja avaliar |
YOUR_SENSOR_IDENTIFIER | A ID do sensor que você deseja avaliar |
Resposta:
{
"success": true,
"logs": [
"$.dataType: \"Motion\" Equals \"Motion\" => True"
]
}
Verificar o que um sensor dispara
Ao realizar a chamada a seguir nas APIs de Gerenciamento dos Gêmeos Digitais do Azure, você poderá identificar os identificadores das suas funções definidas pelo usuário que são ativadas pela telemetria recebida do sensor especificado.
GET YOUR_MANAGEMENT_API_URL/sensors/YOUR_SENSOR_IDENTIFIER/matchers?includes=UserDefinedFunctions
Parâmetro | Substituir por |
---|---|
YOUR_SENSOR_IDENTIFIER | A ID do sensor para enviar telemetria |
Resposta:
[
{
"id": "48a64768-797e-4832-86dd-de625f5f3fd9",
"name": "MotionMatcher",
"spaceId": "2117b3e1-b6ce-42c1-9b97-0158bef59eb7",
"conditions": [
{
"id": "024a067a-414f-415b-8424-7df61392541e",
"target": "Sensor",
"path": "$.dataType",
"value": "\"Motion\"",
"comparison": "Equals"
}
],
"userDefinedFunctions": [
{
"id": "373d03c5-d567-4e24-a7dc-f993460120fc",
"spaceId": "2117b3e1-b6ce-42c1-9b97-0158bef59eb7",
"name": "Motion User-Defined Function",
"disabled": false
}
]
}
]
Problema com o recebimento de notificações
Quando você não estiver recebendo notificações da função definida pelo usuário disparada, confirme se o parâmetro de tipo de objeto de topologia corresponde ao tipo de identificador que está sendo usado.
Incorreto Exemplo:
var customNotification = {
Message: 'Custom notification that will not work'
};
sendNotification(telemetry.SensorId, "Space", JSON.stringify(customNotification));
Esse cenário surge porque o identificador usado se refere a um sensor enquanto o tipo de objeto de topologia especificado é Space
.
Correto Exemplo:
var customNotification = {
Message: 'Custom notification that will work'
};
sendNotification(telemetry.SensorId, "Sensor", JSON.stringify(customNotification));
A maneira mais fácil de não enfrentar esse problema é usar o método Notify
no objeto de metadados.
Exemplo:
function process(telemetry, executionContext) {
var sensorMetadata = getSensorMetadata(telemetry.SensorId);
var customNotification = {
Message: 'Custom notification'
};
// Short-hand for above methods where object type is known from metadata.
sensorMetadata.Notify(JSON.stringify(customNotification));
}
Exceções de diagnóstico comuns
Se você habilitar as configurações de diagnóstico, poderá encontrar essas exceções comuns:
Limitação: se a função definida pelo usuário exceder os limites de taxa de execução descritos no artigo Limites de Serviço , ela será limitada. Nenhuma operação adicional é executada com êxito até que os limites de controle expirem.
Dados Não Encontrados: se a função definida pelo usuário tentar acessar metadados que não existem, a operação falhará.
Não autorizado: se a função definida pelo usuário não tiver um conjunto de atribuição de função ou não tiver permissão suficiente para acessar determinados metadados da topologia, a operação falhará.
Próximas etapas
Saiba como habilitar o monitoramento e os logs nos Gêmeos Digitais do Azure.
Leia o artigo Visão geral do log de atividades do Azure para obter mais opções de log do Azure.