Dela via


Mata in data från Telegraf till Azure Data Explorer

Viktigt

Den här anslutningsappen kan användas i Realtidsanalys i Microsoft Fabric. Använd anvisningarna i den här artikeln med följande undantag:

Azure Data Explorer stöder datainmatning från Telegraf. Telegraf är en öppen källkod, enkel, minimal minnesfotsutskriftsagent för insamling, bearbetning och skrivning av telemetridata, inklusive loggar, mått och IoT-data. Telegraf stöder hundratals plugin-program för in- och utdata. Den används ofta och stöds väl av öppen källkod community. Azure Data Explorer utdata-plugin-programmet fungerar som anslutningsapp från Telegraf och stöder inmatning av data från många typer av indata-plugin-program till Azure Data Explorer.

Förutsättningar

  • En Azure-prenumeration. Skapa ett kostnadsfritt Azure-konto.
  • Ett Azure Data Explorer-kluster och en databas. Skapa ett kluster och en databas.
  • Telegraf. Värd för Telegraf på en virtuell dator (VM) eller container. Telegraf kan finnas lokalt där appen eller tjänsten som övervakas distribueras eller via fjärranslutning på en dedikerad beräkning/container för övervakning.

Autentiseringsmetoder som stöds

Plugin-programmet stöder följande autentiseringsmetoder:

  • Microsoft Entra program med appnycklar eller certifikat.

  • Microsoft Entra användartoken

    • Tillåter att plugin-programmet autentiseras som en användare. Vi rekommenderar endast att du använder den här metoden i utvecklingssyfte.
  • Azure Managed Service Identity-token (MSI)

    • Det här är den bästa autentiseringsmetoden om du kör Telegraf i en stödjande Azure-miljö, till exempel Azure Virtual Machines.

Oavsett vilken metod du använder måste det avsedda huvudnamnet tilldelas rollen Databasanvändare i Azure Data Explorer. Med den här rollen kan plugin-programmet skapa de tabeller som krävs för att mata in data. Om plugin-programmet har konfigurerats med create_tables=falsemåste det avsedda huvudkontot minst ha rollen Database Ingestor .

Konfigurera autentiseringsmetod

Plugin-programmet söker efter specifika konfigurationer av miljövariabler för att avgöra vilken autentiseringsmetod som ska användas. Konfigurationerna utvärderas i den angivna ordningen och den första konfigurationen som identifieras används. Om en giltig konfiguration inte identifieras går det inte att autentisera plugin-programmet.

Konfigurera autentisering för plugin-programmet genom att ange lämpliga miljövariabler för den valda autentiseringsmetoden:

  • Klientautentiseringsuppgifter (Microsoft Entra programtoken): Microsoft Entra program-ID och hemlighet.

    • AZURE_TENANT_ID: Det Microsoft Entra klientorganisations-ID som används för autentisering.
    • AZURE_CLIENT_ID: Klient-ID för en appregistrering i klientorganisationen.
    • AZURE_CLIENT_SECRET: Klienthemligheten som genererades för appregistreringen.
  • Klientcertifikat (Microsoft Entra programtoken): Microsoft Entra program-ID och ett X.509-certifikat.

    • AZURE_TENANT_ID: Det Microsoft Entra klientorganisations-ID som används för autentisering.
    • AZURE_CERTIFICATE_PATH: En sökväg till certifikat och privat nyckelpar i PEM- eller PFX-format, som kan autentisera appregistreringen.
    • AZURE_CERTIFICATE_PASSWORD: Lösenordet som angavs för certifikatet.
  • Resursägarens lösenord (Microsoft Entra användartoken): Microsoft Entra användare och lösenord. Vi rekommenderar inte att du använder den här beviljandetypen. Om du behöver en interaktiv inloggning använder du enhetsinloggning.

    • AZURE_TENANT_ID: Det Microsoft Entra klientorganisations-ID som används för autentisering.
    • AZURE_CLIENT_ID: Klient-ID för en appregistrering i klientorganisationen.
    • AZURE_USERNAME: Användarnamnet, även kallat upn, för ett Microsoft Entra användarkonto.
    • AZURE_PASSWORD: Lösenordet för Microsoft Entra användarkonto. Observera att detta inte stöder konton med MFA aktiverat.
  • Azure Managed Service Identity: Delegera hantering av autentiseringsuppgifter till plattformen. Den här metoden kräver att koden körs i Azure, till exempel virtuell dator. All konfiguration hanteras av Azure. Mer information finns i Azure Managed Service Identity( Azure Managed Service Identity). Den här metoden är endast tillgänglig när du använder Azure Resource Manager.

Konfigurera Telegraf

Telergraf är en konfigurationsdriven agent. För att komma igång måste du installera Telegraf och konfigurera nödvändiga plugin-program för in- och utdata. Standardplatsen för konfigurationsfilen är följande:

  • För Windows: C:\Program Files\Telegraf\telegraf.conf
  • För Linux: etc/telegraf/telegraf.conf

Om du vill aktivera azure Data Explorer utdata-plugin-programmet måste du avkommentera följande avsnitt i den automatiskt genererade konfigurationsfilen:

[[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

Inmatningstyper som stöds

Plugin-programmet stöder hanterad (direktuppspelning) och inmatning i kö (batchbearbetning). Standardinmatningstypen placeras i .

Viktigt

Om du vill använda hanterad inmatning måste du aktivera strömningsinmatning i klustret.

Om du vill konfigurera inmatningstypen för plugin-programmet ändrar du den automatiskt genererade konfigurationsfilen enligt följande:

  ##  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"

Fråga inmatade data

Följande är exempel på data som samlas in med hjälp av plugin-program för SQL- och syslog-indata tillsammans med plugin-programmet azure Data Explorer utdata. För varje indatametod finns det ett exempel på hur du använder datatransformeringar och frågor i Azure Data Explorer.

PLUGIN-program för SQL-indata

I följande tabell visas exempel på måttdata som samlas in av plugin-programmet för SQL-indata:

name tags timestamp 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,"läser":47,"rg_read_stall_ms":42,"rg_write_stall_ms":0,"space_used_mb":0,"write_bytes":1220608,"write_latency_ms":103,"skriver":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}

Eftersom det insamlade måttobjektet är en komplex typ lagras fälten och taggarna som dynamiska datatyper. Det finns många sätt att köra frågor mot dessa data, till exempel:

  • Fråga JSON-attribut direkt: Du kan fråga JSON-data i rådataformat utan att parsa dem.

    Exempel 1

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

    Exempel 2

    Tablename
    | distinct tostring(tags.database_name)
    

    Anteckning

    Den här metoden kan påverka prestanda när du använder stora mängder data. I sådana fall använder du uppdateringsprincipen.

  • Använd en uppdateringsprincip: Transformera kolumner av dynamisk datatyp med hjälp av en uppdateringsprincip. Vi rekommenderar den här metoden för att fråga stora mängder data.

    // 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-indata-plugin-program

I följande tabell visas exempel på måttdata som samlas in av Syslog-plugin-programmet för indata:

name tags timestamp 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 Det gick inte att ansluta till mdsd: ring 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 öppen för användarrot av (uid=0)","härdande":"26446","severity_code":6,"tidsstämpel":"1632148621120781000","version":1}

Det finns flera sätt att platta ut dynamiska kolumner med hjälp av tilläggsoperatorn eller plugin-programmet bag_unpack(). Du kan använda någon av dem i funktionen uppdateringsprincip Transform_TargetTableName().

  • Använd extend-operatorn: Vi rekommenderar att du använder den här metoden eftersom den är snabbare och robust. Även om schemat ändras bryts inte frågor eller instrumentpaneler.

    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
    
  • Använd plugin-programmet bag_unpack() : Den här metoden packar automatiskt upp kolumner av dynamisk typ. Om du ändrar källschemat kan det orsaka problem när kolumner expanderas dynamiskt.

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