Menyerap data dari Telegraf ke Azure Data Explorer

Penting

Konektor ini dapat digunakan dalam Analitik Real Time di Microsoft Fabric. Gunakan instruksi dalam artikel ini dengan pengecualian berikut:

Azure Data Explorer mendukung penyerapan data dari Telegraf. Telegraf adalah agen cetak kaki memori sumber terbuka, ringan, minimal untuk mengumpulkan, memproses, dan menulis data telemetri termasuk log, metrik, dan data IoT. Telegraf mendukung ratusan plugin input dan output. Ini banyak digunakan dan didukung dengan baik oleh komunitas sumber terbuka. Plugin output Azure Data Explorer berfungsi sebagai konektor dari Telegraf dan mendukung penyerapan data dari berbagai jenis plugin input ke Azure Data Explorer.

Prasyarat

  • Langganan Azure. Membuat akun Azure gratis.
  • Kluster dan database Azure Data Explorer. Membuat kluster dan database.
  • Telegraf. Host Telegraf di komputer virtual (VM) atau kontainer. Telegraf dapat dihosting secara lokal tempat aplikasi atau layanan yang dipantau disebarkan, atau dari jarak jauh pada komputasi/kontainer pemantauan khusus.

Metode autentikasi yang didukung

Plugin mendukung metode autentikasi berikut:

  • Microsoft Entra aplikasi dengan kunci aplikasi atau sertifikat.

  • Microsoft Entra token pengguna

    • Memungkinkan plugin untuk mengautentikasi seperti pengguna. Kami hanya merekomendasikan penggunaan metode ini untuk tujuan pengembangan.
  • Token Azure Managed Service Identity (MSI)

    • Ini adalah metode autentikasi pilihan jika Anda menjalankan Telegraf di lingkungan Azure pendukung, seperti Azure Virtual Machines.

Metode apa pun yang Anda gunakan, prinsipal yang ditunjuk harus diberi peran Pengguna Database di Azure Data Explorer. Peran ini memungkinkan plugin untuk membuat tabel yang diperlukan untuk menyerap data. Jika plugin dikonfigurasi dengan create_tables=false, prinsipal yang ditunjuk setidaknya harus memiliki peran Database Ingestor .

Mengonfigurasi metode autentikasi

Plugin memeriksa konfigurasi variabel lingkungan tertentu untuk menentukan metode autentikasi mana yang akan digunakan. Konfigurasi dinilai dalam urutan yang ditentukan, dan konfigurasi pertama yang terdeteksi digunakan. Jika konfigurasi yang valid tidak terdeteksi, plugin akan gagal mengautentikasi.

Untuk mengonfigurasi autentikasi untuk plugin, atur variabel lingkungan yang sesuai untuk metode autentikasi yang Anda pilih:

  • Kredensial klien (Microsoft Entra token aplikasi): Microsoft Entra ID aplikasi dan rahasia.

    • AZURE_TENANT_ID: ID penyewa Microsoft Entra digunakan untuk autentikasi.
    • AZURE_CLIENT_ID: ID klien Pendaftaran Aplikasi di penyewa.
    • AZURE_CLIENT_SECRET: Rahasia klien yang dihasilkan untuk Pendaftaran Aplikasi.
  • Sertifikat klien (Microsoft Entra token aplikasi): Microsoft Entra ID aplikasi dan sertifikat X.509.

    • AZURE_TENANT_ID: ID penyewa Microsoft Entra digunakan untuk autentikasi.
    • AZURE_CERTIFICATE_PATH: Jalur ke sertifikat dan pasangan kunci privat dalam format PEM atau PFX, yang dapat mengautentikasi Pendaftaran Aplikasi.
    • AZURE_CERTIFICATE_PASSWORD: Kata sandi yang ditetapkan untuk sertifikat.
  • Kata sandi pemilik sumber daya (Microsoft Entra token pengguna): Microsoft Entra pengguna dan kata sandi. Kami tidak merekomendasikan penggunaan jenis pemberian ini. Jika Anda memerlukan masuk interaktif, gunakan login perangkat.

    • AZURE_TENANT_ID: ID penyewa Microsoft Entra digunakan untuk autentikasi.
    • AZURE_CLIENT_ID: ID klien Pendaftaran Aplikasi di penyewa.
    • AZURE_USERNAME: Nama pengguna, juga dikenal sebagai upn, dari akun pengguna Microsoft Entra.
    • AZURE_PASSWORD: Kata sandi akun pengguna Microsoft Entra. Perhatikan bahwa ini tidak mendukung akun dengan MFA diaktifkan.
  • Identitas Layanan Terkelola Azure: Mendelegasikan manajemen kredensial ke platform. Metode ini mengharuskan kode dijalankan di Azure, misalnya, VM. Semua konfigurasi ditangani oleh Azure. Untuk informasi selengkapnya, lihat Identitas Layanan Terkelola Azure. Metode ini hanya tersedia saat menggunakan Azure Resource Manager.

Mengonfigurasi Telegraf

Telergraf adalah agen berbasis konfigurasi. Untuk memulai, Anda harus menginstal Telegraf dan mengonfigurasi plugin input dan output yang diperlukan. Lokasi default file konfigurasi, adalah sebagai berikut:

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

Untuk mengaktifkan plugin output Azure Data Explorer, Anda harus membatalkan komentar bagian berikut dalam file konfigurasi yang dibuat secara otomatis:

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

Jenis penyerapan yang didukung

Plugin mendukung penyerapan terkelola (streaming) dan antrean (batching). Jenis penyerapan default diantrekan.

Penting

Untuk menggunakan penyerapan terkelola, Anda harus mengaktifkan penyerapan streaming pada kluster Anda.

Untuk mengonfigurasi jenis penyerapan untuk plugin, ubah file konfigurasi yang dihasilkan secara otomatis, sebagai berikut:

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

Kueri data yang diserap

Berikut ini adalah contoh data yang dikumpulkan menggunakan plugin input SQL dan syslog bersama dengan plugin output Azure Data Explorer. Untuk setiap metode input, ada contoh cara menggunakan transformasi dan kueri data di Azure Data Explorer.

Plugin input SQL

Tabel berikut menunjukkan data metrik sampel yang dikumpulkan oleh plugin input SQL:

nama tag rentang waktu 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,"reads":47,""read_latency_ms":68,"reads":47,""rg_read_stall_ms":42,"rg_write_stall_ms":0,"space_used_mb":0,"write_bytes":1220608,"write_latency_ms":103,"writes":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}

Karena objek metrik yang dikumpulkan adalah jenis kompleks, kolom bidang dan tag disimpan sebagai jenis data dinamis. Ada banyak cara untuk mengkueri data ini, misalnya:

  • Mengkueri atribut JSON secara langsung: Anda dapat mengkueri data JSON dalam format mentah tanpa mengurainya.

    Contoh 1

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

    Contoh 2

    Tablename
    | distinct tostring(tags.database_name)
    

    Catatan

    Pendekatan ini dapat memengaruhi performa saat menggunakan data dalam volume besar. Dalam kasus seperti itu, gunakan pendekatan kebijakan pembaruan.

  • Menggunakan kebijakan pembaruan: Mengubah kolom jenis data dinamis menggunakan kebijakan pembaruan. Kami merekomendasikan pendekatan ini untuk mengkueri data dalam volume besar.

    // 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}]'
    

Plugin input Syslog

Tabel berikut menunjukkan data metrik sampel yang dikumpulkan oleh plugin input Syslog:

nama tag rentang waktu 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 Gagal tersambung ke 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): sesi dibuka untuk root pengguna oleh (uid=0)","procid":"26446","severity_code":6,"timestamp":"1632148621120781000","version":1}

Ada beberapa cara untuk meratakan kolom dinamis dengan menggunakan operator perluas atau plugin bag_unpack(). Anda dapat menggunakan salah satunya dalam fungsi kebijakan pembaruan Transform_TargetTableName().

  • Gunakan operator extend: Sebaiknya gunakan pendekatan ini karena lebih cepat dan kuat. Bahkan jika skema berubah, skema tidak akan merusak kueri atau dasbor.

    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
    
  • Gunakan plugin bag_unpack(): Pendekatan ini secara otomatis membuka kemasan kolom jenis dinamis. Mengubah skema sumber dapat menyebabkan masalah saat memperluas kolom secara dinamis.

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