Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 telemetri verilerini toplamanızı, çözümlemenizi 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, IoT Hub tarafından yayılan cihaz bağlantı ve bağlantı kesilme olaylarına abone olmak üzere Azure Event Grid'i kullanın. Azure Event Grid, aşağıdaki olay işleyicilerinden herhangi birini kullanmanızı sağlar:
- Azure İşlevleri
- Logic Apps
- Azure Otomasyonu
- WebHooks
- Kuyruk Depolama
- Karma Bağlantılar
- Event Hubs
Protokoller ve bağlantı noktaları
Bir cihaz, IoT hub'ınıza bağlanmak için aşağıdaki protokollerden herhangi birini kullanabilir. Giden bağlantı noktası bir güvenlik duvarı tarafından engelleniyorsa, cihaz bağlanamaz.
| Protocol | Çıkış bağlantı noktası |
|---|---|
| MQTT | 8883 |
| WebSockets üzerinden MQTT | 443 |
| AMQP | 5671 |
| WebSockets üzerinden AMQP | 443 |
| HTTPS | 443 |
Message Queuing Telemetri Taşıma (MQTT) bağlantısı hakkında daha fazla bilgi için IoT Hub'a bakın.
Cihaz bağlantısını doğrulama
Azure CLI ve IoT Hub portalı araçlarını kullanarak bir cihazın hub'ınıza bağlanıp iletişim kurabildiğini doğrulayın. Bu bölümdeki adımlar sorunun cihaz kimlik doğrulaması, cihazdan buluta mesajlaşma, buluttan cihaza mesajlaşma veya cihaz ikizi eşitlemesi ile ilgili olup olmadığını yalıtmanıza yardımcı olur.
Bağlantı doğrulama önkoşulları
Azure CLI'de azure-iot uzantısı yüklü:
az extension add --upgrade --name azure-iotIoT hub'ınıza bağlantı dizesiyle kayıtlı bir cihaz. Bir test cihazını kaydetmek ve bağlantı dizesi almak için aşağıdaki komutları çalıştırın. Yeni cihazınızın adıyla ve önceden oluşturduğunuz bir IoT hub'ı ile değiştirmek için sırasıyla
<your-device-id>ve<your-iot-hub-name>değerini değiştirin.az iot hub device-identity create --device-id <your-device-id> --hub-name <your-iot-hub-name> az iot hub device-identity connection-string show --device-id <your-device-id> --hub-name <your-iot-hub-name>
Cihaz kimlik doğrulamasını denetleme
Bir cihazın veri alışverişinde bulunabilmesi için önce hub'ınız ile kimlik doğrulaması yapması gerekir. Kimlik doğrulamasını test etmek için:
Cihaz kimliğinden bir test telemetri iletisi göndermek için Azure CLI kullanın. Başarılı bir gönderme, cihaz anahtarının geçerli olduğunu onaylar:
az iot device simulate --device-id <your-device-id> --hub-name <your-iot-hub-name> --msg-count 1Kimlik doğrulaması başarısız olursa, cihaz bağlantı dizesinin güncel olduğunu kontrol edin. Gerekirse yeni bir anahtar oluşturmak için birincil anahtarı sıfırlayın:
az iot hub device-identity update --device-id <your-device-id> --set authentication.symmetricKey.primaryKey="" --hub-name <your-iot-hub-name>Ardından güncellenmiş bağlantı dizesini alın:
az iot hub device-identity connection-string show --device-id <your-device-id> --hub-name <your-iot-hub-name>
Test SAS belirteci oluştur
Cihazınız SAS belirteci kimlik doğrulaması kullanıyorsa, belirteç oluşturma kodunuzla ilgili sorunları elemek için bilinen iyi bir SAS belirteci oluşturabilirsiniz:
az iot hub generate-sas-token --device-id <your-device-id> --hub-name <your-iot-hub-name>
Geçerli bir SAS belirteci şöyle görünür: SharedAccessSignature sr=your-hub.azure-devices.net%2Fdevices%2FmyDevice&sig=xxxxxx&se=111111
SAS belirteçlerinin program aracılığıyla nasıl oluşturulacağı gösteren kod örnekleri için
Cihazın bulut bağlantısını denetleme
Bir cihaz tarafından gönderilen telemetrinin hub'ınıza ulaştığını doğrulamak için:
Cihazdan test telemetri iletileri gönderin:
az iot device simulate --device-id <your-device-id> --hub-name <your-iot-hub-name> --msg-count 5Azure portalında IoT hub'ınıza gidin. Kenar çubuğu menüsünde İzleme'nin altında Ölçümler'i seçin.
Ölçüm açılan listesinde ölçüm olarak gönderilen Telemetri iletileri'ni seçin ve sağ üst köşedeki zaman aralığını Son saat olarak ayarlayın. Grafik, cihaz tarafından gönderilen iletilerin toplam sayısını gösterir.
Not
İletileri gönderdikten sonra ölçümlerin kullanılabilir duruma gelmesi birkaç dakika sürer.
Bulut-cihaz bağlantısını denetleme
Buluttan cihaza yolu doğrulamak için doğrudan yöntem çağrısı kullanın. Simülasyon cihazını bir terminal penceresinde çalıştırın ve ardından başka bir terminalden doğrudan bir yöntem çağırın:
az iot hub invoke-device-method --device-id <your-device-id> --method-name TestMethod --timeout 10 --method-payload '{"key":"value"}' --hub-name <your-iot-hub-name>
Başarılı bir yanıt, hub'ın cihaza ulaşabileceğini onaylar. Arama zaman aşımına uğrarsa, cihazın bağlı olduğunu ve metot çağrılarını dinlediğini doğrulayın.
Cihaz çift senkronizasyonunu kontrol etme
Cihaz ikizi verisinin cihaz ile hub arasında senkronize olduğunu doğrulamak için:
Bildirilen özellikleri denetlemek için geçerli cihaz ikizini görüntüleyin:
az iot hub device-twin show --device-id <your-device-id> --hub-name <your-iot-hub-name>İstenen özellik güncelleştirmesini gönderin ve cihazın bu güncelleştirmeyi aldığını onaylayın:
az iot hub device-twin update --set properties.desired='{"mydesiredproperty":"propertyvalue"}' --device-id <your-device-id> --hub-name <your-iot-hub-name>Cihazın bildirilen özelliklerinde istenen özelliği kabul ettiğinden emin olmak için twin show komutunu yeniden çalıştırın.
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, bireysel cihazlar için bağlantıları ve kesilmeleri 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
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.
Not
Ü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'i cihaz bağlantısı kesintilerini izlemek veya bu kesintilerde uyarı tetiklemek için kullanırken, Azure IoT SDK'larını kullanan cihazlarda SAS belirtecinin yenilenmesi nedeniyle düzenli aralıklarla oluşan bağlantı kesintilerini filtreleme yapacak şekilde 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 Event Grid ile IoT Hub olaylarına tepki verme bölümüne bakınız. 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, Azure Cosmos DB kullanarak Azure IoT Hub'dan cihaz bağlantısı olaylarını sıralama başlıklı makaleye bakın.
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ı 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.
Azure portalında IoT hub'ınıza gidin.
IoT hub'ınızın kenar çubuğu menüsünde İzleme'nin altında Günlükler'i seçin.
Basit moddanKQL moduna geç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.
<your-device-id> ifadesini 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 == "<your-device-id>"
Sorgu, hedef cihazınız için hem hata hem de bilgilendirme olayları döndürür. Aşağıdaki örnek çıktıda bir bilgilendirici cihazBağlan olayı gösterilmektedir.
Azure IoT SDK'ları ile MQTT cihaz bağlantısı kesme davranışı
Azure IoT cihaz SDK'ları, SAS belirteçlerini MQTT (ve WebSockets üzerinden MQTT) protokolüyle yenilediklerinde IoT Hub'dan bağlantıyı kesip yeniden bağlanır. Günlüklerde bu, bazen hata olaylarıyla birlikte görülen bilgilendirici cihaz bağlantı kesilme ve bağlanma olayları 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ü | Jeton 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 bilgi 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 bilgi 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.
.NET cihaz SDK'sı, 1.200 saniye (20 dakika) belirteç ömrüne sahiptir ve yenileme süresi ömrün %90'ına ulaşıldığında ayarlanmıştır. Bağlantı kesilmeleri her 30 dakikada bir gerçekleşir:
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:
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 bilgilendirme bağlanma/bağlantı kesme etkinlikleri 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 IoT Hub günlüklerinde SDK sürümüne bakın.
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 meydana gelen bağlantı kesilmelerini filtreleyecek şekilde sistemi tasarladığınızdan 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üklerine kayıt edildi
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 Etkin olduğunu doğrulayın. Azure portalında IoT Hub gidin ve Device management altında Devices öğesini seçin.
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 bu makalenin önceki kısmındaki Protokoller ve Portlar ve IoT Hub’a Bağlanma (MQTT) başlığına bakın.
Azure IoT Hub, Stack Overflow veya Azure desteği için Microsoft Soru-Cevap soru sayfasından yardım alın.