Bagikan melalui


Mendapatkan data dengan Fluent Bit

Fluent Bit adalah agen sumber terbuka yang mengumpulkan log, metrik, dan jejak dari berbagai sumber. Ini memungkinkan Anda untuk memfilter, memodifikasi, dan mengagregasi data peristiwa sebelum mengirimkannya ke penyimpanan. Artikel ini memandu Anda melalui proses penggunaan Fluent Bit untuk mengirim data ke database KQL Anda.

Artikel ini memperlihatkan cara menyerap data dengan Fluent Bit.

Untuk daftar lengkap konektor data, lihat gambaran umum konektor data .

Prasyarat

Membuat perwakilan layanan Microsoft Entra

Prinsipal layanan Microsoft Entra dapat dibuat melalui portal Microsoft Azure atau melalui pemrograman, seperti dalam contoh berikut.

Prinsipal layanan ini adalah identitas yang digunakan oleh konektor untuk menulis data ke tabel Anda di Kusto. Anda memberikan izin bagi perwakilan layanan ini untuk mengakses sumber daya Kusto.

  1. Masuk ke langganan Azure Anda melalui Azure CLI. Kemudian autentikasi di browser.

    az login
    
  2. Pilih langganan untuk menghosting perwakilan. Langkah ini diperlukan saat Anda memiliki beberapa langganan.

    az account set --subscription YOUR_SUBSCRIPTION_GUID
    
  3. Buat perwakilan layanan. Dalam contoh ini, perwakilan layanan disebut my-service-principal.

    az ad sp create-for-rbac -n "my-service-principal" --role Contributor --scopes /subscriptions/{SubID}
    
  4. Dari data JSON yang dikembalikan, salin appId, password, dan tenant untuk penggunaan di masa mendatang.

    {
      "appId": "00001111-aaaa-2222-bbbb-3333cccc4444",
      "displayName": "my-service-principal",
      "name": "my-service-principal",
      "password": "00001111-aaaa-2222-bbbb-3333cccc4444",
      "tenant": "00001111-aaaa-2222-bbbb-3333cccc4444"
    }
    

Anda telah membuat aplikasi Microsoft Entra dan perwakilan layanan Anda.

Membuat tabel target

Fluent Bit meneruskan log dalam format JSON dengan tiga properti: log (dinamis), tag (string), dan timestamp (tanggalwaktu).

Anda dapat membuat tabel dengan kolom untuk setiap properti ini. Atau, jika Anda memiliki log terstruktur, Anda dapat membuat tabel dengan properti log yang dipetakan ke kolom kustom. Untuk mempelajari lebih lanjut, pilih tab yang relevan.

Untuk membuat tabel untuk log masuk dari Fluent Bit:

  1. Telusuri ke lingkungan kueri Anda.

  2. Pilih database tempat Anda ingin membuat tabel.

  3. Jalankan perintah.create table:

    .create table FluentBitLogs (log:dynamic, tag:string, timestamp:datetime)
    

    Properti JSON masuk secara otomatis dipetakan ke dalam kolom yang benar.

Memberikan izin kepada perwakilan layanan

Berikan perwakilan layanan dari Membuat perwakilan layanan Microsoft Entradatabase ingestor izin peran untuk bekerja dengan database. Untuk informasi selengkapnya, lihat contoh . Ganti placeholder DatabaseName dengan nama database target dan ApplicationID dengan nilai AppId yang Anda simpan saat membuat principal layanan Microsoft Entra.

.add database <DatabaseName> ingestors ('aadapp=<ApplicationID>;<TenantID>')

Mengonfigurasi Fluent Bit untuk mengirim log ke tabel Anda

Untuk mengonfigurasi Fluent Bit untuk mengirim log ke tabel Anda di Kusto, buat file konfigurasi mode klasik atau mode YAML dengan properti output berikut:

Bidang KETERANGAN Diperlukan Bawaan
Nama Nama alur. azure_kusto
ID Penyewa ID penyewa dari Membuat perwakilan layanan Microsoft Entra. ✔️
ID klien ID aplikasi dari Membuat perwakilan layanan Microsoft Entra. ✔️
client_secret (kunci rahasia klien) Nilai kunci rahasia klien (kata sandi) dari Membuat perwakilan layanan Microsoft Entra. ✔️
managed_identity_client_id ID klien identitas terkelola yang akan digunakan untuk autentikasi. ✔️
titik penerimaan Masukkan nilai seperti yang dijelaskan untuk Ingestion_Endpoint. ✔️
nama_basis_data Nama database yang berisi tabel log Anda. ✔️
nama_tabel Nama tabel dari Buat tabel target. ✔️
referensi_pemetaan_pemasukan Nama pemetaan penyerapan dari Buat tabel target. Jika Anda tidak membuat pemetaan penyerapan, hapus properti dari file konfigurasi.
log_key Nama kunci konten log. Misalnya, log. log
include_tag_key Jika diaktifkan, tag ditambahkan ke output. On
tag_key Nama kunci dari tag. Diabaikan jika include_tag_key salah. tag
sertakan_kunci_waktu Tanda waktu ditambahkan ke output, jika diaktifkan. Menggunakan properti time_key. On
kunci_waktu Nama kunci untuk tanda waktu dalam rekaman log. Diabaikan jika include_time_key false. timestamp
batas_waktu_koneksi_titik_akhir_ingestion Batas waktu koneksi berbagai titik akhir Kusto dalam hitungan detik. 60
kompresi_dihidupkan Mengirim payload HTTP terkompresi (gzip) ke Kusto, jika diaktifkan. true
interval_penyegaran_sumber_daya_ingesti Selang penyegaran sumber daya ingesti dari titik akhir Kusto dalam hitungan detik.
Pekerja Jumlah pekerja yang bertugas melakukan operasi flush pada output ini. 0
pengaktifan_penyanggaan Jika diaktifkan, menyimpan data dalam buffer ke dalam disk sebelum dimasukkan ke dalam Kusto. Off
jalur penyangga Menentukan lokasi direktori tempat data yang di-buffer akan disimpan jika buffering_enabled adalah On. /tmp/fluent-bit/azure-kusto/
batas_waktu_unggah Menentukan batas waktu untuk unggahan jika buffering_enabled adalah On. File yang lebih lama dari ini diserap bahkan jika di bawah batas ukuran. 30m
ukuran_file_unggahan Menentukan ukuran maksimum file yang akan diunggah jika buffering_enabled adalah On. 200MB
azure_kusto_buffer_key Kunci buffer Azure Kusto untuk mengidentifikasi instans plugin ketika buffering_enabled adalah On. Diperlukan untuk beberapa output Azure Kusto dengan buffering. key
batas ukuran direktori penyimpanan Ukuran maksimum direktori tempat data buffer disimpan jika buffering_enabled adalah On. 8GB
hapus_berkas_buffer_dini Kapan buffering_enabled adalah On, apakah akan menghapus file yang di-buffer lebih awal setelah pembuatan blob berhasil. Off
unify_tag Membuat satu file buffer saat buffering_enabled adalah On. On
blob_uri_length Atur panjang URI blob yang dihasilkan sebelum menyerap ke Kusto. 64
penjadwal_maks_coba_ulang Ketika buffering_enabled adalah On, atur jumlah maksimum percobaan ulang untuk penyerapan menggunakan penjadwal. 3
hapus_saat_gagal_unggah_maks Ketika buffering_enabled adalah On, apakah akan menghapus file buffer pada kesalahan unggahan maksimum? Off
IO_timeout Konfigurasikan batas waktu HTTP IO untuk unggahan. 60s

Untuk melihat contoh file konfigurasi, pilih tab yang relevan:

[SERVICE]
    Daemon Off
    Flush 1
    Log_Level trace
    HTTP_Server On
    HTTP_Listen 0.0.0.0
    HTTP_Port 2020
    Health_Check On

[INPUT]
    Name tail
    Path /var/log/containers/*.log
    Tag kube.*
    Mem_Buf_Limit 1MB
    Skip_Long_Lines On
    Refresh_Interval 10

[OUTPUT]
    [OUTPUT]
    Match *
    Name azure_kusto
    Tenant_Id <app_tenant_id>
    Client_Id <app_client_id>
    Client_Secret <app_secret>
    Ingestion_Endpoint https://ingest-<cluster>.<region>.kusto.windows.net
    Database_Name <database_name>
    Table_Name <table_name>
    Ingestion_Mapping_Reference <mapping_name>
    ingestion_endpoint_connect_timeout <ingestion_endpoint_connect_timeout>
    compression_enabled <compression_enabled>
    ingestion_resources_refresh_interval <ingestion_resources_refresh_interval>
    buffering_enabled On
    upload_timeout 2m
    upload_file_size 125M
    azure_kusto_buffer_key kusto1
    buffer_file_delete_early Off
    unify_tag On
    buffer_dir /var/log/
    store_dir_limit_size 16GB
    blob_uri_length 128
    scheduler_max_retries 3
    delete_on_max_upload_error Off
    io_timeout 60s

Mengonfirmasi penyerapan data

  1. Setelah data tiba dalam tabel, konfirmasikan transfer data, dengan memeriksa jumlah baris:

    FluentBitLogs
    | count
    
  2. Untuk menampilkan sampel data log, jalankan kueri berikut:

    FluentBitLogs
    | take 100