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ğlan üretkenlik 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, 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 bir uyarı tetikleme amacıyla kullanabileceğiniz Bağlan 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ğı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, Event Grid'in hızlı bildirimin istendiği senaryolar için daha iyi bir seçim olmasını sağlar.

  • Cihaz başına bildirimler: Event Grid, tek tek cihazlar için bağlantıları ve bağlantıları izleme olanağı sağlar. Bu, 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'deki Device Bağlan ed 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ı 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 hedeflerden biri, Kusto sorgularını kullanarak verileri çözümleyebileceğiniz 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 kaynak günlüklerini her zaman yaysa da siz bunları bir hedefe yönlendirene kadar Azure İzleyici tarafından toplanmaz.

Günlükleri bir hedefe yönlendirme hakkında daha fazla bilgi edinmek için bkz . Toplama ve yönlendirme. Tanılama ayarı oluşturmaya yönelik 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ı ayarlama

IoT Hub tarafından yayılan platform ölçümlerine göre uyarılar ayarlayabilirsiniz. Ölçüm uyarılarıyla, kişilere bir ilgi alanı koşulu oluştuğu konusunda bildirimde bulunabilir ve ayrıca bu koşula otomatik olarak yanıt verebilen eylemleri tetikleyebilirsiniz.

Bağlan cihazlar (önizleme) ölçümü, IoT Hub'ınıza kaç cihaz bağlı olduğunu gösterir. 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ı.

Ölçüm uyarı kurallarını kullanarak cihaz bağlantısı anomalilerini büyük ölçekte izleyebilirsiniz. Diğer bir ifadeyle, önemli sayıda cihazın beklenmedik ş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 ilgili uyarılar hakkında daha fazla bilgi edinmek için bkz . IoT Hub'ı İzleme'deki 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 Microsoft Azure'da uyarılara 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ı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. Aşağıdaki adımlarda, IoT Hub Bağlan ions 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ükleri'ne yönlendirmek için bir tanılama ayarı oluşturduktan sonra azure portalındaki 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 bilgilendiren bir cihaz Bağlan olayı gösterilmektedir:

Günlüklerdeki cihaz Bağlan 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 bazı SDK'larda geliştiriciler tarafından değiştirilebilir. 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 saniyelik (20 dakikalık) 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 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ı kesilmeleri gerçekleşir. Ayrıca herhangi bir hata yoktur, yalnızca bilgilendirilebilir bağlantı/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 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 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 Bağlan ionForcefullyClosedOnNew Bağlan ion, 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ğlan.

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

Sonraki adımlar