Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Microsoft Fabric Real-Time Intelligence understøtter dataindtagelse fra Telegraf. Telegraf er en letvægtsagent med åben kildekode, der bruger minimal hukommelse til at indsamle, behandle og skrive telemetri: logfiler, målepunkter og IoT-data.
Hvad du lærer i denne artikel:
- Konfigurer Telegraf til at sende målepunkter til Microsoft Fabric Eventhouse.
- Vælg indstillinger for forbindelsesstreng (MetricsGroupingType, IngestionType) og godkendelsesindstillinger.
- Opret tabeller, og forespørg på indtagne målepunkter til analyse i næsten realtid.
Telegraf understøtter hundredvis af input- og output-plugins. Et bredt open source-fællesskab bruger og understøtter det.
Microsoft Fabric Real-Time Intelligence-outputplug-modulen fungerer som Telegrafs connector og sender data fra mange input-plug-ins til Eventhouse, et højtydende, skalerbart datalager til analyse i realtid.
Tips
Du kan også konfigurere Telegraf til at sende data til en Eventstream. For detaljer, se Telegraf-plugin
Forudsætninger
- Et Microsoft Fabric-arbejdsområde med Real-Time Intelligence aktiveret.
- En Eventhouse-forekomst og en KQL-database (Kusto Query Language). Opret et Eventhouse.
- Telegraf version 1.35.0 eller nyere. Vær vært for Telegraf på en virtuel maskine (VM) eller objektbeholder, enten lokalt, hvor den overvågede app eller tjeneste kører, eller eksternt på en dedikeret overvågningsberegning eller objektbeholder.
- Giv den principal, der kører Telegraf, de relevante tilladelser i Microsoft Fabric, og tildel databasebrugerrollen eller højere til Eventhouse-databasen.
Understøttede godkendelsesmetoder
Pluginnet bruger DefaultAzureCredential godkendelse. Denne legitimationsoplysninger forsøger flere godkendelsesmetoder i rækkefølge, indtil en lykkes, så den kræver ikke hardcodede legitimationsoplysninger.
Azures standardkæde af legitimationsoplysninger
Azure-standardlegitimationsoplysninger prøver automatisk godkendelsesmetoder i denne rækkefølge:
Miljøvariabler – Kontrollerer legitimationsoplysninger for tjenesteprincipal i miljøvariabler:
-
AZURE_CLIENT_ID,AZURE_CLIENT_SECRET,AZURE_TENANT_ID(til godkendelse af klienthemmeligheder) -
AZURE_CLIENT_ID,AZURE_CLIENT_CERTIFICATE_PATH,AZURE_TENANT_ID(til godkendelse af klientcertifikater)
-
Administreret identitet – Bruger systemtildelt eller brugertildelt administreret identitet, hvis den kører på Azure-ressourcer (VM'er, App Service, Functions osv.)
Azure CLI – Bruger legitimationsoplysninger fra
az login, om Azure CLI er installeret, og brugeren er logget påAzure PowerShell – Bruger legitimationsoplysninger fra
Connect-AzAccount, hvis Azure PowerShell er installeret, og brugeren er logget påInteraktiv browser – åbner browseren til interaktivt logon (typisk deaktiveret i produktionsscenarier)
Indstillinger for opsætning af godkendelse
Vælg den godkendelsesmetode, der passer bedst til dit udrulningsscenarie:
Til produktion (anbefales)
- Brug administreret identitet , når du kører Telegraf på Azure-ressourcer (VM'er, objektbeholdere osv.)
- Brug Service Principal med miljøvariabler til ikke-Azure-miljøer
Til udvikling
- Brug Azure CLI-godkendelse ved at køre
az login - Brug Azure PowerShell-godkendelse ved at køre
Connect-AzAccount
Miljøvariabler for tjenesteprincipal: Hvis du bruger godkendelse af tjenesteprincipalen, skal du angive disse miljøvariabler:
Erstat pladsholderteksten i følgende eksempel med dine egne værdier.
export AZURE_TENANT_ID=<your-tenant-id>
export AZURE_CLIENT_ID=<your-client-id>
export AZURE_CLIENT_SECRET=<your-client-secret>
Konfigurer Telegraf
Telegraf er en konfigurationsdrevet agent. For at komme i gang skal du installere Telegraf og konfigurere de nødvendige input- og output-plugins. Standardplaceringen af konfigurationsfilen er som følger:
- Til Windows: C:\Program Files\Telegraf\telegraf.conf
- Til Linux: /etc/telegraf/telegraf.conf
Hvis du vil aktivere Microsoft Fabric-output-plug-in til Eventhouse, skal du føje følgende afsnit til konfigurationsfilen:
[[outputs.microsoft_fabric]]
## The connection string for Microsoft Fabric Eventhouse
connection_string = "Data Source=https://your-eventhouse.fabric.microsoft.com;Database=your-database;MetricsGroupingType=TablePerMetric;CreateTables=true"
## Client timeout
# timeout = "30s"
Konfiguration af forbindelsesstreng
Den connection_string indeholder oplysninger, der er nødvendige for, at plugin'et kan oprette forbindelse til Eventhouse-slutpunktet. Det er en semikolonsepareret liste over navneværdiparameterpar.
Parametre for forbindelsesstreng til begivenhedshus
I følgende tabel vises alle de mulige egenskaber, der kan medtages i en forbindelsesstreng for Eventhouse:
| Egenskabsbetegnelse | Aliases | Beskrivelse | Standard |
|---|---|---|---|
| Datakilde | Addr, Adresse, Netværksadresse, Server | Den URI, der angiver Eventhouse-tjenestens slutpunkt. Det kunne f.eks. være https://mycluster.fabric.microsoft.com. |
Kræves |
| Oprindelig katalog | Database | Databasenavnet i Eventhuset. Det kunne f.eks. være MyDatabase. |
Kræves |
| Type af indtagelse | IngestionType | Værdier kan indstilles til managed for streamingindtagelse med tilbagevenden til batchindlæsning eller queued for kø af målepunkter og proces sekventielt |
queued |
| Tabelens navn | Tabelnavn | Navn på den enkelte tabel til lagring af alle målepunkter. kun nødvendigt, hvis MetricsGroupingType det er SingleTable |
- |
| Opret tabeller | Opret tabeller | Opretter tabeller og relevant tilknytning, hvis true. Ellers springes tabel- og tilknytningsoprettelse over. Nyttigt til at køre Telegraf med de lavest mulige tilladelser, f.eks. tabelindtagerrolle. |
true |
| Grupperingstype for målepunkter | MetricsGroupingType | Type af metrikgruppering, der bruges, når du skubber til Eventhouse enten er TablePerMetric eller SingleTable. |
TablePerMetric |
Eksempel på forbindelsesstrenge
TablePerMetric-gruppering (anbefales):
connection_string = "Data Source=https://mycluster.fabric.microsoft.com;Database=MyDatabase;MetricsGroupingType=TablePerMetric;CreateTables=true"
Gruppering med en enkelt tabel:
connection_string = "Data Source=https://mycluster.fabric.microsoft.com;Database=MyDatabase;MetricsGroupingType=SingleTable;Table Name=telegraf_metrics;CreateTables=true"
Med administreret indtagelse:
connection_string = "Data Source=https://mycluster.fabric.microsoft.com;Database=MyDatabase;IngestionType=managed;CreateTables=true"
Gruppering af målepunkter
Metrics kan grupperes på to måder, når de sendes til Eventhouse:
TablePerMetric (anbefales)
Plugin'et grupperer metrikkerne efter metriknavnet og sender hver gruppe af metrics til en separat Eventhouse KQL-databasetabel. Hvis tabellen ikke findes, opretter plugin'et tabellen. Hvis tabellen findes, forsøger plugin'et at flette det metriske Telegraf-skema til den eksisterende tabel.
Tabelnavnet svarer til metriknavnet. Metriknavnet skal overholde navngivningsbegrænsningerne for Eventhouse KQL-databasetabellen.
Enkeltbord
Pluginnet sender alle de modtagne målinger til en enkelt Eventhouse KQL-databasetabel. Tabellens navn skal angives via Table Name parameteren connection_stringi . Hvis tabellen ikke findes, opretter plugin'et tabellen. Hvis tabellen findes, forsøger plugin'et at flette det metriske Telegraf-skema til den eksisterende tabel.
Typer af indtagelse
Pluginnet understøtter to indlæsningstyper:
Indtagelse i kø (standard)
Servicekøerne og procesmetrikkerne i batches. Det er standardmetoden og den anbefalede metode til de fleste brugssager, fordi den giver bedre gennemløb og pålidelighed.
Administreret indtagelse
Streamingindtagelse med tilbagevenden til batchindtagelse giver lavere ventetid, men falder tilbage til batchindtagelse, når streamingindtagelse ikke er aktiveret på Eventhouse.
Vigtigt!
Hvis du vil bruge administreret indtagelse, skal du aktivere streamingindtagelse på dit Eventhouse.
Hvis du vil kontrollere, om streamingindtagelse er aktiveret, skal du køre denne forespørgsel i dit Eventhouse:
.show database <DB-Name> policy streamingingestion
Tabelskema
Eventhouse opretter automatisk tabeller, hvis skema matcher Telegraf-metrikstrukturen:
.create-merge table ['table-name'] (['fields']:dynamic, ['name']:string, ['tags']:dynamic, ['timestamp']:datetime)
Den tilsvarende tabeltilknytning oprettes automatisk:
.create-or-alter table ['table-name'] ingestion json mapping 'table-name_mapping' '[{"column":"fields", "Properties":{"Path":"$[\'fields\']"}},{"column":"name", "Properties":{"Path":"$[\'name\']"}},{"column":"tags", "Properties":{"Path":"$[\'tags\']"}},{"column":"timestamp", "Properties":{"Path":"$[\'timestamp\']"}}]'
Notat
Når CreateTables=true (det er standard), opretter dette plugin tabeller og tilsvarende tabeltilknytninger ved hjælp af kommandoerne ovenfor.
Forespørg på indtagne data
Følgende er eksempler på data, der indsamles ved hjælp af input-plug-ins sammen med Microsoft Fabric-output-plugin'en. Eksemplerne viser, hvordan du bruger datatransformationer og forespørgsler i Eventhouse.
Eksempler på målepunktsdata
I følgende tabel vises eksempler på metrikdata, der er indsamlet af forskellige input-plugins:
| Navn | Tags | tidsstempel | Felter |
|---|---|---|---|
| cpu | {"cpu":"cpu-total","host":"telegraf-host"} | 2021-09-09T13:51:20Z | {"usage_idle":85.5,"usage_system":8.2,"usage_user":6.3} |
| skive | {"device":"sda1","fstype":"ext4","host":"telegraf-host","mode":"rw","path":"/"} | 2021-09-09T13:51:20Z | {"free":45234176000,"total":63241359360,"used":15759433728,"used_percent":25.9} |
Da det indsamlede metrikobjekt er en kompleks type, gemmes felt - og tag-kolonnerne som dynamiske datatyper. Der er flere måder at forespørge på disse data på:
Forespørg direkte på JSON-attributter
Du kan forespørge på JSON-data i råformat uden at fortolke dem:
Eksempel 1
cpu
| where todouble(fields.usage_user) > 10
| project timestamp, host=tostring(tags.host), cpu_usage=todouble(fields.usage_user)
Eksempel 2
disk
| where todouble(fields.used_percent) > 80
| project timestamp, host=tostring(tags.host), device=tostring(tags.device), used_percent=todouble(fields.used_percent)
Notat
Denne fremgangsmåde kan påvirke ydeevnen med store mængder data. Hvis du vil have bedre ydeevne med store datasæt, skal du bruge tilgangen til opdateringspolitik.
Brug en opdateringspolitik for at opnå bedre effektivitet
Transformér kolonner med dynamiske datatyper ved hjælp af en opdateringspolitik. Denne fremgangsmåde anbefales til forespørgsler på store mængder data:
// Function to transform data
.create-or-alter function Transform_cpu_metrics() {
cpu
| extend
usage_idle = todouble(fields.usage_idle),
usage_system = todouble(fields.usage_system),
usage_user = todouble(fields.usage_user),
host = tostring(tags.host),
cpu_name = tostring(tags.cpu)
| project timestamp, name, host, cpu_name, usage_idle, usage_system, usage_user
}
// Create destination table with transformed schema
.set-or-append cpu_transformed <| Transform_cpu_metrics() | take 0
// Apply update policy on destination table
.alter table cpu_transformed policy update
@'[{"IsEnabled": true, "Source": "cpu", "Query": "Transform_cpu_metrics()", "IsTransactional": true, "PropagateIngestionProperties": false}]'
Samkopier dynamiske søjler
Der er flere måder at samkopiere dynamiske kolonner på ved hjælp af den udvidede operator eller bag_unpack()- plugin. Du kan bruge en af dem i funktionen Opdateringspolitik Transform_TargetTableName().
Brug operatoren
extend: Brug denne fremgangsmåde, fordi den er hurtigere og robust. Selvom skemaet ændres, bryder det ikke forespørgsler eller dashboards.cpu | extend usage_idle = todouble(fields.usage_idle), usage_system = todouble(fields.usage_system), usage_user = todouble(fields.usage_user), host = tostring(tags.host), cpu_name = tostring(tags.cpu) | project-away fields, tagsBrug bag_unpack()-plugin: Denne fremgangsmåde pakker automatisk kolonner af dynamisk type ud. Ændring af kildeskemaet kan medføre problemer ved dynamisk udvidelse af kolonner.
cpu | evaluate bag_unpack(tags, columnsConflict='replace_source') | evaluate bag_unpack(fields, columnsConflict='replace_source') | project timestamp, name, host, cpu, usage_idle, usage_system, usage_user