Menggunakan Azure Log Analytics di penyusun API Data

Azure Log Analytics adalah platform pengelogan terpusat yang menggabungkan log dari aplikasi, sumber daya Azure, VM, kontainer, dan banyak lagi. Mengintegrasikannya dengan penyusun API Data (DAB) membantu perusahaan memenuhi persyaratan kepatuhan, tata kelola, dan pengamatan. Tidak seperti Application Insights (yang berfokus pada APM), Log Analytics menyediakan agregasi log yang lebih luas dengan dukungan Kusto Query Language (KQL).

Diagram memperlihatkan alur telemetri Analitik Log.

Prasyarat

  • File konfigurasi DAB yang ada.
  • Langganan Azure dengan izin untuk membuat sumber daya Log Analytics.
  • Ruang kerja Azure Log Analytics dengan:
    • Tabel kustom (berakhiran _CL)
    • Aturan Pengumpulan Data (DCR)
    • Titik akhir Pengumpulan Data (DCE)
  • Identitas Terkelola diaktifkan pada host DAB Anda (Azure App Service, Aplikasi Kontainer, VM, dll.).
  • CLI pembangun API Data. Menginstal CLI

Menyiapkan sumber daya Azure Log Analytics

Sebelum mengonfigurasi DAB, buat sumber daya Azure yang diperlukan.

Membuat ruang kerja Analitik Log

  1. Navigasi ke ruang kerja Azure Portal>Log Analytics.
  2. Pilih + Buat.
  3. Pilih langganan, grup sumber daya, dan wilayah Anda.
  4. Berikan nama ruang kerja.
  5. Pilih Tinjau + buat>Buat.

Membuat tabel kustom

Tabel kustom untuk API Ingesti Log harus diakhiri dengan _CL.

  1. Di ruang kerja Analitik Log Anda, navigasikan ke Tabel.
  2. Pilih + Buat>Log kustom baru (berbasis DCR).
  3. Masukkan nama tabel (misalnya, DabLogs_CL).
  4. Tentukan skema dengan kolom ini:
    • Time (tanggalwaktu)
    • LogLevel (String)
    • Message (String)
    • Component (String)
    • Identifier (String)
  5. Pilih Buat.

Membuat Titik Akhir Pengumpulan Data (DCE)

  1. Navigasi ke Pantau>Titik Akhir Pengumpulan Data.
  2. Pilih + Buat.
  3. Pilih langganan, grup sumber daya, dan wilayah Anda.
  4. Berikan nama (misalnya, my-dce).
  5. Pilih Tinjau + buat>Buat.
  6. Salin URL titik akhir Penyerapan Log (misalnya, https://my-dce.eastus-1.ingest.monitor.azure.com).

Membuat Aturan Pengumpulan Data (DCR)

  1. Navigasi ke Pantau>Aturan Pengumpulan Data.
  2. Pilih + Buat.
  3. Pilih langganan, grup sumber daya, wilayah.
  4. Berikan nama (misalnya, my-dcr).
  5. Di Sumber data, pilih Log Teks Khusus.
  6. Konfigurasi
    • Titik Akhir Pengumpulan Data: Pilih DCE Anda.
    • Tujuan: Ruang kerja Analitik Log Anda.
    • Tabel: Tabel kustom Anda (DabLogs_CL).
  7. Pilih Tinjau + buat>Buat.
  8. Salin ID Yang Tidak Dapat Diubah (dimulai dengan dcr-).

Melakukan konfigurasi autentikasi

DAB menggunakan Azure Managed Identity untuk mengautentikasi ke Analitik Log. Tidak ada kredensial yang disimpan dalam konfigurasi Anda.

Aktifkan Identitas yang Dikelola

az webapp identity assign \
  --name my-app \
  --resource-group my-rg

Tetapkan izin

Berikan peran Penerbit Metrik Pemantauan ke Identitas Terkelola Anda di DCR.

# Get Managed Identity principal ID
PRINCIPAL_ID=$(az webapp identity show \
  --name my-app \
  --resource-group my-rg \
  --query principalId -o tsv)

# Get DCR resource ID
DCR_ID=$(az monitor data-collection rule show \
  --name my-dcr \
  --resource-group my-rg \
  --query id -o tsv)

# Assign role
az role assignment create \
  --assignee $PRINCIPAL_ID \
  --role "Monitoring Metrics Publisher" \
  --scope $DCR_ID

Penting

Tanpa penugasan peran ini, DAB tidak dapat mengirim log ke Log Analytics bahkan dengan konfigurasi yang benar.

Konfigurasi Log Analytics

azure-log-analytics Tambahkan bagian di bawah runtime.telemetry dalam file konfigurasi Anda.

{
  "runtime": {
    "telemetry": {
      "azure-log-analytics": {
        "enabled": true,
        "dab-identifier": "my-dab-instance",
        "flush-interval-seconds": 10,
        "auth": {
          "custom-table-name": "DabLogs_CL",
          "dcr-immutable-id": "dcr-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
          "dce-endpoint": "https://my-dce.eastus-1.ingest.monitor.azure.com"
        }
      }
    }
  }
}

Properti konfigurasi

Harta benda Description Bawaan Constraints
enabled Mengaktifkan atau menonaktifkan integrasi Analitik Log. false Boolean
dab-identifier String unik untuk mengidentifikasi entri log dari instans DAB ini. DabLogs String apa saja
flush-interval-seconds Seberapa sering log dikirimkan ke Log Analytics (dalam hitungan detik). 5 Harus > menjadi 0
auth.custom-table-name Nama tabel kustom di ruang kerja Analitik Log Anda. (diperlukan) Harus diakhir dengan _CL
auth.dcr-immutable-id ID Aturan Pengumpulan Data Anda yang tidak dapat diubah. (diperlukan) Dimulai dengan dcr-
auth.dce-endpoint URL Titik Akhir Pengumpulan Data. (diperlukan) HTTPS URL

Command-line

Konfigurasikan Analitik Log melalui dab configure.

Aktifkan Analitik Log

dab configure \
  --runtime.telemetry.azure-log-analytics.enabled true

Tetapkan pengidentifikasi DAB

dab configure \
  --runtime.telemetry.azure-log-analytics.dab-identifier my-dab-instance

Menetapkan interval flush

dab configure \
  --runtime.telemetry.azure-log-analytics.flush-interval-seconds 10

Atur nama tabel kustom

dab configure \
  --runtime.telemetry.azure-log-analytics.auth.custom-table-name DabLogs_CL

Atur ID DCR yang tidak dapat diubah

dab configure \
  --runtime.telemetry.azure-log-analytics.auth.dcr-immutable-id dcr-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Mengatur titik akhir DCE

dab configure \
  --runtime.telemetry.azure-log-analytics.auth.dce-endpoint https://my-dce.eastus-1.ingest.monitor.azure.com

Jalankan DAB

Mulai DAB dengan file konfigurasi Anda:

dab start

Periksa log startup DAB untuk:

Azure Log Analytics is enabled.

Cara kerjanya

Ketika Log Analytics diaktifkan, DAB:

  1. Mengautentikasi ke Azure menggunakan Identitas Terkelola host.
  2. Mengelompokkan entri log berdasarkan flush-interval-seconds.
  3. Mengirim log ke Titik Akhir Pengumpulan Data (DCE).
  4. DCE mengarahkan log melalui Aturan Pengumpulan Data (DCR) untuk diproses.
  5. DCR menyerap log ke dalam tabel Analitik Log kustom Anda.

Aliran Data

DAB Application
    ↓
ILogger (ASP.NET Core)
    ↓
Log Analytics Logger Provider
    ↓
Managed Identity Authentication
    ↓
Data Collection Endpoint (DCE)
    ↓
Data Collection Rule (DCR)
    ↓
Log Analytics Workspace (Custom Table)

Apa yang akan ditangkap

Jenis telemetri Sumber Examples
Tanda-tanda ILogger panggilan di DAB Log pengaktifan, log eksekusi kueri, peringatan
Errors Penanganan situasi pengecualian Kesalahan runtime, kesalahan konfigurasi, kesalahan database
Info komponen Bagian Dalam DAB Modul mana yang menghasilkan log
Instans ID Konfigurasi dab-identifier nilai untuk pemfilteran

Struktur log

Setiap entri log yang dikirim ke Analitik Log berisi bidang-bidang ini:

Bidang Tipe Description Example
Time tanggalwaktu Tanda waktu (ISO 8601) 2026-01-27T14:30:00Z
LogLevel string Tingkat keparahan log Information Warning Error
Message string Pesan log Request completed successfully
Component string Komponen DAB yang menghasilkan log Azure.DataApiBuilder.Service.Startup
Identifier string Nilai dari konfigurasi dab-identifier my-dab-instance

Nota

Kolom tabel khusus di Log Analytics menambahkan akhiran: _s untuk string, _d untuk double, _t untuk tanggal dan waktu, dll.

Kueri log di Analisis Log

  1. Buka ruang kerja Analitik Log Anda di portal Microsoft Azure.

  2. Navigasi ke Log dan jalankan kueri KQL:

    DabLogs_CL
    | where Identifier_s == "my-dab-instance"
    | where LogLevel_s in ("Warning", "Error")
    | where TimeGenerated > ago(1h)
    | project TimeGenerated, LogLevel_s, Message_s, Component_s
    | order by TimeGenerated desc
    

Contoh pertanyaan

Hitung log menurut tingkat:

DabLogs_CL
| where TimeGenerated > ago(24h)
| summarize Count=count() by LogLevel_s

Temukan kesalahan dalam komponen tertentu:

DabLogs_CL
| where Component_s contains "SqlQueryExecutor"
| where LogLevel_s == "Error"
| project TimeGenerated, Message_s

Pertimbangan performa dan biaya

Perilaku pengelompokan

DAB mengelompokkan log-log dan mengirimkannya secara berkala setiap flush-interval-seconds

  • 5 detik (default): Keseimbangan yang baik untuk sebagian besar skenario.
  • 1-2 detik: Pengelogan hampir waktu nyata (lebih banyak panggilan API, biaya lebih tinggi).
  • 10-60 detik: Mengurangi panggilan API tetapi log tertunda.

Pengoptimalan biaya

Harga untuk Analitik Log didasarkan pada:

  1. Penyerapan data: Per GB yang diserap.
  2. Retensi data: Per GB per bulan setelah tingkat gratis.

Kurangi biaya:

  • Tingkatkan flush-interval-seconds untuk membundel lebih banyak log.
  • Gunakan filter tingkat log untuk mengecualikan log verbose. Untuk informasi selengkapnya, lihat Menyesuaikan verbositas log.
  • Atur retensi data yang sesuai di ruang kerja Analitik Log Anda.

Contoh: Filter untuk mengurangi volume

{
  "runtime": {
    "telemetry": {
      "log-level": {
        "Default": "Warning",
        "Microsoft": "Error"
      },
      "azure-log-analytics": {
        "enabled": true,
        "flush-interval-seconds": 30,
        "auth": {
          "custom-table-name": "DabLogs_CL",
          "dcr-immutable-id": "dcr-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
          "dce-endpoint": "https://my-dce.eastus-1.ingest.monitor.azure.com"
        }
      }
    }
  }
}

Ini hanya mengirim log Peringatan dan Kesalahan , yang secara signifikan mengurangi volume.

Retensi data

Retensi data Log Analytics dapat dikonfigurasi per ruang kerja:

Tier Retensi default Retensi maksimum
Tingkatan gratis 7 hari 7 hari
Pay-as-you-go 30 hari 730 hari (2 tahun)

Mengonfigurasi retensi: Ruang kerja Analitik Log → Penggunaan dan perkiraan biayaRetensi Data.

Petunjuk / Saran

Untuk persyaratan kepatuhan, pertimbangkan untuk mengarsipkan log lama ke Azure Storage untuk retensi jangka panjang.

Troubleshooting

Log tidak muncul di Analitik Log

Gejala: DAB berhasil dimulai tetapi tidak ada log yang muncul di ruang kerja Analitik Log Anda.

Kemungkinan penyebabnya:

  • Konfigurasi yang tidak lengkap: Periksa log startup DAB untuk kesalahan seperti Logs won't be sent to Azure Log Analytics because the Custom Table Name is not available in the config file. Verifikasi semua properti autentikasi yang diperlukan: custom-table-name, , dcr-immutable-iddce-endpoint.

  • Identitas Terkelola tidak ditetapkan: Verifikasi Identitas Terkelola diaktifkan dengan az webapp identity show --name my-app --resource-group my-rg. Periksa penetapan peran dengan az role assignment list --assignee <principal-id> --scope <dcr-id>.

  • Titik akhir DCE atau ID DCR yang salah: Verifikasi format titik akhir DCE adalah https://<dce-name>.<region>-1.ingest.monitor.azure.com. Verifikasi ID DCR yang tidak dapat diubah dimulai dengan dcr-.

  • Tabel kustom tidak ada: Tabel kustom harus diakhir dengan _CL. Skema tabel harus cocok dengan struktur log.

Kesalahan: Interval flush harus positif

Penyebab: flush-interval-seconds diatur ke 0 atau nilai negatif.

Solusi: Atur flush-interval-seconds ke bilangan bulat positif (minimum 1).

Log DAB menunjukkan "Azure Log Analytics dinonaktifkan"

Penyebab: enabled adalah false atau hilang dari konfigurasi.

Solusi: Atur enabled: true dalam konfigurasi Anda.

Analitik Log vs. Application Insights

Capability Application Insights Log Analytics
Fokus Pemantauan performa aplikasi (APM) Agregasi log terpusat
Bahasa Pemrograman Kueri KQL KQL
Ruang lingkup Aplikasi tunggal Aplikasi, VM, kontainer, sumber daya Azure
Skenario penggunaan Performa, pengecualian, pelacakan Kepatuhan, tata kelola, korelasi lintas sumber daya
Authentication Rangkaian koneksi Identitas Terkelola (melalui DCR/DCE)

Gunakan Application Insights saat Anda memerlukan fitur APM seperti pelacakan permintaan, pemetaan dependensi, dan pembuatan profil performa. Gunakan Analitik Log saat Anda memerlukan pengelogan terpusat di beberapa sumber daya dengan persyaratan kepatuhan perusahaan.