Delen via


Gegevens van Telegraf opnemen in Azure Data Explorer

Belangrijk

Deze connector kan worden gebruikt in realtime analyses in Microsoft Fabric. Gebruik de instructies in dit artikel met de volgende uitzonderingen:

Azure Data Explorer biedt ondersteuning voor gegevensopname van Telegraf. Telegraf is een open source, lichtgewicht, minimale geheugenprintagent voor het verzamelen, verwerken en schrijven van telemetriegegevens, waaronder logboeken, metrische gegevens en IoT-gegevens. Telegraf ondersteunt honderden invoegtoepassingen voor invoer en uitvoer. Het wordt veel gebruikt en goed ondersteund door de open source community. De invoegtoepassing Voor Azure Data Explorer-uitvoer fungeert als de connector van Telegraf en ondersteunt de opname van gegevens uit vele typen invoerinvoegtoepassingen in Azure Data Explorer.

Vereisten

  • Een Azure-abonnement. Maak een gratis Azure-account.
  • Een Azure Data Explorer-cluster en -database. Maak een cluster en database.
  • Telegraf. Host Telegraf in een virtuele machine (VM) of container. Telegraf kan lokaal worden gehost waar de app of service die wordt bewaakt, wordt geïmplementeerd, of op afstand op een toegewezen bewakingsberekening/container.

Ondersteunde verificatiemethoden

De invoegtoepassing ondersteunt de volgende verificatiemethoden:

  • Microsoft Entra toepassingen met app-sleutels of certificaten.

  • Microsoft Entra-gebruikerstokens

    • Hiermee kan de invoegtoepassing worden geverifieerd als een gebruiker. We raden u aan deze methode alleen te gebruiken voor ontwikkelingsdoeleinden.
  • Msi-token (Azure Managed Service Identity)

    • Dit is de voorkeursverificatiemethode als u Telegraf uitvoert in een ondersteunende Azure-omgeving, zoals Azure Virtual Machines.

Welke methode u ook gebruikt, aan de aangewezen principal moet de rol Databasegebruiker in Azure Data Explorer worden toegewezen. Met deze rol kan de invoegtoepassing de tabellen maken die vereist zijn voor het opnemen van gegevens. Als de invoegtoepassing is geconfigureerd met create_tables=false, moet de aangewezen principal ten minste de rol Database Ingestor hebben.

Verificatiemethode configureren

De invoegtoepassing controleert op specifieke configuraties van omgevingsvariabelen om te bepalen welke verificatiemethode moet worden gebruikt. De configuraties worden beoordeeld in de opgegeven volgorde en de eerste gedetecteerde configuratie wordt gebruikt. Als er geen geldige configuratie wordt gedetecteerd, kan de invoegtoepassing niet worden geverifieerd.

Als u verificatie voor de invoegtoepassing wilt configureren, stelt u de juiste omgevingsvariabelen in voor de gekozen verificatiemethode:

  • Clientreferenties (Microsoft Entra toepassingstokens): Microsoft Entra toepassings-id en -geheim.

    • AZURE_TENANT_ID: De Microsoft Entra tenant-id die wordt gebruikt voor verificatie.
    • AZURE_CLIENT_ID: De client-id van een app-registratie in de tenant.
    • AZURE_CLIENT_SECRET: het clientgeheim dat is gegenereerd voor de app-registratie.
  • Clientcertificaat (Microsoft Entra toepassingstokens): Microsoft Entra toepassings-id en een X.509-certificaat.

    • AZURE_TENANT_ID: De Microsoft Entra tenant-id die wordt gebruikt voor verificatie.
    • AZURE_CERTIFICATE_PATH: Een pad naar het certificaat en het persoonlijke sleutelpaar in PEM- of PFX-indeling, waarmee de app-registratie kan worden geverifieerd.
    • AZURE_CERTIFICATE_PASSWORD: het wachtwoord dat is ingesteld voor het certificaat.
  • Wachtwoord voor resource-eigenaar (Microsoft Entra gebruikerstokens):Microsoft Entra gebruiker en wachtwoord. We raden u af om dit toekenningstype te gebruiken. Als u een interactieve aanmelding nodig hebt, gebruikt u apparaataanmelding.

    • AZURE_TENANT_ID: De Microsoft Entra tenant-id die wordt gebruikt voor verificatie.
    • AZURE_CLIENT_ID: De client-id van een app-registratie in de tenant.
    • AZURE_USERNAME: De gebruikersnaam, ook wel upn genoemd, van een Microsoft Entra-gebruikersaccount.
    • AZURE_PASSWORD: het wachtwoord van het Microsoft Entra gebruikersaccount. Houd er rekening mee dat dit geen ondersteuning biedt voor accounts waarvoor MFA is ingeschakeld.
  • Azure Managed Service Identity: delegeer referentiebeheer naar het platform. Deze methode vereist dat code wordt uitgevoerd in Azure, bijvoorbeeld VM. Alle configuratie wordt afgehandeld door Azure. Zie Azure Managed Service Identity voor meer informatie. Deze methode is alleen beschikbaar wanneer u Azure Resource Manager gebruikt.

Telegraf configureren

Telergraf is een configuratiegestuurde agent. Om aan de slag te gaan, moet u Telegraf installeren en de vereiste invoegtoepassingen voor invoer en uitvoer configureren. De standaardlocatie van het configuratiebestand is als volgt:

  • Voor Windows: C:\Program Files\Telegraf\telegraf.conf
  • Voor Linux: etc/telegraf/telegraf.conf

Als u de invoegtoepassing voor Azure Data Explorer-uitvoer wilt inschakelen, moet u de opmerkingen in de volgende sectie in het automatisch gegenereerde configuratiebestand verwijderen:

[[outputs.azure_data_explorer]]
  ## The URI property of the Azure Data Explorer resource on Azure
  ## ex: https://myadxresource.australiasoutheast.kusto.windows.net
  # endpoint_url = ""

  ## The Azure Data Explorer database that the metrics will be ingested into.
  ## The plugin will NOT generate this database automatically, it's expected that this database already exists before ingestion.
  ## ex: "exampledatabase"
  # database = ""

  ## Timeout for Azure Data Explorer operations, default value is 20 seconds
  # timeout = "20s"

  ## Type of metrics grouping used when ingesting to Azure Data Explorer
  ## Default value is "TablePerMetric" which means there will be one table for each metric
  # metrics_grouping_type = "TablePerMetric"

  ## Name of the single table to store all the metrics (Only needed if metrics_grouping_type is "SingleTable").
  # table_name = ""

  ## Creates tables and relevant mapping if set to true(default).
  ## Skips table and mapping creation if set to false, this is useful for running telegraf with the least possible access permissions i.e. table ingestor role.
  # create_tables = true

Ondersteunde opnametypen

De invoegtoepassing ondersteunt beheerde (streaming) en opname in wachtrij (batchverwerking). Het standaardopnametype wordt in de wachtrij geplaatst.

Belangrijk

Als u beheerde opname wilt gebruiken, moet u streamingopname inschakelen op uw cluster.

Als u het opnametype voor de invoegtoepassing wilt configureren, wijzigt u het automatisch gegenereerde configuratiebestand als volgt:

  ##  Ingestion method to use.
  ##  Available options are
  ##    - managed  --  streaming ingestion with fallback to batched ingestion or the "queued" method below
  ##    - queued   --  queue up metrics data and process sequentially
  # ingestion_type = "queued"

Opgenomen gegevens opvragen

Hier volgen voorbeelden van gegevens die worden verzameld met behulp van de invoegtoepassingEN SQL- en Syslog-invoer, samen met de invoegtoepassing voor Azure Data Explorer-uitvoer. Voor elke invoermethode is er een voorbeeld van het gebruik van gegevenstransformaties en query's in Azure Data Explorer.

Invoegtoepassing voor SQL-invoer

In de volgende tabel ziet u voorbeeldgegevens van metrische gegevens die zijn verzameld door de invoegtoepassing VOOR SQL-invoer:

naam tags tijdstempel fields
sqlserver_database_io {"database_name":"azure-sql-db2","file_type":"DATA","host":"adx-vm","logical_filename":"tempdev","measurement_db_type":"AzureSQLDB","physical_filename":"tempdb.mdf","replica_updateability":"READ_WRITE","sql_instance":"adx-sql-server"} 2021-09-09T13:51:20Z {"current_size_mb":16,"database_id":2,"file_id":1,"read_bytes":2965504,"read_latency_ms":68,"leest":47,"rg_read_stall_ms":42,"rg_write_stall_ms":0,"space_used_mb":0,"write_bytes":1220608,"write_latency_ms":103,"schrijft":149}
sqlserver_waitstats {"database_name":"azure-sql-db2","host":"adx-vm","measurement_db_type":"AzureSQLDB","replica_updateability":"READ_WRITE","sql_instance":"adx-sql-server","wait_category":"Worker Thread","wait_type":"THREADPOOL"} 2021-09-09T13:51:20Z {"max_wait_time_ms":15,"resource_wait_ms":4469,"signal_wait_time_ms":0,"wait_time_ms":4469,"waiting_tasks_count":1464}

Omdat het verzamelde metrische object een complex type is, worden de velden en tagskolommen opgeslagen als dynamische gegevenstypen. Er zijn veel manieren om query's uit te voeren op deze gegevens, bijvoorbeeld:

  • Rechtstreeks query's uitvoeren op JSON-kenmerken: U kunt query's uitvoeren op JSON-gegevens in onbewerkte indeling zonder deze te parseren.

    Voorbeeld 1

    Tablename
    | where name == "sqlserver_azure_db_resource_stats" and todouble(fields.avg_cpu_percent) > 7
    

    Voorbeeld 2

    Tablename
    | distinct tostring(tags.database_name)
    

    Notitie

    Deze aanpak kan van invloed zijn op de prestaties bij het gebruik van grote hoeveelheden gegevens. Gebruik in dergelijke gevallen de benadering van het updatebeleid.

  • Een updatebeleid gebruiken: dynamische gegevenstypekolommen transformeren met behulp van een updatebeleid. We raden deze methode aan voor het uitvoeren van query's op grote hoeveelheden gegevens.

    // Function to transform data
    .create-or-alter function Transform_TargetTableName() {
      SourceTableName
      | mv-apply fields on (extend key = tostring(bag_keys(fields)[0]))
      | project fieldname=key, value=todouble(fields[key]), name, tags, timestamp
    }
    
    // Create destination table with above query's results schema (if it doesn't exist already)
    .set-or-append TargetTableName <| Transform_TargetTableName() | take 0
    
    // Apply update policy on destination table
    .alter table TargetTableName policy update
    @'[{"IsEnabled": true, "Source": "SourceTableName", "Query": "Transform_TargetTableName()", "IsTransactional": true, "PropagateIngestionProperties": false}]'
    

Syslog-invoerinvoegtoepassing

De volgende tabel bevat voorbeeldgegevens van metrische gegevens die zijn verzameld door de Syslog-invoerinvoegtoepassing:

naam tags tijdstempel fields
syslog {"appname":"azsecmond","facility":"user","host":"adx-linux-vm","hostname":"adx-linux-vm","severity":"info"} 2021-09-20T14:36:44Z {"facility_code":1,"message":" 2021/09/20 14:36:44.890110 Kan geen verbinding maken met mdsd: dial unix /var/run/mdsd/default_djson.socket: connect: no such file or directory","procid":"2184","severity_code":6,"timestamp":"1632148604890477000","version":1}
syslog {"appname":"CRON","facility":"authpriv","host":"adx-linux-vm","hostname":"adx-linux-vm","severity":"info"} 2021-09-20T14:37:01Z {"facility_code":10,"message":" pam_unix(cron:session): session opened for user root by (uid=0)","procid":"26446","severity_code":6,"timestamp":"1632148621120781000","version":1}

Er zijn meerdere manieren om dynamische kolommen plat te maken met behulp van de uitbreidingsoperator of de invoegtoepassing bag_unpack(). U kunt beide gebruiken in de functie updatebeleid Transform_TargetTableName().

  • Gebruik de operator voor uitbreiden: u wordt aangeraden deze methode te gebruiken, omdat deze sneller en robuuster is. Zelfs als het schema wordt gewijzigd, worden query's of dashboards niet onderbroken.

    Tablename
    | extend facility_code=toint(fields.facility_code), message=tostring(fields.message), procid= tolong(fields.procid), severity_code=toint(fields.severity_code),
    SysLogTimestamp=unixtime_nanoseconds_todatetime(tolong(fields.timestamp)), version= todouble(fields.version),
    appname= tostring(tags.appname), facility= tostring(tags.facility),host= tostring(tags.host), hostname=tostring(tags.hostname), severity=tostring(tags.severity)
    | project-away fields, tags
    
  • De invoegtoepassing bag_unpack(): met deze methode worden kolommen van het dynamische type automatisch uitgepakt. Het wijzigen van het bronschema kan problemen veroorzaken bij het dynamisch uitbreiden van kolommen.

    Tablename
    | evaluate bag_unpack(tags, columnsConflict='replace_source')
    | evaluate bag_unpack(fields, columnsConflict='replace_source')