Del via


Indtag data fra Telegraf i Microsoft Fabric Eventhouse

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:

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 operatorenextend: 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, tags
    
  • Brug 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