IoT verilerini Event Hubs'a aktarma
Bu makalede, Event Hubs'a veri göndermek için veri dışarı aktarmanın nasıl yapılandırıldığı açıklanır.
Filtrelenmiş ve zenginleştirilmiş IoT verilerini IoT Central uygulamanızdan sürekli olarak dışarı aktarmak için bu özelliği kullanın. Veri dışarı aktarma, sıcak yol içgörüleri, analiz ve depolama için değişiklikleri neredeyse gerçek zamanlı olarak bulut çözümünüzün diğer bölümlerine iletir.
Örneğin, şunları yapabilirsiniz:
- Telemetri verilerini, özellik değişikliklerini, cihaz bağlantısını, cihaz yaşam döngüsünü, cihaz şablonu yaşam döngüsünü ve denetim günlüğü verilerini JSON biçiminde neredeyse gerçek zamanlı olarak sürekli dışarı aktarın.
- Özel koşullarla eşleşen verileri dışarı aktarmak için veri akışlarını filtreleyin.
- Veri akışlarını cihazdan özel değerler ve özellik değerleriyle zenginleştirin.
- Şekillerini ve içeriklerini değiştirmek için veri akışlarını dönüştürün.
İpucu
Veri dışarı aktarmayı açtığınızda, yalnızca o andan itibaren verileri alırsınız. Daha fazla geçmiş veri saklamak için veri dışarı aktarmayı erken açın. Verileri dışarı aktarmanın kapalı olduğu zamanlardan el ile dışarı aktarmak için bkz . Cihazları sorgulamak için IoT Central REST API'sini kullanma.
Not
Bazı durumlarda iletilerin dışarı aktarılması 60 saniye kadar sürebilir. Bu süre, IoT Central'ın temel alınan IoT hub'ından iletiyi aldığından iletinin hedef uç noktaya teslim edildiğinden ölçülür.
Önkoşullar
Veri dışarı aktarma özelliklerini kullanmak için Veri dışarı aktarma iznine sahip olmanız gerekir.
Event Hubs dışarı aktarma hedefi ayarlama
IoT Central, verileri neredeyse gerçek zamanlı olarak dışarı aktarır. Veriler ileti gövdesindedir ve UTF-8 olarak kodlanmış JSON biçimindedir.
İletinin ek açıklamaları veya sistem özellikleri paketi, iotcentral-application-id
ileti gövdesindeki iotcentral-device-id
karşılık gelen alanlarla aynı değerlere sahip , , iotcentral-message-source
ve iotcentral-message-type
alanlarını içerir.
Bağlantı seçenekleri
Event Hubs hedefleri, bağlantıyı bir bağlantı dizesi veya yönetilen kimlikle yapılandırmanıza olanak sağlar.
Yönetilen kimlikler daha güvenlidir çünkü:
- IoT Central uygulamanızdaki bir bağlantı dizesi kaynağınızın kimlik bilgilerini depolamazsınız.
- Kimlik bilgileri, IoT Central uygulamanızın ömrüne otomatik olarak bağlıdır.
- Yönetilen kimlikler, güvenlik anahtarlarını düzenli olarak otomatik olarak döndürür.
IoT Central şu anda sistem tarafından atanan yönetilen kimlikleri kullanıyor.
Yönetilen kimlik yapılandırdığınızda, yapılandırma bir kapsam ve bir rol içerir:
- Kapsam, yönetilen kimliği kullanabileceğiniz yeri tanımlar. Örneğin, kapsam olarak bir Azure kaynak grubu kullanabilirsiniz. Bu durumda hem IoT Central uygulaması hem de hedef aynı kaynak grubunda olmalıdır.
- Rol, IoT Central uygulamasının hedef hizmette hangi izinlere sahip olduğunu tanımlar. Örneğin, bir IoT Central uygulamasının bir olay hub'ına veri göndermesi için yönetilen kimliğin Azure Event Hubs Veri Göndereni rol atamasına ihtiyacı vardır.
Aşağıdaki video, sistem tarafından atanan yönetilen kimlikler hakkında daha fazla bilgi sağlar:
Dikkat
Blob depolamaya aktarmak için videoda gösterildiği gibi Depolama Hesabı Katkıda Bulunanı'nı kullanmayın. Bunun yerine Depolama Blob Verileri Katkıda Bulunanı rolünü kullanın.
Event Hubs hedefi oluşturma
Bu makalede, Azure CLI kullanarak yönetilen kimlik oluşturma adımları gösterilmektedir. Ayrıca, azure portalını kullanarak bir manged identity oluşturabilirsiniz.
Dışarı aktarabileceğiniz bir Event Hubs ad alanınız yoksa Azure Cloud Shell bash ortamında aşağıdaki betiği çalıştırın. Betik bir kaynak grubu, Event Hubs ad alanı ve olay hub'ı oluşturur. Betik daha sonra IoT Central uygulamanız için yönetilen kimliği etkinleştirir ve olay hub'ınıza erişmek için gereken rolü atar:
# Replace the Event Hubs namespace name with your own unique value
EHNS=your-event-hubs-namespace-$RANDOM
# Replace the IoT Central app name with the name of your
# IoT Central application.
CA=your-iot-central-app
EH=exportdata
RG=centralexportresources
LOCATION=eastus
RGID=$(az group create -n $RG --location $LOCATION --query "id" --output tsv)
az eventhubs namespace create --name $EHNS --resource-group $RG -l $LOCATION
az eventhubs eventhub create --name $EH --resource-group $RG --namespace-name $EHNS
# This assumes your IoT Central application is in the
# default `IOTC` resource group.
az iot central app identity assign --name $CA --resource-group IOTC --system-assigned
PI=$(az iot central app identity show --name $CA --resource-group IOTC --query "principalId" --output tsv)
az role assignment create --assignee $PI --role "Azure Event Hubs Data Sender" --scope $RGID
az role assignment list --assignee $PI --all -o table
echo "Host name: $EHNS.servicebus.windows.net"
echo "Event Hub: $EH"
Olay hub'ınızın güvenliğini daha da sağlamak ve yalnızca yönetilen kimliklerle güvenilen hizmetlerden erişime izin vermek için bkz. Azure Sanal Ağ'de verileri güvenli bir hedefe aktarma.
Veri dışarı aktarma sayfasında IoT Central'da Event Hubs hedefini oluşturmak için:
+ Yeni hedef'i seçin.
Hedef türü olarak Azure Event Hubs'ı seçin.
Yetkilendirme türü olarak Sistem tarafından atanan yönetilen kimlik'i seçin.
Event Hubs kaynağınızın ana bilgisayar adını girin. Ardından büyük/küçük harfe duyarlı olay hub'ı adını girin. Ana bilgisayar adı şöyle görünür:
contoso-waste.servicebus.windows.net
.Kaydet'i seçin.
Hedef hizmetinize gelen verileri görmüyorsanız bkz . Azure IoT Central uygulamanızdan veri dışarı aktarma sorunlarını giderme.
Veri dışarı aktarmayı ayarlama
Artık verilerinizi dışarı aktarma hedefiniz olduğuna göre IoT Central uygulamanızda veri dışarı aktarmayı ayarlayın:
IoT Central uygulamanızda oturum açın.
Sol bölmede Veri dışarı aktarma'yı seçin.
İpucu
Sol bölmede Veri dışarı aktarma seçeneğini görmüyorsanız, uygulamanızda veri dışarı aktarmayı yapılandırma izniniz yoktur. Veri dışarı aktarmayı ayarlamak için bir yöneticiyle görüşün.
+ Yeni dışarı aktarma'ya tıklayın.
Yeni dışarı aktarmanız için bir görünen ad girin ve veri dışarı aktarmanın Etkin olduğundan emin olun.
Dışarı aktaracak veri türünü seçin. Aşağıdaki tabloda desteklenen veri dışarı aktarma türleri listelenmektedir:
Veri türü Açıklama Veri biçimi Telemetri Cihazlardan telemetri iletilerini neredeyse gerçek zamanlı olarak dışarı aktarın. Dışarı aktarılan her ileti, normalleştirilmiş özgün cihaz iletisinin tam içeriğini içerir. Telemetri ileti biçimi Özellik değişiklikleri Cihaz ve bulut özelliklerindeki değişiklikleri neredeyse gerçek zamanlı olarak dışarı aktarın. Salt okunur cihaz özellikleri için, bildirilen değerlerde yapılan değişiklikler dışarı aktarılır. Okuma-yazma özellikleri için hem bildirilen hem de istenen değerler dışarı aktarılır. Özellik değişikliği ileti biçimi Cihaz bağlantısı Cihaz bağlı ve bağlantısı kesilmiş olayları dışarı aktarın. Cihaz bağlantısı ileti biçimi Cihaz yaşam döngüsü Kayıtlı, silinmiş, sağlanan, etkin, devre dışı, displayNameChanged ve deviceTemplateChanged olaylarını dışarı aktarın. Cihaz yaşam döngüsü ileti biçimini değiştirir Cihaz şablonu yaşam döngüsü Oluşturulan, güncelleştirilen ve silinenler de dahil olmak üzere yayımlanan cihaz şablonu değişikliklerini dışarı aktarın. Cihaz şablonu yaşam döngüsü ileti biçimini değiştirir Denetim günlükleri Uygulamadaki varlıklar için kullanıcı tarafından başlatılan güncelleştirmelerin günlükleri. Daha fazla bilgi edinmek için bkz . IoT Central uygulamanızdaki etkinlikleri izlemek için denetim günlüklerini kullanma Denetim günlüğü ileti biçimi İsteğe bağlı olarak, dışarı aktarılan veri miktarını azaltmak için filtreler ekleyin. Her veri dışarı aktarma türü için farklı filtre türleri vardır:
Veri türü Kullanılabilir filtreler Telemetri - Cihaz adına, cihaz kimliğine, cihaz şablonuna ve cihazın simülasyonu yapılmışsa göre filtreleyin
- Akışı yalnızca filtre koşullarına uyan telemetri verilerini içerecek şekilde filtreleyin
- Akışı yalnızca filtre koşullarıyla eşleşen özelliklere sahip cihazlardan telemetri içerecek şekilde filtreleyin
- Akışı yalnızca filtre koşuluna göre ileti özelliklerine sahip telemetriyi içerecek şekilde filtreleyin. İleti özellikleri (uygulama özellikleri olarak da bilinir) her telemetri iletisindeki anahtar-değer çiftleri paketinde gönderilir. İleti özelliği filtresi oluşturmak için, aradığınız ileti özellik anahtarını girin ve bir koşul belirtin. Yalnızca belirtilen filtre koşuluyla eşleşen özelliklere sahip telemetri iletileri dışarı aktarılır. IoT Hub belgelerinden uygulama özellikleri hakkında daha fazla bilgi edinin
Özellik değişiklikleri - Cihaz adına, cihaz kimliğine, cihaz şablonuna ve cihazın simülasyonu yapılmışsa göre filtreleyin
- Akışı yalnızca filtre koşullarına uyan özellik değişikliklerini içerecek şekilde filtreleyin
Cihaz bağlantısı - Cihaz adına, cihaz kimliğine, cihaz şablonuna, kuruluşlara ve cihazın simülasyonu yapılmışsa göre filtreleyin
- Akışı yalnızca filtre koşullarıyla eşleşen özelliklere sahip cihazlardan gelen değişiklikleri içerecek şekilde filtreleyin
Cihaz yaşam döngüsü - Cihaz adına, cihaz kimliğine, cihaz şablonuna ve cihazın sağlanıp sağlanmadığını, etkinleştirildiğini veya simülasyonu yapılmış olup olmadığını filtreleyin
- Akışı yalnızca filtre koşullarıyla eşleşen özelliklere sahip cihazlardan gelen değişiklikleri içerecek şekilde filtreleyin
Cihaz şablonu yaşam döngüsü - Cihaz şablonuna göre filtrele
Denetim günlükleri Yok İsteğe bağlı olarak, dışarı aktarılan iletileri ek anahtar-değer çifti meta verileriyle zenginleştirin. Telemetri, özellik değişiklikleri, cihaz bağlantısı ve cihaz yaşam döngüsü veri dışarı aktarma türleri için aşağıdaki zenginleştirmeler kullanılabilir:
- Özel dize: Her iletiye özel bir statik dize ekler. Herhangi bir anahtar girin ve herhangi bir dize değeri girin.
- Her iletiye eklenen özellik:
- Cihaz adı, cihaz şablonu adı, etkin, kuruluşlar, sağlanan ve simülasyon gibi cihaz meta verileri.
- Her ileti için bildirilen geçerli cihaz özelliği veya bulut özelliği değeri. Dışarı aktarılan ileti belirtilen özelliğe sahip olmayan bir cihazdan geliyorsa, dışarı aktarılan ileti zenginleştirmeyi almaz.
Dışarı aktarma hedefini yapılandırın:
Önceden oluşturduğunuz bir hedefi eklemek için + Hedef'i seçin veya Yeni bir hedef oluştur'u seçin.
Verilerinizi dışarı aktarmadan önce dönüştürmek için + Dönüştür'ü seçin. Daha fazla bilgi edinmek için bkz . Dışarı aktarma için IoT Central uygulamanızın içindeki verileri dönüştürme.
Tek bir dışarı aktarmaya en fazla beş hedef eklemek için + Hedef'i seçin.
Dışarı aktarmanızı ayarlamayı bitirdiğinizde Kaydet'i seçin. Birkaç dakika sonra verileriniz hedeflerinizde görünür.
Dışarı aktarmanızı izleme
IoT Central'da Veri dışarı aktarma sayfası, dışarı aktarmalarınızın durumunu denetlemenize olanak tanır. Ne kadar veri dışarı aktardığınızı ve dışarı aktarma hatalarını görmek için Azure İzleyici'yi de kullanabilirsiniz. PowerShell'deki sorguları veya Azure CLI'yı kullanarak Azure portalındaki grafiklerde dışarı aktarma ve cihaz durumu ölçümlerine erişebilirsiniz. Şu anda Azure İzleyici'de aşağıdaki veri dışarı aktarma ölçümlerini izleyebilirsiniz:
- Filtreler uygulanmadan önce dışarı aktarılması gereken ileti sayısı.
- Filtrelerden geçen ileti sayısı.
- Hedeflere başarıyla dışarı aktarılan ileti sayısı.
- Bulunan hata sayısı.
Daha fazla bilgi edinmek için bkz . Uygulama durumunu izleme.
Veri biçimleri
Aşağıdaki bölümlerde dışarı aktarılan verilerin biçimleri açıklanmaktadır:
Telemetri biçimi
Dışarı aktarılan her ileti, cihazın ileti gövdesinde gönderdiği iletinin tamamının normalleştirilmiş bir biçimini içerir. İleti JSON biçimindedir ve UTF-8 olarak kodlanmıştır. Her iletideki bilgiler şunları içerir:
applicationId
: IoT Central uygulamasının kimliği.messageSource
: İletinin kaynağı -telemetry
.deviceId
: Telemetri iletisini gönderen cihazın kimliği.schema
: Yük şemasının adı ve sürümü.templateId
: Cihaza atanan cihaz şablonunun kimliği.enqueuedTime
: IoT Central'ın bu iletiyi aldığı saat.enrichments
: Dışarı aktarmada ayarlanan tüm zenginleştirmeler.module
: Bu iletiyi gönderen IoT Edge modülü. Bu alan yalnızca ileti bir IoT Edge modülünden geliyorsa görünür.component
: Bu iletiyi gönderen bileşen. Bu alan yalnızca iletide gönderilen özellikler cihaz şablonunda bir bileşen olarak modellenmişse görüntülenirmessageProperties
: Cihazın iletiyle gönderdiği diğer özellikler. Bu özellikler bazen uygulama özellikleri olarak adlandırılır. IoT Hub belgelerinden daha fazla bilgi edinin.
İleti özellikleri
Telemetri iletileri hem meta veriler hem de telemetri yükü için özelliklere sahiptir. Önceki kod parçacığı ve gibi deviceId
enqueuedTime
sistem iletilerinin örneklerini gösterir. Sistem iletisi özellikleri hakkında daha fazla bilgi edinmek için bkz . Cihazdan buluta IoT Hub iletilerinin Sistem Özellikleri.
Telemetri iletilerinize özel meta veriler eklemeniz gerekiyorsa telemetri iletilerine özellikler ekleyebilirsiniz. Örneğin, cihaz iletiyi oluştururken bir zaman damgası eklemeniz gerekir.
Aşağıdaki kod parçacığı, cihazda oluşturduğunuzda özelliğin iletiye nasıl ekleneceğini iothub-creation-time-utc
gösterir:
Önemli
Bu zaman damgasının biçimi saat dilimi bilgisi olmadan UTC olmalıdır. Örneğin, 2021-04-21T11:30:16Z
geçerli, 2021-04-21T11:30:16-07:00
geçersiz.
async function sendTelemetry(deviceClient, index) {
console.log('Sending telemetry message %d...', index);
const msg = new Message(
JSON.stringify(
deviceTemperatureSensor.updateSensor().getCurrentTemperatureObject()
)
);
msg.properties.add("iothub-creation-time-utc", new Date().toISOString());
msg.contentType = 'application/json';
msg.contentEncoding = 'utf-8';
await deviceClient.sendEvent(msg);
}
Özellik değişiklikleri biçimi
Her ileti veya kayıt, cihaz ve bulut özelliklerindeki değişiklikleri temsil eder. Dışarı aktarılan iletideki bilgiler şunları içerir:
applicationId
: IoT Central uygulamasının kimliği.messageSource
: İletinin kaynağı -properties
.messageType
: ,cloudPropertyChange
devicePropertyDesiredChange
veyadevicePropertyReportedChange
.deviceId
: Telemetri iletisini gönderen cihazın kimliği.schema
: Yük şemasının adı ve sürümü.enqueuedTime
: IoT Central'ın bu değişikliği algıladığı saat.templateId
: Cihaza atanan cihaz şablonunun kimliği.properties
: Değişen özelliklerin ve değerlerin adları da dahil olmak üzere değişen özellikler dizisi. Özellik bir bileşen veya IoT Edge modülü içinde modellenmişse bileşen ve modül bilgileri dahil edilir.enrichments
: Dışarı aktarmada ayarlanan tüm zenginleştirmeler.
Cihaz bağlantısı değişiklikleri biçimi
Her ileti veya kayıt, tek bir cihazdan gelen bir bağlantı olayını temsil eder. Dışarı aktarılan iletideki bilgiler şunları içerir:
applicationId
: IoT Central uygulamasının kimliği.messageSource
: İletinin kaynağı -deviceConnectivity
.messageType
connected
: veyadisconnected
.deviceId
: Değiştirilen cihazın kimliği.schema
: Yük şemasının adı ve sürümü.templateId
: Cihaza atanan cihaz şablonunun kimliği.enqueuedTime
: Bu değişikliğin IoT Central'da gerçekleştiği saat.enrichments
: Dışarı aktarmada ayarlanan tüm zenginleştirmeler.
Cihaz yaşam döngüsü değişiklikleri biçimi
Her ileti veya kayıt, tek bir cihazda yapılan bir değişikliği temsil eder. Dışarı aktarılan iletideki bilgiler şunları içerir:
applicationId
: IoT Central uygulamasının kimliği.messageSource
: İletinin kaynağı -deviceLifecycle
.messageType
: Oluşan değişikliğin türü. Bunlardan biri:registered
,deleted
,provisioned
,enabled
,disabled
, ,displayNameChanged
vedeviceTemplateChanged
.deviceId
: Değiştirilen cihazın kimliği.schema
: Yük şemasının adı ve sürümü.templateId
: Cihaza atanan cihaz şablonunun kimliği.enqueuedTime
: Bu değişikliğin IoT Central'da gerçekleştiği saat.enrichments
: Dışarı aktarmada ayarlanan tüm zenginleştirmeler.
Cihaz şablonu yaşam döngüsü değişiklikleri biçimi
Her ileti veya kayıt, yayımlanmış tek bir cihaz şablonunda yapılan bir değişikliği temsil eder. Dışarı aktarılan iletideki bilgiler şunları içerir:
applicationId
: IoT Central uygulamasının kimliği.messageSource
: İletinin kaynağı -deviceTemplateLifecycle
.messageType
: ,created
updated
veyadeleted
.schema
: Yük şemasının adı ve sürümü.templateId
: Cihaza atanan cihaz şablonunun kimliği.enqueuedTime
: Bu değişikliğin IoT Central'da gerçekleştiği saat.enrichments
: Dışarı aktarmada ayarlanan tüm zenginleştirmeler.
Denetim günlüğü biçimi
Her denetim günlüğü iletisi, IoT Central uygulamasının içindeki denetlenebilir bir varlıkta kullanıcı tarafından başlatılan bir değişikliği temsil eder. Dışarı aktarılan iletideki bilgiler şunları içerir:
actor
: Varlığı değiştiren kullanıcı hakkındaki bilgiler.applicationId
: IoT Central uygulamasının kimliği.messageSource
: İletinin kaynağı -audit
.messageType
: Oluşan değişikliğin türü. Bunlardan biri:updated
,created
,deleted
.updated
: Yalnızca isemessageType
mevcutturupdated
. Güncelleştirme hakkında daha fazla ayrıntı sağlar.resource
: Değiştirilen varlığın ayrıntıları.schema
: Yük şemasının adı ve sürümü.deviceId
: Değiştirilen cihazın kimliği.enqueuedTime
: Bu değişikliğin IoT Central'da gerçekleştiği saat.enrichments
: Dışarı aktarmada ayarlanan tüm zenginleştirmeler.
Event Hubs için IoT Central, yeni ileti verilerini neredeyse gerçek zamanlı olarak olay hub'ınıza aktarır. Her iletinin iotcentral-device-id
kullanıcı özelliklerinde (uygulama özellikleri olarak da adlandırılır), , iotcentral-application-id
, iotcentral-message-source
ve iotcentral-message-type
otomatik olarak eklenir.
Sonraki adımlar
Event Hubs'a nasıl aktaracağınızı bildiğinize göre, önerilen bir sonraki adım Azure'a aktarma Veri Gezgini öğrenmektir.