Metrische gegevens verzamelen en transporten

Van toepassing op:IoT Edge 1.4 checkmark IoT Edge 1.4

Belangrijk

IoT Edge 1.4 is de ondersteunde release. Raadpleeg IoT Edge bijwerken als u een eerdere versie hebt.

U kunt uw IoT Edge-vloot op afstand bewaken met behulp van Azure Monitor en ingebouwde integratie van metrische gegevens. Als u deze mogelijkheid op uw apparaat wilt inschakelen, voegt u de module metrics-collector toe aan uw implementatie en configureert u deze om metrische gegevens van de module te verzamelen en te transporteren naar Azure Monitor.

Als u bewaking op uw IoT Edge-apparaat wilt configureren, volgt u de zelfstudie: IoT Edge-apparaten bewaken. U leert hoe u de module metrics-collector toevoegt aan uw apparaat. In dit artikel vindt u een overzicht van de bewakingsarchitectuur en worden uw opties voor het configureren van metrische gegevens op uw apparaat uitgelegd.

IoT Edge-integratie met Azure Monitor(4:06)

Architectuur

Screenshot of the metrics monitoring architecture with IoT Hub.

Notitie Omschrijving
1 Alle modules moeten metrische gegevens verzenden met behulp van het Prometheus-gegevensmodel. Hoewel ingebouwde metrische gegevens standaard algemene zichtbaarheid van workloads mogelijk maken, kunnen aangepaste modules ook worden gebruikt om scenariospecifieke metrische gegevens te verzenden om de bewakingsoplossing te verbeteren. Meer informatie over het instrumenteren van aangepaste modules met behulp van opensource-bibliotheken in het artikel Aangepaste metrische gegevens toevoegen.
2️ De module metrics-collector is een door Microsoft geleverde IoT Edge-module die metrische gegevens van de workloadmodule verzamelt en deze buiten het apparaat transporteert. Verzameling met metrische gegevens maakt gebruik van een pull-model . Verzamelingsfrequentie, eindpunten en filters kunnen worden geconfigureerd om de gegevens te beheren die afkomstig zijn van de module. Zie de sectie configuratie van metrische gegevensverzamelaar verderop in dit artikel voor meer informatie.
3️ U hebt twee opties voor het verzenden van metrische gegevens van de module metrics-collector naar de cloud. Optie 1 verzendt de metrische gegevens naar Log Analytics.1 De verzamelde metrische gegevens worden opgenomen in de opgegeven Log Analytics-werkruimte met behulp van een vaste, systeemeigen tabel met de naam InsightsMetrics. Het schema van deze tabel is compatibel met het prometheus-gegevensmodel voor metrische gegevens.

Deze optie vereist toegang tot de werkruimte op uitgaande poort 443. De Log Analytics-werkruimte-id en -sleutel moeten worden opgegeven als onderdeel van de moduleconfiguratie. Zie Inschakelen in scenario's voor beperkte netwerktoegang verderop in dit artikel om beperkte netwerken in te schakelen.
4️ Elke metrische vermelding bevat de ResourceId vermelding die is opgegeven als onderdeel van de moduleconfiguratie. Deze koppeling koppelt de metrische gegevens automatisch aan de opgegeven resource (bijvoorbeeld IoT Hub). Als gevolg hiervan kunnen de gecureerde IoT Edge-werkmapsjablonen metrische gegevens ophalen door query's uit te voeren op de resource.

Met deze aanpak kunnen meerdere IoT-hubs ook veilig één Log Analytics-werkruimte delen als een database met metrische gegevens.
5️ Optie 2 verzendt de metrische gegevens naar IoT Hub.1 De collectormodule kan worden geconfigureerd om de verzamelde metrische gegevens te verzenden als UTF-8 gecodeerde JSON-apparaat-naar-cloud-berichtenvia de edgeHub module. Met deze optie wordt bewaking ontgrendeld van vergrendelde IoT Edge-apparaten die externe toegang hebben tot alleen het IoT Hub-eindpunt. Het maakt ook bewaking mogelijk van onderliggende IoT Edge-apparaten in een geneste configuratie waarbij onderliggende apparaten alleen toegang hebben tot hun bovenliggende apparaat.
6️ Wanneer metrische gegevens worden gerouteerd via IoT Hub, moet er een (eenmalige) cloudwerkstroom worden ingesteld. De werkstroom verwerkt berichten die afkomstig zijn van de module metrische gegevensverzamelaar en verzendt deze naar de Log Analytics-werkruimte. De werkstroom maakt de functionaliteit voor gecureerde visualisaties en waarschuwingen mogelijk, zelfs voor metrische gegevens die via dit optionele pad binnenkomen. Zie de sectie Metrische routegegevens via IoT Hub voor meer informatie over het instellen van deze cloudwerkstroom.

1 Op dit moment is het eenvoudiger om metrische gegevens rechtstreeks te transporteren naar Log Analytics vanaf het IoT Edge-apparaat. Hiervoor is minimale installatie vereist. De eerste optie heeft de voorkeur, tenzij voor uw specifieke scenario de benadering van optie 2 is vereist, zodat het IoT Edge-apparaat alleen communiceert met IoT Hub.

Module voor metrische gegevensverzamelaar

Een door Microsoft geleverde module voor metrische gegevensverzamelaar kan worden toegevoegd aan een IoT Edge-implementatie om metrische modulegegevens te verzamelen en naar Azure Monitor te verzenden. De modulecode is opensource en beschikbaar in de GitHub-opslagplaats van IoT Edge.

De module metrics-collector wordt geleverd als een Docker-containerinstallatiekopieën met meerdere archen die ondersteuning biedt voor Linux X64, ARM32, ARM64 en Windows X64 (versie 1809). Het is openbaar beschikbaar op mcr.microsoft.com/azureiotedge-metrics-collector.

Het is ook beschikbaar in de Marketplace voor IoT Edge-modules.

Configuratie van metrische gegevensverzamelaar

Alle configuraties voor de metrische gegevensverzamelaar worden uitgevoerd met behulp van omgevingsvariabelen. De variabelen die in deze tabel zijn genoteerd als Vereist , moeten minimaal worden opgegeven.

Environment variable name Omschrijving
ResourceId Resource-id van de IoT-hub waarmee het apparaat communiceert. Zie de sectie Resource-id voor meer informatie.

Vereist

Standaardwaarde: geen
UploadTarget Hiermee bepaalt u of metrische gegevens rechtstreeks naar Azure Monitor via HTTPS of naar IoT Hub worden verzonden als D2C-berichten. Zie uploaddoel voor meer informatie.

Kan AzureMonitor of IoTMessage zijn

Niet vereist

Standaardwaarde: AzureMonitor
LogAnalyticsWorkspaceId Log Analytics-werkruimte-id.

Alleen vereist als UploadTarget AzureMonitor is

Standaardwaarde: geen
LogAnalyticsSharedKey Log Analytics-werkruimtesleutel.

Alleen vereist als UploadTarget AzureMonitor is

Standaardwaarde: geen
ScrapeFrequencyInSecs Terugkerend tijdsinterval in seconden voor het verzamelen en transporteren van metrische gegevens.

Voorbeeld: 600

Niet vereist

Standaardwaarde: 300
MetricsEndpointsCSV Door komma's gescheiden lijst met eindpunten voor het verzamelen van metrische gegevens van Prometheus. Alle module-eindpunten waaruit metrische gegevens moeten worden verzameld, moeten worden weergegeven in deze lijst.

Voorbeeld: http://edgeAgent:9600/metrics, http://edgeHub:9600/metricshttp://MetricsSpewer:9417/metrics

Niet vereist

Standaardwaarde: http://edgeHub:9600/metrics, http://edgeAgent:9600/metrics
AllowedMetrics Lijst met metrische gegevens die moeten worden verzameld, alle andere metrische gegevens worden genegeerd. Ingesteld op een lege tekenreeks om uit te schakelen. Zie lijsten toestaan en weigeren voor meer informatie.

Voorbeeld: metricToScrape{quantile=0.99}[eindpunt=http://MetricsSpewer:9417/metrics]

Niet vereist

Standaardwaarde: leeg
BlockedMetrics Lijst met metrische gegevens die moeten worden genegeerd. Overschrijft AllowedMetrics, dus een metrische waarde wordt niet gerapporteerd als deze is opgenomen in beide lijsten. Zie lijsten toestaan en weigeren voor meer informatie.

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

Niet vereist

Standaardwaarde: leeg
CompressForUpload Hiermee bepaalt u of compressie moet worden gebruikt bij het uploaden van metrische gegevens. Is van toepassing op alle uploaddoelen.

Voorbeeld: waar

Niet vereist

Standaardwaarde: true
AzureDomain Hiermee geeft u het Azure-domein op het hoogste niveau op dat moet worden gebruikt bij het rechtstreeks opnemen van metrische gegevens naar Log Analytics.

Voorbeeld: azure.us

Niet vereist

Standaardwaarde: azure.com

Resource-id

De module met metrische gegevensverzamelaar vereist de Azure Resource Manager-id van de IoT-hub waartoe het IoT Edge-apparaat behoort. Geef deze id op als de waarde van de ResourceID-omgevingsvariabele .

De resource-id heeft de volgende indeling:

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

U vindt de resource-id op de pagina Eigenschappen van de IoT-hub in Azure Portal.

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

Of u haalt de id op met de opdracht az resource show :

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

Doel uploaden

Met de configuratieoptie UploadTarget bepaalt u of metrische gegevens rechtstreeks naar Azure Monitor of naar IoT Hub worden verzonden.

Als u UploadTarget instelt op IoTMessage, worden de metrische gegevens van uw module gepubliceerd als IoT-berichten. Deze berichten worden verzonden als UTF8-gecodeerde json van het eindpunt /messages/modules/<metrics collector module name>/outputs/metricOutput. Als uw IoT Edge Metrics Collector-module bijvoorbeeld IoTEdgeMetricsCollector heet, is /messages/modules/IoTEdgeMetricsCollector/outputs/metricOutputhet eindpunt . De indeling is als volgt:

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

Lijsten toestaan en weigeren

De AllowedMetrics opties voor en BlockedMetrics configuratie nemen ruimte- of door komma's gescheiden lijsten met metrische selectors in beslag. Een metrische waarde komt overeen met de lijst en wordt opgenomen of uitgesloten als deze overeenkomt met een of meer metrische gegevens in een van beide lijsten.

Metrische selectors gebruiken een indeling die vergelijkbaar is met een subset van de PromQL-querytaal .

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

Metrische selectors bestaan uit drie onderdelen:

Naam van metrische waarde (metricToSelect).

  • Jokertekens * (alle tekens) en ? (elk willekeurig teken) kunnen worden gebruikt in metrische namen. Zou bijvoorbeeld *CPU overeenkomen maxCPU en minCPU maar niet CPUMaximum. ???CPU zou overeenkomen maxCPU en minCPU maar niet maximumCPU.
  • Dit onderdeel is vereist in een metrische selector.

Labelkiezers ({quantile=0.5,otherLabel=~Re[ge]*|x}).

  • Er kunnen meerdere metrische waarden worden opgenomen in de accolades. De waarden moeten door komma's worden gescheiden.
  • Er wordt een metrische waarde vergeleken als ten minste alle labels in de selector aanwezig zijn en ook overeenkomen.
  • Net als PromQL zijn de volgende overeenkomende operators toegestaan.
    • = Identieke labels exact gelijk aan de opgegeven tekenreeks (hoofdlettergevoelig).
    • != Overeenkomen met labels die niet exact gelijk zijn aan de opgegeven tekenreeks.
    • =~ Koppel labels aan een opgegeven regex. Ex: label=~CPU|Mem|[0-9]*
    • !~ Overeenkomen met labels die niet passen bij een opgegeven regex.
    • Regex is volledig verankerd (A ^ en $ worden automatisch toegevoegd aan het begin en einde van elke regex)
    • Dit onderdeel is optioneel in een metrische selector.

Eindpuntkiezer ([http://VeryNoisyModule:9001/metrics]).

  • De URL moet exact overeenkomen met een URL die wordt vermeld in MetricsEndpointsCSV.
  • Dit onderdeel is optioneel in een metrische selector.

Een metrische waarde moet overeenkomen met alle onderdelen van een bepaalde selector die moet worden geselecteerd. Deze moet overeenkomen met de naam en dezelfde labels hebben met overeenkomende waarden en afkomstig zijn van het opgegeven eindpunt. Zou bijvoorbeeld mem{quantile=0.5,otherLabel=foobar}[http://VeryNoisyModule:9001/metrics] niet overeenkomen met de kiezer mem{quantile=0.5,otherLabel=~foo|bar}[http://VeryNoisyModule:9001/metrics]. Er moeten meerdere selectors worden gebruikt voor het maken van of-achtig gedrag in plaats van en-achtig gedrag.

Als u bijvoorbeeld de aangepaste metrische gegevens mem wilt toestaan met een label uit een module module1 , maar alleen dezelfde metrische gegevens van module2 het label agg=p99wilt toestaan, kan de volgende selector worden toegevoegd aan AllowedMetrics:

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

Als u de aangepaste metrische gegevens en cpu voor labels of eindpunten mem wilt toestaan, voegt u het volgende toe aanAllowedMetrics:

mem cpu

Inschakelen in scenario's voor beperkte netwerktoegang

Als u metrische gegevens rechtstreeks naar de Log Analytics-werkruimte verzendt, kunt u uitgaande toegang tot de volgende URL's toestaan:

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

Overwegingen voor proxy

De module metrics-collector is geschreven in .NET Core. Gebruik dus dezelfde richtlijnen als voor systeemmodules om communicatie via een proxyserver mogelijk te maken.

Verzameling met metrische gegevens van lokale modules maakt gebruik van http-protocol. Sluit lokale communicatie uit van het doorlopen van de proxyserver door de NO_PROXY omgevingsvariabele in te stellen.

Stel NO_PROXY een waarde in op een door komma's gescheiden lijst met hostnamen die moeten worden uitgesloten. Gebruik modulenamen voor hostnamen. Bijvoorbeeld: edgeHub, edgeAgent, myCustomModule.

Metrische gegevens routeren

Soms is het nodig om metrische gegevens via IoT Hub op te nemen in plaats van ze rechtstreeks naar Log Analytics te verzenden. Wanneer u bijvoorbeeld IoT Edge-apparaten bewaakt in een geneste configuratie waarbij onderliggende apparaten alleen toegang hebben tot de IoT Edge-hub van hun bovenliggende apparaat. Een ander voorbeeld is bij het implementeren van een IoT Edge-apparaat met alleen uitgaande netwerktoegang tot IoT Hub.

Als u bewaking in dit scenario wilt inschakelen, kan de module metrics-collector worden geconfigureerd voor het verzenden van metrische gegevens als D2C-berichten (device-to-cloud) via de edgeHub-module. De mogelijkheid kan worden ingeschakeld door de UploadTarget omgevingsvariabele IoTMessage in te stellen in de collectorconfiguratie.

Fooi

Vergeet niet om een edgeHub-route toe te voegen om metrische berichten van de collectormodule te leveren aan IoT Hub. Deze ziet er uit als FROM /messages/modules/replace-with-collector-module-name/* INTO $upstream.

Deze optie vereist extra instellingen, een cloudwerkstroom, om metrische berichten te leveren die bij IoT Hub binnenkomen bij de Log Analytics-werkruimte. Zonder deze configuratie werken de andere delen van de integratie, zoals gecureerde visualisaties en waarschuwingen , niet.

Notitie

Houd rekening met extra kosten met deze optie. Berichten met metrische gegevens tellen mee voor uw IoT Hub-berichtquotum. Er worden ook kosten in rekening gebracht voor Log Analytics-opname en cloudwerkstroomresources.

Voorbeeld van cloudwerkstroom

Een cloudwerkstroom die metrische berichten van IoT Hub naar Log Analytics levert, is beschikbaar als onderdeel van het ioT Edge-logboekregistratie- en bewakingsvoorbeeld. Het voorbeeld kan worden geïmplementeerd op bestaande cloudresources of dienen als referentiemateriaal voor productie-implementaties.

Volgende stappen

Verken de typen gecureerde visualisaties die door Azure Monitor worden ingeschakeld.