Aracılığıyla paylaş


Azure IoT Hub cihaz bağlantısını izleme, tanılama ve 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. Bir 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'dan telemetri 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 IoT Hub'ın Azure İzleyici aracılığıyla sağladığı izleme özelliklerini kullanın. Bu yaklaşım, bağlantı kesildiğinde bildirimleri ve eylemleri tetikleyen uyarılar ayarlamayı ve bağlantı kesilmesine 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'i kullanarak IoT Hub tarafından yayılan cihaz bağlantısına ve bağlantı kesme olaylarına abone olun. Azure Event Grid, aşağıdaki olay işleyicilerinden herhangi birini kullanmanızı sağlar:

    • Azure İşlevleri
    • Logic Apps
    • Azure Automation
    • 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'ınıza bağlı cihaz sayısını izlemek ve bu sayı statik eşiğin altına düştüğünde uyarı tetikleme amacıyla kullanabileceğiniz Bağlı cihazlar adlı bir ölçüm sağlar.

Belirli bir senaryo için Event Grid mi yoksa Azure İzleyici mi kullanılacağına karar verirken aşağıdaki sorunları 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 durum Event Grid'i hızlı bildirimin istendiği senaryolar için daha iyi bir seçim 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 durum Event Grid'i kritik cihazlar için bağlantıları izlemeniz gereken senaryolar için daha iyi bir seçenek haline getirir.

  • Basit kurulum: Azure İzleyici ölçüm uyarıları, E-posta, SMS, Ses ve diğer bildirimler aracılığıyla bildirim göndermek 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 daha karmaşık eylemler tetikleme amacıyla diğer hizmetlerle tümleştirebilir.

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

Üretimdeki cihaz bağlama ve bağlantısını kesme olaylarını izlemek için, uyarıları tetikleyip cihaz bağlantı durumunu izlemek için Event Grid'de DeviceConnected ve DeviceDisconnected olaylarına abone olmanızı öneririz. Event Grid, Azure İzleyici'den daha düşük olay gecikme süresi sağlar ve cihaz başına 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 makaleleri inceleyin:

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ısı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çıklanmaktadır. Buradaki adımlarda, IoT Hub Bağlantıları günlüklerini Log Analytics çalışma alanına 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ında günlükleri görüntülemek için bu adımları izleyin.

  1. Azure portalında 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 çözümleme 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 cihazını 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 cihazBağlan olayı gösterilmektedir:

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

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

Azure IoT cihaz SDK'ları IoT Hub bağlantısını keser ve MQTT (ve WebSockets üzerinden MQTT) protokolü üzerinden SAS belirteçlerini yenilediklerinde yeniden bağlanır. Günlüklerde bu, bazen hata olaylarıyla birlikte bilgilendirsel cihaz bağlantısı kesiliyor ve olaylar bağlanıyor olarak gösteriliyor.

Varsayılan olarak, belirteç ömrü tüm SDK'lar için 60 dakikadır; ancak geliştiriciler bunu bazı SDK'larda değiştirebilir. Aşağıdaki tabloda, sdk'ların her biri için belirteç ö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üne ek olarak 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üne ek olarak 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ştirildi.

  • 1200 saniye (20 dakika) belirteç ömrü ve yenileme süresi %90 olarak ayarlanmış .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 saniye (5 dakika) 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 saniye (5 dakika) belirteç ömrü ve belirteç yenilemesi 3 dakika olarak ayarlanmış düğüm SDK'sı. Belirteç yenilemesinde bağlantı kesilmeleri gerçekleşir. Ayrıca hata da yoktur. Yalnızca bilgilendirsel bağlanma/bağlantı kesme olayları yayılır:

    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 için belirteç ömrünü veya yenileme davranışını değiştirmek istiyorsanız, cihazın bir cihaz ikizi ayarı mı yoksa bu değişikliği 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 yapılan bağlantı kesilmelerini filtreleyerek oluşturduğunuzdan emin olun. Örneğin, bağlantı kesme olayının ardından belirli bir zaman aralığında bir bağlantı olayı olduğu 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 yapılan tüm yeni MQTT bağlantıları IoT Hub'ın 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 şunları deneyin:

  • Sorunlu cihazlara fiziksel veya uzaktan (SSH gibi) erişiminiz varsa sorun gidermeye devam etmek için cihaz tarafı sorun giderme kılavuzunu izleyin.

  • Cihazlarınızın Azure portalında > IoT hub > IoT cihazlarınızda Etkinleştirildiğini doğrulayın.

  • Cihazınız MQTT protokolü kullanıyorsa 8883 numaralı bağlantı noktasının açık olduğunu doğrulayın. Daha fazla bilgi için bkz . IoT Hub'a (MQTT) Bağlanma.

  • Azure IoT Hub, Stack Overflow veya Azure desteği için Microsoft Soru-Cevap soru sayfasından yardım alın.

Sonraki adımlar