Sdílet prostřednictvím


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.

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 Spacezadaný 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:

  1. 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í.

  2. Data nebyla nalezena: Pokud se vaše uživatelem definovaná funkce pokusí získat přístup k metadatům, která neexistují, operace selže.

  3. 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