Ladění uživatelem definovaných funkcí ve službě Azure Digital Twins
Důležité
Byla vydána nová verze služby Azure Digital Twins. Vzhledem k rozšířeným funkcím nové služby byla původní služba Azure Digital Twins (popsaná v této sadě dokumentace) vyřazena.
Pokud chcete zobrazit dokumentaci k nové službě, navštivte aktivní dokumentaci ke službě Azure Digital Twins.
Tento článek shrnuje, jak diagnostikovat a ladit uživatelem definované funkce ve službě Azure Digital Twins. Pak identifikuje některé z nejběžnějších scénářů nalezených při ladění.
Tip
Přečtěte si , jak nakonfigurovat monitorování a protokolování a získat další informace o nastavení nástrojů ladění ve službě Azure Digital Twins pomocí protokolů aktivit, diagnostických protokolů a služby Azure Monitor.
Problémy s laděním
Znalost diagnostiky problémů ve službě Azure Digital Twins umožňuje efektivně analyzovat problémy, identifikovat příčiny problémů a poskytovat jim vhodná řešení.
K tomu je k dispozici celá řada nástrojů pro protokolování, analýzu a diagnostiku.
Povolení protokolování pro vaši instanci
Azure Digital Twins podporuje robustní protokolování, monitorování a analýzu. Vývojáři řešení můžou používat protokoly Azure Monitoru, diagnostické protokoly, protokoly aktivit a další služby k podpoře složitých potřeb monitorování aplikace IoT. Možnosti protokolování se dají kombinovat a dotazovat nebo zobrazovat záznamy napříč několika službami a poskytovat podrobné pokrytí protokolování pro mnoho služeb.
- Informace o konfiguraci protokolování specifické pro Službu Azure Digital Twins najdete v tématu Konfigurace monitorování a protokolování.
- Informace o výkonných nastaveních protokolů povolených prostřednictvím služby Azure Monitor najdete v přehledu služby Azure Monitor.
- Projděte si článek Shromažďování a využívání dat protokolů z prostředků Azure pro konfiguraci nastavení diagnostických protokolů ve službě Azure Digital Twins prostřednictvím Azure Portal, Azure CLI nebo PowerShellu.
Po nakonfigurování budete moct vybrat všechny kategorie protokolů, metriky a používat výkonné pracovní prostory služby Azure Monitor log Analytics k podpoře ladění.
Trasování telemetrie snímačů
Pokud chcete sledovat telemetrická data senzorů, ověřte, že jsou pro vaši instanci Služby Azure Digital Twins povolená nastavení diagnostiky. Pak se ujistěte, že jsou vybrané všechny požadované kategorie protokolů. Nakonec ověřte, že se požadované protokoly odesílají do protokolů služby Azure Monitor.
Pokud chcete shodovat zprávu telemetrie senzoru s příslušnými protokoly, můžete u odesílaných dat události zadat ID korelace. Uděláte to tak, že x-ms-client-request-id
vlastnost nastavíte na identifikátor GUID.
Po odeslání telemetrie otevřete Log Analytics služby Azure Monitor pro dotazování na protokoly pomocí nastaveného ID korelace:
AzureDiagnostics
| where CorrelationId == 'YOUR_CORRELATION_IDENTIFIER'
Hodnota dotazu | Nahradit hodnotou |
---|---|
YOUR_CORRELATION_IDENTIFIER | ID korelace zadané v datech události |
Pokud chcete přečíst všechny nedávné dotazy na protokoly telemetrie:
AzureDiagnostics
| order by CorrelationId desc
Pokud povolíte protokolování pro uživatelem definovanou funkci, zobrazí se tyto protokoly v instanci log Analytics s kategorií UserDefinedFunction
. Pokud je chcete načíst, zadejte v Log Analytics následující podmínku dotazu:
AzureDiagnostics
| where Category == 'UserDefinedFunction'
Další informace o výkonných operacích dotazů najdete v tématu Začínáme s dotazy.
Identifikace běžných problémů
Při řešení potíží jsou důležité diagnostiky i identifikace běžných problémů. Několik problémů, které se běžně vyskytují při vývoji uživatelem definovaných funkcí, jsou shrnuty v následujících pododdílech.
V následujících YOUR_MANAGEMENT_API_URL
příkladech se odkazuje na identifikátor URI rozhraní API služby Digital Twins:
https://YOUR_INSTANCE_NAME.YOUR_LOCATION.azuresmartspaces.net/management/api/v1.0
Název | Nahradit hodnotou |
---|---|
YOUR_INSTANCE_NAME | Název instance služby Azure Digital Twins |
YOUR_LOCATION | Oblast, ve které je vaše instance hostovaná |
Kontrola vytvoření přiřazení role
Bez přiřazení role vytvořené v rozhraní API pro správu nemá uživatelem definovaná funkce přístup k provádění akcí, jako je odesílání oznámení, načítání metadat a nastavení počítaných hodnot v topologii.
Pomocí rozhraní API pro správu zkontrolujte, jestli pro funkci definovanou uživatelem existuje přiřazení role:
GET YOUR_MANAGEMENT_API_URL/roleassignments?path=/&traverse=Down&objectId=YOUR_USER_DEFINED_FUNCTION_ID
Hodnota parametru | Nahradit hodnotou |
---|---|
YOUR_USER_DEFINED_FUNCTION_ID | ID uživatelem definované funkce pro načtení přiřazení rolí pro |
Zjistěte , jak vytvořit přiřazení role pro uživatelem definovanou funkci, pokud neexistují žádná přiřazení rolí.
Zkontrolujte, jestli shodovací modul funguje pro telemetrii senzoru.
S následujícím voláním rozhraní API pro správu instancí Azure Digital Twins můžete určit, jestli se daná shoda vztahuje na daný senzor.
GET YOUR_MANAGEMENT_API_URL/matchers/YOUR_MATCHER_IDENTIFIER/evaluate/YOUR_SENSOR_IDENTIFIER?enableLogging=true
Parametr | Nahradit hodnotou |
---|---|
YOUR_MATCHER_IDENTIFIER | ID matcheru, který chcete vyhodnotit |
YOUR_SENSOR_IDENTIFIER | ID senzoru, který chcete vyhodnotit |
Odpověď:
{
"success": true,
"logs": [
"$.dataType: \"Motion\" Equals \"Motion\" => True"
]
}
Kontrola aktivačních událostí senzoru
Pomocí následujícího volání rozhraní API pro správu služby Azure Digital Twins můžete určit identifikátory funkcí definovaných uživatelem aktivovanými příchozí telemetrií daného senzoru:
GET YOUR_MANAGEMENT_API_URL/sensors/YOUR_SENSOR_IDENTIFIER/matchers?includes=UserDefinedFunctions
Parametr | Nahradit hodnotou |
---|---|
YOUR_SENSOR_IDENTIFIER | ID senzoru pro odesílání telemetrie |
Odpověď:
[
{
"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
}
]
}
]
Problém s příjmem oznámení
Pokud nedostáváte oznámení z aktivované uživatelem definované funkce, ověřte, že parametr typu objektu topologie odpovídá typu použitého identifikátoru.
Nesprávné Příklad:
var customNotification = {
Message: 'Custom notification that will not work'
};
sendNotification(telemetry.SensorId, "Space", JSON.stringify(customNotification));
Tento scénář nastane, protože použitý identifikátor odkazuje na senzor, zatímco je Space
zadaný typ objektu topologie .
Správné Příklad:
var customNotification = {
Message: 'Custom notification that will work'
};
sendNotification(telemetry.SensorId, "Sensor", JSON.stringify(customNotification));
Nejjednodušší způsob, jak na tento problém narazit, je použít Notify
metodu u objektu metadat.
Příklad:
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));
}
Běžné diagnostické výjimky
Pokud povolíte nastavení diagnostiky, můžete narazit na tyto běžné výjimky:
Omezování: Pokud vaše uživatelem definovaná funkce překročí limity rychlosti spouštění popsané v článku Limity služeb , omezí se. Žádné další operace se úspěšně nespustí, dokud nevyprší limity omezování.
Data nebyla nalezena: Pokud se vaše uživatelem definovaná funkce pokusí získat přístup k metadatům, která neexistují, operace selže.
Není autorizováno: Pokud vaše uživatelem definovaná funkce nemá sadu přiřazení rolí nebo nemá dostatečná oprávnění pro přístup k určitým metadatům z topologie, operace selže.
Další kroky
Zjistěte, jak povolit monitorování a protokoly ve službě Azure Digital Twins.
Další možnosti protokolování Azure najdete v článku s přehledem protokolu aktivit Azure .