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:
Event Grid'i IoT Hub ile kullanmaya genel bakış için bkz . Event Grid ile IoT Hub olaylarına tepki verme. Cihaz bağlantı durumu olaylarıyla ilgili sınırlamalar bölümüne özellikle dikkat edin.
Cihaz bağlantısı olaylarını sıralama hakkında bir öğretici için bkz . Azure Cosmos DB kullanarak Azure IoT Hub'dan cihaz bağlantısı olaylarını sıralama.
E-posta bildirimleri gönderme hakkında bir öğretici için Event Grid belgelerindeki Event Grid ve Logic Apps kullanarak Azure IoT Hub olayları hakkında e-posta bildirimleri gönderme bölümüne bakın.
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:
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:
Ö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.
Azure portalında IoT hub'ınıza gidin.
IoT hub'ınızın sol bölmesindeki İzleme'nin altında Günlükler'i seçin.
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")
Sonuçlar varsa, daha fazla ayrıntı almak için
OperationName
,ResultType
(hata kodu) veResultDescription
(hata iletisi) arayın.
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:
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:
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:
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:
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
Geçici sorunları çözme hakkında daha fazla bilgi edinmek için bkz . Geçici hata işleme.
Azure IoT cihaz SDK'ları ve yeniden denemeleri yönetme hakkında daha fazla bilgi edinmek için bkz . Yeniden deneme desenleri.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin