Cihaz bağlantısını izleme, tanılama ve Azure IoT Hub sorunlarını giderme

Birçok olası hata noktası olduğundan IoT cihazları için bağlantı sorunlarını gidermek zor olabilir. Uygulama mantığı, fiziksel ağlar, protokoller, donanım, IoT Hub ve diğer bulut hizmetlerinin tümü sorunlara neden olabilir. Sorunun kaynağını algılama ve belirleme özelliği kritik önem taşır. Ancak büyük ölçekteki bir IoT çözümünün binlerce cihazı olabilir, bu nedenle tek tek cihazları el ile denetlemek pratik değildir. IoT Hub, size yardımcı olmak için iki Azure hizmetiyle tümleştirilir:

  • Azure İzleyici Azure İzleyici, IoT Hub telemetri verilerini toplamanızı, analiz etmenizi ve üzerinde işlem yapmanızı sağlar. Bu sorunları büyük ölçekte algılamanıza, tanılamanıza ve gidermenize yardımcı olmak için Azure İzleyici aracılığıyla IoT Hub izleme özelliklerini kullanın. Bu, bağlantı kesildiğinde bildirimleri ve eylemleri tetikleyen uyarılar ayarlamayı ve bağlantı kesilmelerine neden olan koşulları bulmak için kullanabileceğiniz günlükleri yapılandırmayı içerir.

  • Azure Event Grid Kritik altyapı ve cihaz başına bağlantı kesilmeleri için Azure Event Grid kullanarak IoT Hub tarafından yayılan cihaz bağlama ve bağlantı kesme olaylarına abone olun. Azure Event Grid aşağıdaki olay işleyicilerinden herhangi birini kullanmanıza olanak tanır:

    • Azure İşlevleri
    • Logic Apps
    • Azure Otomasyonu
    • Web Kancaları
    • Kuyruk Depolama
    • Karma Bağlantılar
    • Event Hubs

Event Grid ile Azure İzleyici karşılaştırması

Event Grid, kritik cihazlar ve altyapı için cihaz bağlantılarını izlemek için kullanabileceğiniz düşük gecikme süreli, cihaz başına izleme çözümü sağlar. Azure İzleyici, IoT Hub bağlı cihaz sayısını izlemek ve bu sayı statik eşiğin altına düştüğünde bir uyarı tetiklemek için kullanabileceğiniz bağlı cihazlar ölçümünü sağlar.

Belirli bir senaryo için Event Grid mi yoksa Azure İzleyici mi kullanacağınıza karar verirken aşağıdakileri göz önünde bulundurun:

  • Uyarı gecikme süresi: IoT Hub bağlantı olayları Event Grid aracılığıyla çok daha hızlı teslim edilir. Bu, hızlı bildirimin istendiği senaryolar için Event Grid'i daha iyi bir seçenek haline getirir.

  • Cihaz başına bildirimler: Event Grid, tek tek cihazlar için bağlantıları ve bağlantıları izleme olanağı sağlar. Bu, kritik cihazlar için bağlantıları izlemeniz gereken senaryolar için Event Grid'i daha iyi bir seçenek haline getirir.

  • Basit kurulum: Azure İzleyici ölçüm uyarıları, Email, SMS, Ses ve diğer bildirimler aracılığıyla bildirim sunmak için diğer hizmetlerle tümleştirme gerektirmeyen basit bir kurulum deneyimi sağlar. Event Grid ile bildirim göndermek için diğer Azure hizmetleriyle tümleştirmeniz gerekir. Her iki hizmet de diğer hizmetlerle tümleştirerek daha karmaşık eylemler tetikleyebilir.

Event Grid: Bağlanma ve bağlantıyı kesme olaylarını izleme

Üretimde cihaz bağlanma ve bağlantı kesme olaylarını izlemek için, uyarıları tetikleme ve cihaz bağlantı durumunu izleme amacıyla Event Grid'de DeviceConnected ve DeviceDisconnected olaylarına abone olmanızı öneririz. Event Grid, Azure İzleyici'den çok daha düşük olay gecikme süresi sağlar ve cihaz başına temelinde izleyebilirsiniz. Bu faktörler Event Grid'i kritik cihazları ve altyapıyı izlemek için tercih edilen yöntem haline getirir.

Cihaz bağlantısı kesilen cihazlarda uyarıları izlemek veya tetiklemek için Event Grid kullandığınızda, Azure IoT SDK'larını kullanan cihazlarda SAS belirteci yenilemesi nedeniyle düzenli aralıklarla kesilen bağlantıları filtreleyerek oluşturduğunuzdan emin olun. Daha fazla bilgi edinmek için bkz. Azure IoT SDK'ları ile MQTT cihaz bağlantısı kesme davranışı.

Event Grid ile cihaz bağlantısı olaylarını izleme hakkında daha fazla bilgi edinmek için aşağıdaki konuları inceleyin:

Azure İzleyici: Bağlantı olaylarını günlüklere yönlendirme

IoT hub, çeşitli işlem kategorileri için kaynak günlüklerini sürekli olarak yayar. Ancak bu günlük verilerini toplamak için analiz edilebileceği veya arşivlenebileceği bir hedefe yönlendirmek için bir tanılama ayarı oluşturmanız gerekir. Bu tür hedeflerden biri, Kusto sorgularını kullanarak verileri çözümleyebileceğiniz bir Log Analytics çalışma alanı (fiyatlandırmaya bakın) aracılığıyla Azure İzleyici Günlükleri'dir.

IoT Hub kaynak günlükleri bağlantıları kategorisi, cihaz bağlantılarıyla ilgili işlemleri ve hataları gösterir. Aşağıdaki ekran görüntüsünde, bu günlükleri Log Analytics çalışma alanına yönlendirmeye yönelik bir tanılama ayarı gösterilmektedir:

Log Analytics çalışma alanına bağlantı günlükleri göndermek için önerilen ayar.

IoT hub'ınızı oluşturduktan sonra mümkün olduğunca erken bir tanılama ayarı oluşturmanızı öneririz, çünkü IoT Hub her zaman kaynak günlükleri yaysa da, siz bunları bir hedefe yönlendirene kadar Azure İzleyici tarafından toplanmaz.

Günlükleri hedefe yönlendirme hakkında daha fazla bilgi edinmek için bkz. Toplama ve yönlendirme. Tanılama ayarı oluşturmayla ilgili ayrıntılı yönergeler için Ölçümleri ve günlükleri kullanma öğreticisine bakın.

Azure İzleyici: Cihaz bağlantı kesilmeleri için ölçüm uyarılarını ayarlama

IoT Hub tarafından gösterilen platform ölçümlerine göre uyarılar ayarlayabilirsiniz. Ölçüm uyarılarıyla ilgili bir koşulun gerçekleştiğini bireylere bildirebilir ve bu koşula otomatik olarak yanıt verebilen eylemleri tetikleyebilirsiniz.

Bağlı cihazlar (önizleme) ölçümü, IoT Hub kaç cihazın bağlı olduğunu bildirir. Bu ölçüm bir eşik değerinin altına düşerse tetikleme uyarıları oluşturabilirsiniz:

Bağlı cihazlar ölçümü için uyarı mantığı ayarları.

Cihaz bağlantısı anomalilerini büyük ölçekte izlemek için ölçüm uyarı kurallarını kullanabilirsiniz. Yani, önemli sayıda cihazın beklenmedik bir şekilde bağlantısının ne zaman kesildiğini belirlemek için uyarıları kullanın. Bu algılandığında, sorunu gidermeye yardımcı olmak için günlüklere bakabilirsiniz. Ancak, kritik cihazlar için cihaz başına bağlantı kesilmelerini ve bağlantılarını neredeyse gerçek zamanlı olarak izlemek için Event Grid'i kullanmanız gerekir.

IoT Hub ile uyarılar hakkında daha fazla bilgi edinmek için bkz. İzleyici IoT Hub uyarılar. IoT Hub'da uyarı oluşturma adımları için Ölçümleri ve günlükleri kullanma öğreticisine bakın. Uyarılara daha ayrıntılı bir genel bakış için Azure İzleyici belgelerindeki Azure Microsoft uyarılarına genel bakış bölümüne bakın.

Azure İzleyici: Bağlantı hatalarını çözmek için günlükleri kullanma

Azure İzleyici ölçüm uyarılarını veya Event Grid'i kullanarak cihaz bağlantılarının kesiliyor olduğunu algıladığınızda, nedenini gidermeye yardımcı olması için günlükleri kullanabilirsiniz. Bu bölümde Azure İzleyici Günlüklerinde sık karşılaşılan sorunların nasıl arandığı açıklanır. Aşağıdaki adımlarda, Log Analytics çalışma alanına IoT Hub Bağlantılar günlüklerini göndermek için zaten bir tanılama ayarı oluşturduğunuz varsayılır.

IoT Hub kaynak günlüklerini Azure İzleyici Günlüklerine yönlendirmek için bir tanılama ayarı oluşturduktan sonra, Azure portal günlükleri görüntülemek için bu adımları izleyin.

  1. Azure portal'da IoT hub'ınıza gidin.

  2. IoT hub'ınızın sol bölmesindeki İzleme'nin altında Günlükler'i seçin.

  3. IoT Hub bağlantı hata günlüklerini yalıtmak için sorgu düzenleyicisine aşağıdaki sorguyu girin ve Çalıştır'ı seçin:

    AzureDiagnostics
    | where ( ResourceType == "IOTHUBS" and Category == "Connections" and Level == "Error")
    
  4. Sonuçlar varsa, daha fazla ayrıntı almak için OperationName, ResultType (hata kodu) ve ResultDescription (hata iletisi) arayın.

    Hata günlüğü örneği

En yaygın hatalarla ilgili yardım için aşağıdaki sorun çözme kılavuzlarını kullanın:

Azure İzleyici: Belirli bir cihazın bağlantısını izlemek için günlükleri kullanma

Belirli bir cihazın bağlantı hatalarını ve bilgilerini görmek için Azure İzleyici'yi kullanmak istediğiniz durumlar olabilir. Bir cihazın bağlantı olaylarını yalıtmak için, önceki bölümdekiyle aynı adımları izleyebilirsiniz, ancak aşağıdaki sorguyu girebilirsiniz. test-device öğesini cihazınızın adıyla değiştirin.

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
| where Category == "Connections"
| extend DeviceId = tostring(parse_json(properties_s).deviceId)
| where DeviceId == "test-device"

Sorgu, hedef cihazınız için hem hata hem de bilgilendirme olayları döndürür. Aşağıdaki örnek çıktıda bilgilendirsel bir deviceConnect olayı gösterilmektedir:

Günlüklerde deviceConnect olayının ekran görüntüsü.

Azure IoT SDK'ları ile MQTT cihaz bağlantısını kesme davranışı

Azure IoT cihaz SDK'larının IoT Hub bağlantısı kesilir ve MQTT (ve WebSockets üzerinden MQTT) protokolü üzerinden SAS belirteçlerini yenilediklerinde yeniden bağlanır. Günlüklerde bu, bazen hata olaylarının eşlik ettiği bilgilendirsel cihaz bağlantısı kesme ve bağlanma olayları olarak gösterilir.

Varsayılan olarak, belirteç ömrü tüm SDK'lar için 60 dakikadır; ancak bazı SDK'larda geliştiriciler tarafından değiştirilebilir. Aşağıdaki tabloda, SDK'ların her biri için belirteç kullanım ömrü, belirteç yenileme ve belirteç yenileme davranışı özetlemektedir:

SDK Belirteç ömrü Belirteç yenileme Yenileme davranışı
.NET 60 dakika, yapılandırılabilir Kullanım ömrünün %85'i, yapılandırılabilir SDK, belirteç ömrüyle birlikte 10 dakikalık yetkisiz kullanım süresinde bağlantıyı keser ve yeniden bağlanır. Günlüklerde oluşturulan bilgilendirsel olaylar ve hatalar.
Java 60 dakika, yapılandırılabilir Kullanım ömrünün %85'i, yapılandırılamaz SDK, belirteç ömrüyle birlikte 10 dakikalık yetkisiz kullanım süresinde bağlantıyı keser ve yeniden bağlanır. Günlüklerde oluşturulan bilgilendirsel olaylar ve hatalar.
Node.js 60 dakika, yapılandırılabilir Yapılandırılabilir SDK, belirteç yenileme sırasında bağlantıyı keser ve yeniden bağlanır. Günlüklerde yalnızca bilgilendirme olayları oluşturulur.
Python 60 dakika, yapılandırılabilir Süre dolmadan 120 saniye önce SDK, belirteç ömrü boyunca bağlantıyı keser ve yeniden bağlanır.

Aşağıdaki ekran görüntüleri farklı SDK'lar için Azure İzleyici Günlüklerindeki belirteç yenileme davranışını gösterir. Belirtecin kullanım ömrü ve yenileme eşiği, belirtildiği gibi varsayılan değerlerinden değiştirilmiştir.

  • 1200 saniyelik (20 dakikalık) belirteç ömrüne ve yenileme süresi %90'ında gerçekleşecek şekilde ayarlanan .NET cihaz SDK'sı. bağlantı kesilmeleri her 30 dakikada bir gerçekleşir:

    .NET SDK ile Azure İzleyici Günlüklerinde MQTT üzerinden belirteç yenileme için hata davranışı.

  • 300 saniyelik (5 dakikalık) belirteç ömrüne ve varsayılan %85 kullanım ömrü yenilemesine sahip Java SDK'sı. Bağlantı kesilmeleri her 15 dakikada bir gerçekleşir:

    Java SDK ile Azure İzleyici Günlüklerinde MQTT üzerinden belirteç yenileme için hata davranışı.

  • 300 saniyelik (5 dakikalık) belirteç ömrü ve belirteç yenilemesi 3 dakikada gerçekleşecek şekilde ayarlanmış düğüm SDK'sı. Belirteç yenilemesinde bağlantı kesiliyor. Ayrıca hata yok, yalnızca bilgilendirme bağlantısı/bağlantı kesme olayları yayılıyor:

    Düğüm SDK'sı ile Azure İzleyici Günlüklerinde MQTT üzerinden belirteç yenileme için hata davranışı.

Sonuçları toplamak için aşağıdaki sorgu kullanıldı. Sorgu, özellik paketinden SDK adını ve sürümünü ayıklar. Daha fazla bilgi edinmek için bkz. IoT Hub günlüklerinde SDK sürümü.

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.DEVICES" and ResourceType == "IOTHUBS"
| where Category == "Connections"
| extend parsed_json = parse_json(properties_s)
| extend SDKVersion = tostring(parsed_json.sdkVersion) , DeviceId = tostring(parsed_json.deviceId) , Protocol =  tostring(parsed_json.protocol)
| distinct TimeGenerated, OperationName, Level, ResultType, ResultDescription, DeviceId, Protocol, SDKVersion

IoT çözümleri geliştiricisi veya operatörü olarak, günlüklerdeki bağlanma/bağlantıyı kesme olaylarını ve ilgili hataları yorumlamak için bu davranışın farkında olmanız gerekir. Cihazların belirteç ömrünü veya yenileme davranışını değiştirmek istiyorsanız, cihazın bir cihaz ikizi ayarı mı yoksa bunu mümkün kılan bir cihaz yöntemi mi uyguladığını denetleyin.

Event Hubs ile cihaz bağlantılarını izliyorsanız SAS belirteci yenilemesi nedeniyle düzenli aralıklarla kesilen bağlantıları filtreleyerek oluşturduğunuzdan emin olun. Örneğin, bağlantı kesme olayının ardından belirli bir zaman aralığı içinde bir bağlantı olayı izlediği sürece, bağlantı kesilmelerine dayalı eylemleri tetiklemeyin.

Not

IoT Hub, cihaz başına yalnızca bir etkin MQTT bağlantısını destekler. Aynı cihaz kimliği adına herhangi bir yeni MQTT bağlantısı, IoT Hub mevcut bağlantıyı bırakmasına neden olur.

400027 ConnectionForcefullyClosedOnNewConnection IoT Hub Günlüklerinde oturum açar

Adımları denedim ama işe yaramadı

Önceki adımlar işe yaramadıysa şunu deneyin:

Belgenin herkes için geliştirilmesine yardımcı olmak için, bu kılavuz size yardımcı olmadıysa aşağıdaki geri bildirim bölümünde bir yorum bırakın.

Sonraki adımlar