Ölçümleri toplama ve taşıma

Şunlar için geçerlidir:IoT Edge 1.4 checkmark IoT Edge 1.4

Önemli

IoT Edge 1.4 desteklenen sürümdür. Önceki bir sürümdeyseniz bkz. IoT Edge’i güncelleştirme.

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ını izleme'yi izleyin. Ölçüm toplayıcı modülünü cihazınıza eklemeyi öğreneceksiniz. Bu makale, izleme mimarisine genel bir bakış sağlar ve cihazınızda ölçümleri yapılandırma seçeneklerinizi açıklar.

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

Mimari

Screenshot of the metrics monitoring architecture with IoT Hub.

Dekont Tanım
Kategori 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 üzere senaryoya özgü ölçümleri yaymak için özel modüller de kullanılabilir. Özel ölçümler ekleme makalesinde açık kaynak kitaplıkları kullanarak özel modülleri nasıl izleyebileceğinizi öğrenin.
2️ Ölçüm toplayıcı modülü, iş yükü modülü ölçümlerini toplayan ve bunları cihazdan dışarı 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 alınan veri çıkışını 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 alını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 (örneğin, IoT Hub) otomatik olarak bağlar. Sonuç olarak, seçilen IoT Edge çalışma kitabı şablonları kaynağa yönelik sorgular düzenleyerek ö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'a gönderir.1 Toplayıcı modülü, toplanan ölçümleri modül aracılığıyla edgeHub UTF-8 kodlanmış JSON cihazdan buluta 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ın izlenmesinin kilidini açar. Ayrıca 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 sağlar.
6️ Ölçümler IoT Hub üzerinden 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 cihazından Log Analytics'e doğrudan taşımak için 1 . seçeneği kullanmak, minimum kurulum gerektiren daha basit bir yoldur. IoT Edge cihazının yalnızca IoT Hub ile iletişim kurması için özel senaryonuz seçenek 2 yaklaşımını talep etmediği sürece ilk seçenek tercih edilir.

Ö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 herkese açık olarak kullanılabilir mcr.microsoft.com/azureiotedge-metrics-collector.

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

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

Ölçüm toplayıcı 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.

Environment variable name Tanım
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 IoT Hub'a D2C iletileri olarak 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ızca UploadTarget AzureMonitor olduğunda gereklidir

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

Yalnızca UploadTarget AzureMonitor olduğunda 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çümleri 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ğı denetler. 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. ResourceID ortam değişkeninin değeri olarak bu kimliği 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ındaki IoT hub'ının Özellikler sayfasında bulabilirsiniz.

Screenshot the shows how to retrieve your resource ID from the IoT Hub properties.

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'a mı gönderileceğini denetler.

UploadTarget'i IoTMessage olarak ayarlarsanız modül ölçümleriniz IoT iletileri olarak yayımlanır. Bu iletiler uç noktasından /messages/modules/<metrics collector module name>/outputs/metricOutputUTF8 ile kodlanmış json olarak gönderilir. Örneğin, IoT Edge Ölçüm Toplayıcı modülünüzün adı IoTEdgeMetricsCollector ise uç nokta olur /messages/modules/IoTEdgeMetricsCollector/outputs/metricOutput. 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 izin verme

AllowedMetrics ve BlockedMetrics yapılandırma seçenekleri, metrik seçicilerin yer veya virgülle ayrılmış listelerini alır. 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çiciler üç 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 eşleşmez minCPUmaxCPUCPUMaximum. ???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 mevcutsa 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 kayıt defteriyle 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, ö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, ölçüm seçicide isteğe bağlıdır.

Bir ö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ı etiketlere 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çin, öğesine AllowedMetricsaş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 ekleyin AllowedMetrics:

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

Ölçüm toplayıcı modülü .NET Core'da yazılı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 koleksiyonu http protokolünü kullanır. Ortam değişkenini ayarlayarak yerel iletişimin ara sunucu üzerinden geçmesini 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.

Rota ölçümleri

Bazen ölçümleri doğrudan Log Analytics'e göndermek yerine IoT Hub üzerinden 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ını izlerken. Bir diğer örnek de, yalnızca IoT Hub'a giden ağ erişimine sahip bir IoT Edge cihazı dağıtma işlemidir.

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. Özellik, toplayıcı yapılandırmasında UploadTargetortam değişkeni IoTMessage olarak ayarlanarak açılabilir.

Bahşiş

Ölçüm iletilerini toplayıcı modülünden IoT Hub'a 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'a gelen ölçüm iletilerini Log Analytics çalışma alanına teslim etmek için bir bulut iş akışı olan ek kurulum gerektirir. Bu ayar yapılmadan, tümleştirmenin seçilmiş görselleştirmeler ve uyarılar gibi diğer bölümleri çalışmaz.

Dekont

Bu seçenekle ek maliyetlerin farkında olun. Ölçüm iletileri IoT Hub ileti kotanıza göre sayılır. Ayrıca Log Analytics alımı ve bulut iş akışı kaynakları için de ücretlendirilirsiniz.

Örnek bulut iş akışı

IoT Hub'dan Log Analytics'e ölçüm iletileri teslim eden bir bulut iş akışı, IoT Edge günlük kaydı 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.