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:
- Jika diperlukan, buat database menggunakan instruksi di Membuat database KQL.
- Jika diperlukan, buat tabel menggunakan instruksi di Membuat tabel kosong.
- Dapatkan URI kueri atau penyerapan menggunakan instruksi di Salin URI.
- Jalankan kueri dalam set kueri KQL.
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.
- Untuk informasi tentang cara membuat dan mendaftarkan aplikasi di ID Microsoft Entra, lihat Mendaftarkan aplikasi.
- Untuk informasi tentang perwakilan layanan, lihat Aplikasi dan objek perwakilan layanan dalam ID Microsoft Entra.
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')
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk