Ölçümleri toplama ve taşıma

Şunlar için geçerlidir:IoT Edge 1.4 onay işareti IoT Edge 1.4

Azure İzleyici ve yerleşik ölçüm tümleştirmesi kullanarak IoT Edge filonuzu uzaktan izleyebilirsiniz. Cihazınızda bu özelliği etkinleştirmek için metrics-collector modülünü dağıtımınıza ekleyin ve modül ölçümlerini toplayıp Azure İzleyici'ye aktaracak şekilde yapılandırın.

IoT Edge cihazınızda izlemeyi yapılandırmak için Öğretici: IoT Edge cihazları izleme'yi izleyin. Ölçüm toplayıcı modülünü cihazınıza eklemeyi öğreneceksiniz. Bu makalede izleme mimarisine genel bir bakış sağlanır ve cihazınızda ölçümleri yapılandırma seçenekleriniz açıklanır.

Azure İzleyici ile IoT Edge tümleştirmesi(4:06)

Mimari

IoT Hub ile ölçüm izleme mimarisinin ekran görüntüsü.

Not Açıklama
1 Tüm modüllerin Prometheus veri modelini kullanarak ölçümleri yayması gerekir. Yerleşik ölçümler varsayılan olarak geniş iş yükü görünürlüğü sağlarken, izleme çözümünü geliştirmek amacıyla senaryoya özgü ölçümleri yaymak için özel modüller de kullanılabilir. Özel ölçüm ekleme makalesinde açık kaynak kitaplıkları kullanarak özel modülleri izleme hakkında bilgi edinin.
2️ Metrics-collector modülü, iş yükü modülü ölçümlerini toplayan ve bunları cihaz dışına aktaran Microsoft tarafından sağlanan bir IoT Edge modülüdür. Ölçüm koleksiyonu bir çekme modeli kullanır. Koleksiyon sıklığı, uç noktalar ve filtreler modülden çıkan verileri denetlemek için yapılandırılabilir. Daha fazla bilgi için bu makalenin devamında yer alan ölçüm toplayıcı yapılandırması bölümüne bakın.
3️ Ölçüm toplayıcı modülünden buluta ölçüm göndermek için iki seçeneğiniz vardır. 1. seçenek ölçümleri Log Analytics'e gönderir. 1 Toplanan ölçümler, adlı InsightsMetricssabit, yerel bir tablo kullanılarak belirtilen Log Analytics çalışma alanına aktarılır. Bu tablonun şeması Prometheus ölçümleri veri modeliyle uyumludur.

Bu seçenek, giden bağlantı noktası 443'te çalışma alanına erişim gerektirir. Log Analytics çalışma alanı kimliği ve anahtarı modül yapılandırmasının bir parçası olarak belirtilmelidir. Kısıtlı ağlarda etkinleştirmek için bu makalenin devamında yer alan Kısıtlı ağ erişimi senaryolarında etkinleştirme bölümüne bakın.
4️ Her ölçüm girişi, modül yapılandırmasının bir parçası olarak belirtilen öğesini içerirResourceId. Bu ilişkilendirme, ölçümü belirtilen kaynağa otomatik olarak bağlar (örneğin, IoT Hub). Sonuç olarak, seçilen IoT Edge çalışma kitabı şablonları kaynağa yönelik sorgular vererek ölçümleri alabilir.

Bu yaklaşım, birden çok IoT hub'ının tek bir Log Analytics çalışma alanını ölçüm veritabanı olarak güvenli bir şekilde paylaşmasına da olanak tanır.
5️ 2. seçenek ölçümleri IoT Hub gönderir. 1 Toplayıcı modülü, toplanan ölçümleri modül aracılığıyla UTF-8 ile kodlanmış JSON cihazdan edgeHubbuluta iletiler olarak gönderecek şekilde yapılandırılabilir. Bu seçenek, yalnızca IoT Hub uç noktasına dış erişime izin verilen kilitli IoT Edge cihazların izlenmesini sağlar. Alt cihazların yalnızca üst cihazlarına erişebildiği iç içe yerleştirilmiş bir yapılandırmada alt IoT Edge cihazlarının izlenmesini de sağlar.
6️ Ölçümler IoT Hub aracılığıyla yönlendirildiğinde bir (tek seferlik) bulut iş akışının ayarlanması gerekir. İş akışı, metrics-collector modülünden gelen iletileri işler ve bunları Log Analytics çalışma alanına gönderir. İş akışı, bu isteğe bağlı yol üzerinden gelen ölçümler için bile seçilen görselleştirmeler ve uyarılar işlevselliğini etkinleştirir. Bu bulut iş akışını ayarlama hakkında ayrıntılı bilgi için IoT Hub aracılığıyla ölçümleri yönlendirme bölümüne bakın.

1 Şu anda, ölçümleri IoT Edge cihazdan Log Analytics'e doğrudan taşımak için 1 seçeneğini kullanmak, minimum kurulum gerektiren daha basit bir yoldur. İlk seçenek, belirli senaryonuz seçenek 2 yaklaşımını gerektirmedikçe tercih edilir, böylece IoT Edge cihaz yalnızca IoT Hub ile iletişim kurar.

Ölçüm toplayıcı modülü

Modül ölçümlerini toplamak ve Azure İzleyici'ye göndermek için IoT Edge dağıtımına Microsoft tarafından sağlanan bir ölçüm toplayıcı modülü eklenebilir. Modül kodu açık kaynaktır ve IoT Edge GitHub deposunda kullanılabilir.

Ölçüm toplayıcı modülü Linux X64, ARM32, ARM64 ve Windows X64'i (sürüm 1809) destekleyen çok kemerli bir Docker kapsayıcı görüntüsü olarak sağlanır. adresinde genel kullanıma açıktır mcr.microsoft.com/azureiotedge-metrics-collector.

Ayrıca IoT Edge Modülü Marketi'nde de kullanılabilir.

Ölçüm toplayıcı yapılandırması

Ölçüm toplayıcısı için tüm yapılandırmalar ortam değişkenleri kullanılarak yapılır. En düşük düzeyde, bu tabloda Gerekli olarak işaretlenen değişkenlerin belirtilmesi gerekir.

Ortam değişkeni adı Description
ResourceId Cihazın iletişim kurduğunu IoT hub'ının kaynak kimliği. Daha fazla bilgi için Kaynak Kimliği bölümüne bakın.

Gerekli

Varsayılan değer: yok
UploadTarget Ölçümlerin HTTPS üzerinden doğrudan Azure İzleyici'ye mi yoksa D2C iletileri olarak IoT Hub mı gönderileceğini denetler. Daha fazla bilgi için bkz. karşıya yükleme hedefi.

AzureMonitor veya IoTMessage olabilir

Gerekli değil

Varsayılan değer: AzureMonitor
LogAnalyticsWorkspaceId Log Analytics çalışma alanı kimliği.

YalnızcaUploadTargetAzureMonitor ise gereklidir

Varsayılan değer: yok
LogAnalyticsSharedKey Log Analytics çalışma alanı anahtarı.

YalnızcaUploadTargetAzureMonitor ise gereklidir

Varsayılan değer: yok
ScrapeFrequencyInSecs Ölçümlerin toplanması ve taşınması için saniye cinsinden yinelenen zaman aralığı.

Örnek: 600

Gerekli değil

Varsayılan değer: 300
MetricsEndpointsCSV Prometheus ölçümlerini toplamak için virgülle ayrılmış uç noktaların listesi. Ölçüm toplayacak tüm modül uç noktaları bu listede görünmelidir.

Örnek: http://edgeAgent:9600/metrics, http://edgeHub:9600/metrics, http://MetricsSpewer:9417/metrics

Gerekli değil

Varsayılan değer: http://edgeHub:9600/metrics, http://edgeAgent:9600/metrics
AllowedMetrics Toplayacak ölçümlerin listesi, diğer tüm ölçümler yoksayılır. Devre dışı bırakmak için boş bir dizeye ayarlayın. Daha fazla bilgi için bkz. listelere izin verme ve izin verme.

Örnek: metricToScrape{quantile=0.99}[endpoint=http://MetricsSpewer:9417/metrics]

Gerekli değil

Varsayılan değer: boş
BlockedMetrics Yoksayılan ölçümlerin listesi. AllowedMetrics'i geçersiz kılar, bu nedenle her iki listede de yer alan bir ölçüm bildirilir. Daha fazla bilgi için bkz. listelere izin verme ve izin verme.

Örnek: metricToIgnore{quantile=0.5}[endpoint=http://VeryNoisyModule:9001/metrics], docker_container_disk_write_bytes

Gerekli değil

Varsayılan değer: boş
CompressForUpload Ölçümleri karşıya yüklerken sıkıştırmanın kullanılıp kullanılmayacağı kontrol edilir. Tüm karşıya yükleme hedefleri için geçerlidir.

Örnek: true

Gerekli değil

Varsayılan değer: true
AzureDomain Ölçümleri doğrudan Log Analytics'e alırken kullanılacak en üst düzey Azure etki alanını belirtir.

Örnek: azure.us

Gerekli değil

Varsayılan değer: azure.com

Kaynak kimliği

Ölçüm toplayıcı modülü, IoT Edge cihazının ait olduğu IoT hub'ının Azure Resource Manager kimliğini gerektirir. Bu kimliği ResourceID ortam değişkeninin değeri olarak belirtin.

Kaynak kimliği aşağıdaki biçimi alır:

/subscriptions/<subscription id>/resourceGroups/<resource group name>/providers/Microsoft.Devices/IoTHubs/<iot hub name>

Kaynak kimliğini Azure portal IoT hub'ının Özellikler sayfasında bulabilirsiniz.

IoT Hub özelliklerden kaynak kimliğinizin nasıl alınacaklarını gösteren ekran görüntüsü.

Veya az resource show komutuyla kimliği alırsınız:

az resource show -g <resource group> -n <hub name> --resource-type "Microsoft.Devices/IoTHubs"

Hedefi karşıya yükleme

UploadTarget yapılandırma seçeneği ölçümlerin doğrudan Azure İzleyici'ye mi yoksa IoT Hub mı gönderileceğini denetler.

UploadTarget'ıIoTMessage olarak ayarlarsanız modül ölçümleriniz IoT iletileri olarak yayımlanır. Bu iletiler uç noktasından /messages/modules/<module name>/outputs/metricOutputUTF8 ile kodlanmış json olarak gösterilir. Bunun biçimi aşağıdaki gibidir:

[{
    "TimeGeneratedUtc": "<time generated>",
    "Name": "<prometheus metric name>",
    "Value": <decimal value>,
    "Label": {
        "<label name>": "<label value>"
    }
}, {
    "TimeGeneratedUtc": "2020-07-28T20:00:43.2770247Z",
    "Name": "docker_container_disk_write_bytes",
    "Value": 0.0,
    "Label": {
        "name": "AzureMonitorForIotEdgeModule"
    }
}]

Listelere izin verme ve listelere izin verme

AllowedMetrics ve BlockedMetrics yapılandırma seçenekleri, ölçüm seçicilerinin yer veya virgülle ayrılmış listelerini kaplar. Bir ölçüm listeyle eşleşir ve her iki listedeki bir veya daha fazla ölçümle eşleşiyorsa dahil edilir veya dışlanır.

Ölçüm seçicileri , PromQL sorgu dilinin bir alt kümesine benzer bir biçim kullanır.

metricToSelect{quantile=0.5,otherLabel=~Re[ge]*|x}[http://VeryNoisyModule:9001/metrics]

Ölçüm seçicileri üç bölümden oluşur:

Ölçüm adı (metricToSelect).

  • Ölçüm adlarında * joker karakterler (herhangi bir karakter) ve ? (herhangi bir tek karakter) kullanılabilir. Örneğin, *CPU ile eşleşip maxCPUminCPU eşleşmez CPUMaximum. ???CPU ile eşleşip eşleşmez maxCPUminCPUmaximumCPU.
  • Bu bileşen bir ölçüm seçicide gereklidir.

Etiket tabanlı seçiciler ({quantile=0.5,otherLabel=~Re[ge]*|x}).

  • Küme ayraçlarına birden çok ölçüm değeri eklenebilir. Değerler virgülle ayrılmış olmalıdır.
  • Seçicideki en az tüm etiketler varsa ve aynı zamanda eşleşiyorsa ölçüm eşleştirilir.
  • PromQL gibi aşağıdaki eşleşen işleçlere de izin verilir.
    • = Etiketleri sağlanan dizeye tam olarak eşit (büyük/küçük harfe duyarlı) eşleştirin.
    • != Etiketleri sağlanan dizeye tam olarak eşit olmayan şekilde eşleştirin.
    • =~ Etiketleri sağlanan bir regex ile eşleştirin. Ex: label=~CPU|Mem|[0-9]*
    • !~ Sağlanan bir regex'e uymayan etiketleri eşleştirin.
    • Regex tamamen sabitlenmiştir (A ^ ve $ her regex'in başlangıcına ve sonuna otomatik olarak eklenir)
    • Bu bileşen bir ölçüm seçicide isteğe bağlıdır.

Uç nokta seçici ([http://VeryNoisyModule:9001/metrics]).

  • URL, içinde listelenen bir URL ile MetricsEndpointsCSVtam olarak eşleşmelidir.
  • Bu bileşen bir ölçüm seçicide isteğe bağlıdır.

Ölçümün seçilecek belirli bir seçicinin tüm bölümleriyle eşleşmesi gerekir. Adla eşleşmeli ve eşleşen değerlerle aynı etiketlerin tümüne sahip olmalı ve verilen uç noktadan gelmelidir. Örneğin, mem{quantile=0.5,otherLabel=foobar}[http://VeryNoisyModule:9001/metrics] seçici mem{quantile=0.5,otherLabel=~foo|bar}[http://VeryNoisyModule:9001/metrics]ile eşleşmez. Ve benzeri davranış yerine veya benzeri davranışlar oluşturmak için birden çok seçici kullanılmalıdır.

Örneğin, bir modüldeki module1 herhangi bir etiketle özel ölçüme mem izin vermek ancak yalnızca etiketiyle agg=p99aynı ölçüme module2 izin vermek içinAllowedMetrics, öğesine aşağıdaki seçici eklenebilir:

mem{}[http://module1:9001/metrics] mem{agg="p99"}[http://module2:9001/metrics]

Veya, özel ölçümlere mem izin vermek ve cpu herhangi bir etiket veya uç nokta için aşağıdakileri öğesine AllowedMetricsekleyin:

mem cpu

Kısıtlı ağ erişimi senaryolarında etkinleştirme

Ölçümleri doğrudan Log Analytics çalışma alanına gönderiyorsanız aşağıdaki URL'lere giden erişime izin verin:

  • https://<LOG_ANALYTICS_WORKSPACE_ID>.ods.opinsights.azure.com/*
  • https://<LOG_ANALYTICS_WORKSPACE_ID>.oms.opinsights.azure.com/*

Proxy ile ilgili dikkat edilmesi gerekenler

metrics-collector modülü .NET Core'da yazılmıştır. Bu nedenle , bir ara sunucu üzerinden iletişime izin vermek için sistem modülleriyle aynı yönergeleri kullanın.

Yerel modüllerden ölçüm toplama http protokolünü kullanır. Ortam değişkenini ayarlayarak yerel iletişimi ara sunucudan geçmeyi dışlayın NO_PROXY .

Değeri, dışlanması gereken ana bilgisayar adlarının virgülle ayrılmış listesine ayarlayın NO_PROXY . Konak adları için modül adlarını kullanın. Örneğin: edgeHub,edgeAgent,myCustomModule.

Yol ölçümleri

Bazen ölçümleri doğrudan Log Analytics'e göndermek yerine IoT Hub aracılığıyla almak gerekir. Örneğin, alt cihazların yalnızca üst cihazlarının IoT Edge hub'ına eriştiği iç içe yerleştirilmiş bir yapılandırmada IoT Edge cihazları izlerken. Başka bir örnek, yalnızca IoT Hub giden ağ erişimine sahip bir IoT Edge cihazı dağıtırken ortaya çıkar.

Bu senaryoda izlemeyi etkinleştirmek için ölçüm toplayıcı modülü edgeHub modülü aracılığıyla ölçümleri cihazdan buluta (D2C) ileti olarak gönderecek şekilde yapılandırılabilir. Bu özellik, toplayıcı yapılandırmasındaUploadTarget ortam değişkeni IoTMessage olarak ayarlanarak açılabilir.

İpucu

Ölçüm iletilerini toplayıcı modülünden IoT Hub teslim etmek için bir edgeHub yolu eklemeyi unutmayın. Şuna benzer: FROM /messages/modules/replace-with-collector-module-name/* INTO $upstream.

Bu seçenek, IoT Hub Log Analytics çalışma alanına gelen ölçüm iletilerini teslim etmek için ek kurulum (bulut iş akışı) gerektirir. Bu ayar yapılmadan, tümleştirmenin seçilmiş görselleştirmeler ve uyarılar gibi diğer bölümleri çalışmaz.

Not

Bu seçenekle ek maliyetler hakkında bilgi edin. Ölçüm iletileri, IoT Hub ileti kotanıza göre sayılır. Log Analytics alımı ve bulut iş akışı kaynakları için de ücretlendirilirsiniz.

Örnek bulut iş akışı

IoT Hub'den Log Analytics'e ölçüm iletileri teslim eden bir bulut iş akışı, IoT Edge günlüğü ve izleme örneğinin bir parçası olarak kullanılabilir. Örnek, mevcut bulut kaynaklarına dağıtılabilir veya bir üretim dağıtım başvurusu görevi görebilir.

Sonraki adımlar

Azure İzleyici'nin etkinleştirmiş olduğu seçilmiş görselleştirme türlerini keşfedin.