Zbieranie i transport metryk

Dotyczy:Znacznik wyboru usługi IoT Edge 1.5 IoT Edge 1.5 Znacznik wyboru usługi IoT Edge 1.4 IoT Edge 1.4

Ważne

Obsługiwane są wersje usługi IoT Edge 1.5 LTS i IoT Edge 1.4 LTS. Usługa IoT Edge 1.4 LTS kończy się 12 listopada 2024 r. Jeśli korzystasz z wcześniejszej wersji, zobacz aktualizację Azure IoT Edge.

Możesz zdalnie monitorować flotę usługi IoT Edge przy użyciu usługi Azure Monitor i wbudowanej integracji metryk. Aby włączyć tę funkcję na urządzeniu, dodaj moduł moduł zbierający metryki do wdrożenia i skonfiguruj go do zbierania i transportu metryk modułu do usługi Azure Monitor.

Aby skonfigurować monitorowanie na urządzeniu usługi IoT Edge, wykonaj czynności opisane w artykule Samouczek: monitorowanie urządzeń usługi IoT Edge. Dowiesz się, jak dodać moduł metrics-collector do urządzenia. Ten artykuł zawiera omówienie architektury monitorowania i objaśnienie opcji konfigurowania metryk na urządzeniu.

Integracja usługi IoT Edge z usługą Azure Monitor (4:06)

Architektura

Zrzut ekranu przedstawiający architekturę monitorowania metryk za pomocą usługi IoT Hub.

Uwaga opis
1 Wszystkie moduły muszą emitować metryki przy użyciu modelu danych Prometheus. Chociaż wbudowane metryki umożliwiają domyślnie szeroką widoczność obciążenia, moduły niestandardowe mogą być również używane do emitowania metryk specyficznych dla scenariusza w celu ulepszenia rozwiązania do monitorowania. Dowiedz się, jak instrumentować moduły niestandardowe przy użyciu bibliotek typu open source w artykule Dodawanie metryk niestandardowych.
2️ Moduł modułu zbierającego metryki jest modułem usługi IoT Edge dostarczanym przez firmę Microsoft, który zbiera metryki modułu obciążenia i transportuje je poza urządzeniem. Kolekcja metryk używa modelu ściągania . Częstotliwość zbierania, punkty końcowe i filtry można skonfigurować do kontrolowania danych wychodzących z modułu. Aby uzyskać więcej informacji, zobacz sekcję konfiguracji modułu zbierającego metryki w dalszej części tego artykułu.
3️ Dostępne są dwie opcje wysyłania metryk z modułu modułu metrics-collector do chmury. Opcja 1 wysyła metryki do usługi Log Analytics.1 Zebrane metryki są pozyskiwane do określonego obszaru roboczego usługi Log Analytics przy użyciu stałej, natywnej tabeli o nazwie InsightsMetrics. Schemat tej tabeli jest zgodny z modelem danych metryk Prometheus.

Ta opcja wymaga dostępu do obszaru roboczego na porcie wychodzącym 443. Identyfikator i klucz obszaru roboczego usługi Log Analytics należy określić jako część konfiguracji modułu. Aby włączyć w sieciach z ograniczeniami, zobacz Włączanie w scenariuszach z ograniczonym dostępem do sieci w dalszej części tego artykułu.
4️ Każdy wpis metryki zawiera ResourceId element określony w ramach konfiguracji modułu. To skojarzenie automatycznie łączy metryki z określonym zasobem (na przykład usługi IoT Hub). W związku z tym wyselekcjonowane szablony skoroszytów usługi IoT Edge mogą pobierać metryki, wydając zapytania względem zasobu.

Takie podejście umożliwia również wielu centrom IoT bezpieczne udostępnianie jednego obszaru roboczego usługi Log Analytics jako bazy danych metryk.
5️ Opcja 2 wysyła metryki do usługi IoT Hub.1 Moduł modułu zbierającego można skonfigurować do wysyłania zebranych metryk jako zakodowanych w formacie UTF-8 komunikatów JSON z urządzenia do chmury za pośrednictwem modułuedgeHub. Ta opcja umożliwia monitorowanie zablokowanych urządzeń usługi IoT Edge, które mogą uzyskiwać dostęp zewnętrzny tylko do punktu końcowego usługi IoT Hub. Umożliwia również monitorowanie podrzędnych urządzeń usługi IoT Edge w konfiguracji zagnieżdżonej, w której urządzenia podrzędne mogą uzyskiwać dostęp tylko do urządzenia nadrzędnego.
6️ Gdy metryki są kierowane za pośrednictwem usługi IoT Hub, należy skonfigurować (jednorazowy) przepływ pracy w chmurze. Przepływ pracy przetwarza komunikaty pochodzące z modułu metrics-collector i wysyła je do obszaru roboczego usługi Log Analytics. Przepływ pracy umożliwia wyselekcjonowane wizualizacje i funkcje alertów nawet w przypadku metryk przychodzących za pośrednictwem tej opcjonalnej ścieżki. Zobacz sekcję Route metrics through IoT Hub (Metryki tras za pośrednictwem usługi IoT Hub ), aby uzyskać szczegółowe informacje na temat sposobu konfigurowania tego przepływu pracy w chmurze.

1 Obecnie użycie opcji 1 do bezpośredniego transportu metryk do usługi Log Analytics z urządzenia usługi IoT Edge jest prostszą ścieżką, która wymaga minimalnej konfiguracji. Pierwsza opcja jest preferowana, chyba że dany scenariusz wymaga podejścia opcji 2 , aby urządzenie usługi IoT Edge komunikowało się tylko z usługą IoT Hub.

Moduł modułu zbierającego metryki

Moduł zbierający metryki dostarczony przez firmę Microsoft można dodać do wdrożenia usługi IoT Edge w celu zbierania metryk modułu i wysyłania ich do usługi Azure Monitor. Kod modułu jest typu open source i dostępny w repozytorium GitHub usługi IoT Edge.

Moduł modułu zbierającego metryki jest dostarczany jako obraz kontenera platformy Docker z wieloma łukami, który obsługuje systemy Linux X64, ARM32, ARM64 i Windows X64 (wersja 1809). Jest on publicznie dostępny pod adresem mcr.microsoft.com/azureiotedge-metrics-collector.

Jest również dostępna w witrynie Marketplace modułów usługi IoT Edge.

Konfiguracja modułu zbierającego metryki

Cała konfiguracja modułu zbierającego metryki odbywa się przy użyciu zmiennych środowiskowych. Co najmniej zmienne zanotowane w tej tabeli oznaczone jako Wymagane należy określić.

Environment variable name opis
ResourceId Identyfikator zasobu centrum IoT, z którymi urządzenie komunikuje się. Aby uzyskać więcej informacji, zobacz sekcję Identyfikator zasobu .

Wymagane

Wartość domyślna: brak
UploadTarget Określa, czy metryki są wysyłane bezpośrednio do usługi Azure Monitor za pośrednictwem protokołu HTTPS, czy do usługi IoT Hub jako komunikaty D2C. Aby uzyskać więcej informacji, zobacz przekazywanie elementu docelowego.

Może to być azureMonitor lub IoTMessage

Niewymagane

Wartość domyślna: AzureMonitor
LogAnalyticsWorkspaceId Identyfikator obszaru roboczego usługi Log Analytics.

Wymagane tylko wtedy, gdy parametr UploadTarget to AzureMonitor

Wartość domyślna: brak
LogAnalyticsSharedKey Klucz obszaru roboczego usługi Log Analytics.

Wymagane tylko wtedy, gdy parametr UploadTarget to AzureMonitor

Wartość domyślna: brak
ScrapeFrequencyInSecs Cykliczny interwał czasu w sekundach, w których należy zbierać i transportować metryki.

Przykład: 600

Niewymagane

Wartość domyślna: 300
MetricsEndpointsCSV Rozdzielona przecinkami lista punktów końcowych do zbierania metryk Rozwiązania Prometheus. Wszystkie punkty końcowe modułu do zbierania metryk z programu muszą być wyświetlane na tej liście.

Przykład: http://edgeAgent:9600/metrics, , http://edgeHub:9600/metricshttp://MetricsSpewer:9417/metrics

Niewymagane

Wartość domyślna: http://edgeHub:9600/metrics, http://edgeAgent:9600/metrics
AllowedMetrics Lista metryk do zebrania— wszystkie inne metryki są ignorowane. Ustaw wartość na pusty ciąg, aby wyłączyć. Aby uzyskać więcej informacji, zobacz zezwalanie na listy i nie zezwalanie na nie.

Przykład: metricToScrape{quantile=0.99}[endpoint=http://MetricsSpewer:9417/metrics]

Niewymagane

Wartość domyślna: pusta
BlockedMetrics Lista metryk do zignorowania. Zastępuje dozwolone metryki, więc metryka nie jest zgłaszana, jeśli znajduje się na obu listach. Aby uzyskać więcej informacji, zobacz zezwalanie na listy i nie zezwalanie na nie.

Przykład: metricToIgnore{quantile=0.5}[endpoint=http://VeryNoisyModule:9001/metrics], docker_container_disk_write_bytes

Niewymagane

Wartość domyślna: pusta
CompressForUpload Określa, czy kompresja powinna być używana podczas przekazywania metryk. Dotyczy wszystkich elementów docelowych przekazywania.

Przykład: true

Niewymagane

Wartość domyślna: true
AzureDomain Określa domenę najwyższego poziomu platformy Azure do użycia podczas pozyskiwania metryk bezpośrednio do usługi Log Analytics.

Przykład: azure.us

Niewymagane

Wartość domyślna: azure.com

Identyfikator zasobu

Moduł modułu zbierającego metryki wymaga identyfikatora usługi Azure Resource Manager centrum IoT Hub, do którego należy urządzenie usługi IoT Edge. Podaj ten identyfikator jako wartość zmiennej środowiskowej ResourceID .

Identyfikator zasobu ma następujący format:

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

Identyfikator zasobu można znaleźć na stronie Właściwości centrum IoT Hub w witrynie Azure Portal.

Zrzut ekranu przedstawiający sposób pobierania identyfikatora zasobu z właściwości usługi IoT Hub.

Możesz też pobrać identyfikator za pomocą polecenia az resource show :

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

Przekaż element docelowy

Opcja konfiguracji UploadTarget określa, czy metryki są wysyłane bezpośrednio do usługi Azure Monitor, czy do usługi IoT Hub.

Jeśli ustawisz wartość UploadTarget na IoTMessage, metryki modułu zostaną opublikowane jako komunikaty IoT. Te komunikaty są emitowane jako kodowane w formacie UTF8 w formacie json z punktu końcowego /messages/modules/<metrics collector module name>/outputs/metricOutput. Jeśli na przykład moduł zbierający metryki usługi IoT Edge ma nazwę IoTEdgeMetricsCollector, punkt końcowy to /messages/modules/IoTEdgeMetricsCollector/outputs/metricOutput. Format jest następujący:

[{
    "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"
    }
}]

Zezwalaj i nie zezwalaj na listy

Opcje AllowedMetrics konfiguracji i BlockedMetrics zajmują listy selektorów metryk rozdzielane spacjami lub przecinkami. Metryka jest zgodna z listą i jest dołączona lub wykluczona, jeśli pasuje do co najmniej jednej metryki na liście.

Selektory metryk używają formatu podobnego do podzestawu języka zapytań PromQL .

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

Selektory metryk składają się z trzech części:

Nazwa metryki (metricToSelect).

  • Symbole wieloznaczne * (dowolne znaki) i ? (dowolny pojedynczy znak) mogą być używane w nazwach metryk. Na przykład *CPU będzie pasował maxCPU do elementu , minCPU ale nie CPUMaximum. ???CPU będzie pasował maxCPU i minCPU ale nie maximumCPU.
  • Ten składnik jest wymagany w selektorze metryk.

Selektory oparte na etykietach ({quantile=0.5,otherLabel=~Re[ge]*|x}).

  • W nawiasach klamrowych można uwzględnić wiele wartości metryk. Wartości powinny być rozdzielone przecinkami.
  • Metryka jest dopasowywana, jeśli co najmniej wszystkie etykiety w selektorze są obecne, a także zgodne.
  • Podobnie jak PromQL, następujące zgodne operatory są dozwolone.
    • = Dopasuj etykiety dokładnie do podanego ciągu (z uwzględnieniem wielkości liter).
    • != Dopasuj etykiety nie do końca równe podanemu ciągowi.
    • =~ Dopasuj etykiety do podanego wyrażenia regularnego. Ex: label=~CPU|Mem|[0-9]*
    • !~ Dopasuj etykiety, które nie pasują do podanego wyrażenia regularnego.
    • Wyrażenie regularne jest w pełni zakotwiczone (A ^ i $ są automatycznie dodawane do początku i końca każdego wyrażenia regularnego)
    • Ten składnik jest opcjonalny w selektorze metryk.

Selektor punktu końcowego ([http://VeryNoisyModule:9001/metrics]).

  • Adres URL powinien być dokładnie zgodny z adresem URL wymienionym w MetricsEndpointsCSVpliku .
  • Ten składnik jest opcjonalny w selektorze metryk.

Metryka musi być zgodna ze wszystkimi częściami wybranego selektora. Musi być zgodna z nazwą i mieć wszystkie te same etykiety z pasującymi wartościami i pochodzić z danego punktu końcowego. Na przykład mem{quantile=0.5,otherLabel=foobar}[http://VeryNoisyModule:9001/metrics] nie pasuje do selektora mem{quantile=0.5,otherLabel=~foo|bar}[http://VeryNoisyModule:9001/metrics]. Wiele selektorów należy użyć do tworzenia lub podobnych zachowań zamiast zachowania przypominającego i.

Aby na przykład zezwolić na niestandardową metrykę mem z dowolną etykietą z modułu module1 , ale zezwalać na tę samą metrykę z module2 etykiety agg=p99, można dodać następujący selektor do AllowedMetricselementu :

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

Lub, aby zezwolić na metryki mem niestandardowe i cpu dla dowolnych etykiet lub punktu końcowego, dodaj następujące polecenie do AllowedMetrics:

mem cpu

Włączanie w scenariuszach z ograniczonym dostępem do sieci

Jeśli wysyłasz metryki bezpośrednio do obszaru roboczego usługi Log Analytics, zezwól na dostęp wychodzący do następujących adresów URL:

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

Zagadnienia dotyczące serwera proxy

Moduł modułu zbierającego metryki jest napisany na platformie .NET Core. Dlatego skorzystaj z tych samych wskazówek co w przypadku modułów systemowych, aby umożliwić komunikację za pośrednictwem serwera proxy.

Zbieranie metryk z modułów lokalnych używa protokołu HTTP. Wyklucz komunikację lokalną z przechodzenia przez serwer proxy, ustawiając zmienną NO_PROXY środowiskową.

Ustaw NO_PROXY wartość na rozdzielaną przecinkami listę nazw hostów, które powinny być wykluczone. Użyj nazw modułów dla nazw hostów. Na przykład: edgeHub, edgeAgent, myCustomModule.

Metryki tras

Czasami konieczne jest pozyskiwanie metryk za pośrednictwem usługi IoT Hub zamiast wysyłania ich bezpośrednio do usługi Log Analytics. Na przykład podczas monitorowania urządzeń usługi IoT Edge w konfiguracji zagnieżdżonej, w której urządzenia podrzędne mają dostęp tylko do centrum usługi IoT Edge urządzenia nadrzędnego. Innym przykładem jest wdrożenie urządzenia usługi IoT Edge z dostępem wychodzącym tylko do usługi IoT Hub.

Aby włączyć monitorowanie w tym scenariuszu, moduł modułu zbierającego metryki można skonfigurować do wysyłania metryk jako komunikatów urządzenie-chmura (D2C) za pośrednictwem modułu edgeHub. Tę funkcję można włączyć, ustawiając zmienną UploadTarget środowiskową na IoTMessage wartość w konfiguracji modułu zbierającego.

Napiwek

Pamiętaj, aby dodać trasę edgeHub w celu dostarczania komunikatów metryk z modułu modułu zbierającego do usługi IoT Hub. Wygląda następująco: FROM /messages/modules/replace-with-collector-module-name/* INTO $upstream.

Ta opcja wymaga dodatkowej konfiguracji, przepływu pracy w chmurze w celu dostarczania komunikatów metryk przychodzących do usługi IoT Hub do obszaru roboczego usługi Log Analytics. Bez tej konfiguracji inne części integracji, takie jak wyselekcjonowane wizualizacje i alerty, nie działają.

Uwaga

Należy pamiętać o dodatkowych kosztach z tą opcją. Komunikaty metryk będą liczone względem limitu przydziału komunikatów usługi IoT Hub. Opłata zostanie również naliczona za pozyskiwanie danych usługi Log Analytics i zasoby przepływu pracy w chmurze.

Przykładowy przepływ pracy w chmurze

Przepływ pracy w chmurze, który dostarcza komunikaty metryk z usługi IoT Hub do usługi Log Analytics, jest dostępny w ramach przykładu rejestrowania i monitorowania usługi IoT Edge. Przykład można wdrożyć w istniejących zasobach w chmurze lub służyć jako dokumentacja wdrożenia produkcyjnego.

Następne kroki

Zapoznaj się z typami wyselekcjonowanych wizualizacji , które włącza usługa Azure Monitor.