Azure Digital Twins'de kullanıcı tanımlı işlevlerde hata ayıklama

Önemli

Azure Digital Twins hizmetinin yeni bir sürümü yayınlandı. Yeni hizmetin genişletilmiş özellikleri ışığında özgün Azure Digital Twins hizmeti (bu belge kümesinde açıklanmıştır) kullanımdan kaldırılmıştır.

Yeni hizmetin belgelerini görüntülemek için etkin Azure Digital Twins Belgeleri'ni ziyaret edin.

Bu makalede Azure Digital Twins'de kullanıcı tanımlı işlevleri tanılama ve hatalarını ayıklama işlemleri özetlenmektedir. Ardından, hata ayıklama sırasında bulunan en yaygın senaryolardan bazılarını tanımlar.

İpucu

Etkinlik Günlüklerini, Tanılama Günlüklerini ve Azure İzleyici'yi kullanarak Azure Digital Twins'de hata ayıklama araçlarını ayarlama hakkında daha fazla bilgi edinmek için İzlemeyi ve günlüğe kaydetmeyi yapılandırma bölümüne bakın.

Hata ayıklama sorunları

Azure Digital Twins'de sorunları tanılamayı bilmek sorunları etkili bir şekilde analiz etmenizi, sorunların nedenlerini belirlemenizi ve bunlara uygun çözümler sunmanızı sağlar.

Bu amaçla çeşitli günlüğe kaydetme, analiz ve tanılama araçları sağlanır.

Örneğin için günlüğe kaydetmeyi etkinleştirme

Azure Digital Twins güçlü günlüğe kaydetmeyi, izlemeyi ve analizi destekler. Çözüm geliştiricileri Bir IoT uygulamasının karmaşık izleme gereksinimlerini desteklemek için Azure İzleyici günlüklerini, tanılama günlüklerini, etkinlik günlüklerini ve diğer hizmetleri kullanabilir. Günlüğe kaydetme seçenekleri, birçok hizmette kayıtları sorgulamak veya görüntülemek ve birçok hizmet için ayrıntılı günlük kapsamı sağlamak üzere birleştirilebilir.

Yapılandırıldıktan sonra tüm günlük kategorilerini, ölçümleri seçebilir ve hata ayıklama çalışmalarınızı desteklemek için güçlü Azure İzleyici log analytics çalışma alanlarını kullanabilirsiniz.

Algılayıcı telemetri verilerini izleme

Algılayıcı telemetrisini izlemek için Azure Digital Twins örneğinizde tanılama ayarlarının etkinleştirildiğini doğrulayın. Ardından, istenen tüm günlük kategorilerinin seçildiğinden emin olun. Son olarak, istenen günlüklerin Azure İzleyici günlüklerine gönderildiğini onaylayın.

Algılayıcı telemetri iletisini ilgili günlüklerine eşleştirmek için, gönderilen olay verileri üzerinde bir Bağıntı Kimliği belirtebilirsiniz. Bunu yapmak için özelliğini GUID olarak ayarlayın x-ms-client-request-id .

Telemetriyi gönderdikten sonra, ayarlanan Bağıntı Kimliğini kullanarak günlükleri sorgulamak için Azure İzleyici log analytics'i açın:

AzureDiagnostics
| where CorrelationId == 'YOUR_CORRELATION_IDENTIFIER'
Sorgu değeri Şununla değiştir
YOUR_CORRELATION_IDENTIFIER Olay verilerinde belirtilen Bağıntı Kimliği

Tüm son telemetri günlükleri sorgusunu okumak için:

AzureDiagnostics
| order by CorrelationId desc

Kullanıcı tanımlı işleviniz için günlüğe kaydetmeyi etkinleştirirseniz, bu günlükler log analytics örneğinizde kategorisiyle UserDefinedFunctiongörüntülenir. Bunları almak için Log Analytics'e aşağıdaki sorgu koşulunu girin:

AzureDiagnostics
| where Category == 'UserDefinedFunction'

Güçlü sorgu işlemleri hakkında daha fazla bilgi için bkz. Sorgularla çalışmaya başlama.

Yaygın sorunları belirleme

Çözümünüzün sorunlarını giderirken yaygın sorunları tanılamak ve tanımlamak önemlidir. Kullanıcı tanımlı işlevler geliştirirken sık karşılaşılan çeşitli sorunlar aşağıdaki alt bölümler halinde özetlenmiştir.

Aşağıdaki örneklerde Digital YOUR_MANAGEMENT_API_URL Twins API'lerinin URI'sine başvurur:

https://YOUR_INSTANCE_NAME.YOUR_LOCATION.azuresmartspaces.net/management/api/v1.0
Name Şununla değiştir
YOUR_INSTANCE_NAME Azure Digital Twins örneğinizin adı
YOUR_LOCATION Örneğinizin barındırılıyor olduğu bölge

Rol ataması oluşturulup oluşturulmadığını denetleme

Yönetim API'sinde bir rol ataması oluşturulmadan, kullanıcı tanımlı işlevin bildirim gönderme, meta verileri alma ve topoloji içinde hesaplanan değerleri ayarlama gibi eylemleri gerçekleştirme erişimi olmaz.

Yönetim API'niz aracılığıyla kullanıcı tanımlı işleviniz için rol ataması olup olmadığını denetleyin:

GET YOUR_MANAGEMENT_API_URL/roleassignments?path=/&traverse=Down&objectId=YOUR_USER_DEFINED_FUNCTION_ID
Parametre değeri Şununla değiştir
YOUR_USER_DEFINED_FUNCTION_ID Rol atamalarını almak için kullanıcı tanımlı işlevin kimliği

Rol ataması yoksa kullanıcı tanımlı işleviniz için rol ataması oluşturmayı öğrenin.

Eşleştiricinin algılayıcının telemetrisi için çalışıp çalışmadığını denetleyin

Azure Digital Twins örneklerinizin Yönetim API'sine yönelik aşağıdaki çağrıyla, belirli bir eşleştiricinin belirli bir algılayıcı için geçerli olup olmadığını belirleyebilirsiniz.

GET YOUR_MANAGEMENT_API_URL/matchers/YOUR_MATCHER_IDENTIFIER/evaluate/YOUR_SENSOR_IDENTIFIER?enableLogging=true
Parametre Şununla değiştir
YOUR_MATCHER_IDENTIFIER Değerlendirmek istediğiniz eşleştiricinin kimliği
YOUR_SENSOR_IDENTIFIER Değerlendirmek istediğiniz algılayıcının kimliği

Yanıt:

{
    "success": true,
    "logs": [
        "$.dataType: \"Motion\" Equals \"Motion\" => True"
    ]
}

Algılayıcının neleri tetikle istediğini denetleme

Azure Digital Twins Yönetim API'lerine yönelik aşağıdaki çağrıyla, belirli bir algılayıcının gelen telemetrisi tarafından tetiklenen kullanıcı tanımlı işlevlerinizin tanımlayıcılarını belirleyebilirsiniz:

GET YOUR_MANAGEMENT_API_URL/sensors/YOUR_SENSOR_IDENTIFIER/matchers?includes=UserDefinedFunctions
Parametre Şununla değiştir
YOUR_SENSOR_IDENTIFIER Telemetri göndermek için algılayıcının kimliği

Yanıt:

[
    {
        "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
            }
        ]
    }
]

Bildirimleri alma sorunu

Tetiklenen kullanıcı tanımlı işlevden bildirim almıyorsanız, topoloji nesne türü parametrenizin kullanılmakta olan tanımlayıcı türüyle eşleştiğinden emin olun.

Yanlış Örnek:

var customNotification = {
    Message: 'Custom notification that will not work'
};

sendNotification(telemetry.SensorId, "Space", JSON.stringify(customNotification));

Bu senaryo, kullanılan tanımlayıcı belirtilen topoloji nesne türü olduğunda Spacebir algılayıcıya başvurduğundan ortaya çıkar.

Doğru Örnek:

var customNotification = {
    Message: 'Custom notification that will work'
};

sendNotification(telemetry.SensorId, "Sensor", JSON.stringify(customNotification));

Bu sorunla karşılaşılmaması için en kolay yol meta veri nesnesinde Notify yöntemini kullanmaktır.

Örnek:

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));
}

Yaygın tanılama özel durumları

Tanılama ayarlarını etkinleştirirseniz şu yaygın özel durumlarla karşılaşabilirsiniz:

  1. Azaltma: Kullanıcı tanımlı işleviniz Hizmet Sınırları makalesinde belirtilen yürütme hızı sınırlarını aşarsa kısıtlanır. Azaltma sınırlarının süresi dolana kadar başka hiçbir işlem başarıyla yürütülemez.

  2. Veri Bulunamadı: Kullanıcı tanımlı işleviniz var olmayan meta verilere erişmeye çalışırsa işlem başarısız olur.

  3. Yetkilendirilmedi: Kullanıcı tanımlı işlevinizin rol atama kümesi yoksa veya topolojiden belirli meta verilere erişmek için yeterli izni yoksa işlem başarısız olur.

Sonraki adımlar