Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Azure Application Insights adalah layanan Pemantauan Performa Aplikasi (APM) yang secara otomatis menangkap permintaan, jejak, pengecualian, dan metrik performa. Mengintegrasikannya dengan Penyusun API Data (DAB) membantu Anda memantau perilaku runtime, mendiagnosis masalah, dan mengoptimalkan performa dalam produksi.
Peringatan
Integrasi Application Insights dengan DAB mungkin memiliki batasan saat dihosting di aplikasi web Azure App Service karena instrumentasi ganda. Application Insights berfungsi paling baik dengan DAB saat Anda menghost sendiri dalam kontainer, Azure Container Apps, atau Azure Kubernetes Service (AKS). Jika Anda harus menggunakan App Service, uji secara menyeluruh atau pertimbangkan pendekatan pemantauan alternatif.
Prasyarat
- File konfigurasi DAB yang ada.
- Sumber daya Azure Application Insights.
- String koneksi untuk Application Insights.
- CLI pembangun API Data. Menginstal CLI
Dapatkan string koneksi
Sebelum mengonfigurasi DAB, dapatkan string koneksi Application Insights dari Azure.
portal Azure
- Buka sumber daya Application Insights di portal Azure.
- Buka Gambaran Umum atau Properti.
- Salin String Koneksi (bukan Kunci Instrumentasi).
Azure CLI (antarmuka baris perintah Azure)
az monitor app-insights component show \
--app my-app-insights \
--resource-group my-rg \
--query connectionString -o tsv
Format string untuk koneksi
InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://<region>.in.applicationinsights.azure.com/;LiveEndpoint=https://<region>.livediagnostics.monitor.azure.com/
Nota
Gunakan string koneksi lengkap (bukan hanya kunci instrumentasi) untuk titik akhir khusus wilayah dan performa yang lebih baik.
Konfigurasikan Wawasan Aplikasi
application-insights Tambahkan bagian di bawah runtime.telemetry dalam file konfigurasi Anda.
{
"runtime": {
"telemetry": {
"application-insights": {
"enabled": true,
"connection-string": "@env('app-insights-connection-string')"
}
}
}
}
Konfigurasi ini menggunakan variabel lingkungan untuk string koneksi. Tentukan dalam .env file:
app-insights-connection-string="InstrumentationKey=...;IngestionEndpoint=...;LiveEndpoint=..."
Peringatan
Jangan pernah menerapkan string koneksi ke kontrol sumber. Selalu gunakan variabel lingkungan atau Azure Key Vault.
Command-line
Mengonfigurasi Application Insights melalui dab add-telemetry.
| Option | Deskripsi |
|---|---|
--app-insights-enabled |
Mengaktifkan atau menonaktifkan Application Insights (true atau false). |
--app-insights-conn-string |
String koneksi untuk Application Insights. |
Mengaktifkan Application Insights
dab add-telemetry \
--app-insights-enabled true \
--app-insights-conn-string "@env('app-insights-connection-string')"
Menonaktifkan Application Insights
dab add-telemetry \
--app-insights-enabled false
Nota
Pengaturan Application Insights menggunakan dab add-telemetry, bukan dab configure.
Jalankan DAB
Mulai DAB dengan file konfigurasi Anda:
dab start
Periksa log startup untuk konfirmasi:
Application Insights telemetry is enabled with connection string from config.
Cara kerjanya
Saat Application Insights diaktifkan, DAB:
- Mendaftarkan Application Insights SDK menggunakan
AddApplicationInsightsTelemetry(). - Mendaftarkan penginisialisasi telemetri kustom untuk memperkaya semua telemetri dengan properti khusus DAB.
- Mengonfigurasi
TelemetryClientdengan string koneksi yang berasal dari konfigurasi. - Terintegrasi dengan pengelogan ASP.NET Core untuk mengambil log konsol sebagai jejak.
Aliran Data
DAB Application
↓
ILogger (ASP.NET Core)
↓
ApplicationInsightsLoggerProvider
↓
AppInsightsTelemetryInitializer (adds custom properties)
↓
TelemetryClient
↓
Application Insights (Azure)
Apa yang akan ditangkap
| Jenis telemetri | Sumber | Examples |
|---|---|---|
| Permintaan | ASP.NET Core middleware | Permintaan REST/GraphQL, waktu respons, kode status |
| Tanda-tanda |
ILogger panggilan di DAB |
Log pengaktifan, log eksekusi kueri, peringatan |
| Pengecualian | Pengecualian yang Tidak Tertangani | Kesalahan runtime, kesalahan konfigurasi, kesalahan database |
| Dependensi | Panggilan Database | Kueri SQL, operasi Azure Cosmos DB, durasi |
| Penghitung kinerja | Runtime | Penggunaan CPU, konsumsi memori, tingkat permintaan |
Pengayaan telemetri
DAB secara otomatis memperkaya semua telemetri Application Insights dengan properti kustom:
| Harta benda | Deskripsi | Contoh nilai |
|---|---|---|
ProductName |
Pengidentifikasi agen pengguna DAB | dab-1.2.3 |
UserAgent |
String agen pengguna DAB penuh | data-api-builder/1.2.3 |
Cloud.RoleName |
Nama peran cloud DAB | DataApiBuilder |
Component.Version |
Versi DAB | 1.2.3 |
Session.Id |
Pengidentifikasi sesi unik | guid |
Properti ini membantu memfilter dan menghubungkan telemetri khusus DAB di Application Insights.
Kueri Telemetri di Azure
Jejak (log)
traces
| where customDimensions["ProductName"] startswith "dab-"
| order by timestamp desc
| project timestamp, message, severityLevel
Pemetaan LogLevel:
| LogLevel | Tingkat Keparahan | Nilai |
|---|---|---|
| Jejak / Pemecahan Masalah | Verbositas | 0 |
| Informasi | Informasi | 1 |
| Peringatan | Peringatan | 2 |
| Kesalahan | Kesalahan | 3 |
| Penting | Penting | 4 |
Permintaan
requests
| where customDimensions["ProductName"] startswith "dab-"
| order by timestamp desc
| project timestamp, name, duration, resultCode, success
Pengecualian
exceptions
| where customDimensions["ProductName"] startswith "dab-"
| order by timestamp desc
| project timestamp, type, outerMessage, details
Filter menurut versi DAB
traces
| where customDimensions["Component.Version"] == "1.2.3"
| project timestamp, message, severityLevel
Menemukan kueri GraphQL yang lambat
requests
| where name contains "/graphql"
| where duration > 1000
| project timestamp, name, duration, resultCode
| order by duration desc
Tingkat keberhasilan permintaan
requests
| where customDimensions["ProductName"] startswith "dab-"
| summarize
Total = count(),
Success = countif(success == true),
Failed = countif(success == false)
| extend SuccessRate = (Success * 100.0) / Total
Operasi database paling lambat teratas
dependencies
| where type == "SQL" or type == "Azure Cosmos DB"
| top 10 by duration desc
| project timestamp, name, duration, target, data
Metrik Langsung
Metrik Langsung menyediakan pemantauan waktu nyata dengan <latensi 1 detik. Application Insights memungkinkannya secara otomatis saat dikonfigurasi.
Mengakses Metrik Langsung
- Buka sumber daya Application Insights Anda di portal Microsoft Azure.
- Navigasi ke Metrik Langsung di menu sebelah kiri.
- Mulai aplikasi DAB Anda.
- Dalam hitungan detik, data real-time muncul.
Apa yang Anda lihat
| Ukuran | Deskripsi |
|---|---|
| Permintaan Masuk | Permintaan REST/GraphQL per detik |
| Permintaan Keluar | Panggilan database per detik |
| Kesehatan Keseluruhan | Tingkat keberhasilan, kegagalan per detik |
| Memori / CPU | Pemakaian sumber daya |
| Tingkat Pengecualian | Pengecualian per detik |
Petunjuk / Saran
Gunakan Metrik Langsung selama pengembangan untuk melihat umpan balik langsung tentang permintaan API dan operasi database.
Pengambilan sampel dan retensi data
Pengambilan sampel adaptif
Application Insights SDK secara otomatis mengambil sampel telemetri ketika volume tinggi untuk mengurangi biaya dan tetap dalam batas tarif. Laju pengambilan sampel ditampilkan di UI Application Insights.
Perilaku default:
- Lalu lintas rendah: Semua data telemetri dikirim (100%)
- Lalu lintas tinggi: Pengambilan sampel secara otomatis mengurangi volume
- Data representatif dikelola
Retensi data
| Plan | Retensi default | Retensi maksimum |
|---|---|---|
| Tingkatan gratis | 90 hari | 90 hari |
| Pay-as-you-go | 90 hari | 730 hari (dua tahun) |
Mengonfigurasi retensi: Penggunaan → Application Insights dan perkiraan biaya → Retensi Data.
Pertimbangan performa
Overhead telemetri
Application Insights menambahkan overhead minimal.
- Memori: ~10-50 MB tergantung pada lalu lintas
- CPU: <1% di bawah beban normal
- Latensi: <1 ms per permintaan (asinkron)
Praktik terbaik
- Gunakan variabel lingkungan untuk string koneksi.
- Nonaktifkan dalam pengembangan lokal jika tidak diperlukan.
- Pantau laju pengambilan sampel dalam produksi.
- Atur retensi data yang sesuai untuk mengelola biaya.
Nonaktifkan dalam pengembangan
{
"runtime": {
"telemetry": {
"application-insights": {
"enabled": false
}
}
}
}
Ekspor dan visualisasi
Telemetri diekspor melalui Application Insights SDK. SDK melakukan batch dan mengirim data secara berkala.
Nota
SDK mengontrol waktu ekspor. Perilaku bawaan mengirimkan telemetri secara berkelompok setiap beberapa detik.
Peringatan
Kontainer sementara yang mati dengan cepat dapat keluar sebelum ekspor selesai. Konfigurasikan jendela matikan yang anggun dan hindari penghentian agresif untuk memastikan flush telemetri yang tertunda.
String koneksi vs. kunci instrumentasi
Gunakan string koneksi (disarankan)
{
"connection-string": "InstrumentationKey=...;IngestionEndpoint=https://eastus.in.applicationinsights.azure.com/"
}
Keuntungan:
- Titik akhir khusus wilayah (latensi yang lebih rendah)
- Mendukung sovereign cloud
- Tahan Masa Depan (pendekatan yang direkomendasikan Microsoft)
Kunci instrumentasi lama
Meskipun masih didukung, Microsoft merekomendasikan string koneksi untuk implementasi baru.
{
"connection-string": "InstrumentationKey=00000000-0000-0000-0000-000000000000"
}
Nota
Jika Anda hanya memberikan kunci instrumentasi, Application Insights menggunakan titik akhir penyerapan global, yang mungkin memiliki latensi yang lebih tinggi.
Troubleshooting
Kesalahan: "String koneksi Application Insights tidak boleh null atau kosong jika diaktifkan"
Penyebab: enabled diatur ke true tetapi connection-string hilang atau kosong.
Solusi: Berikan string koneksi yang valid saat mengaktifkan Application Insights, atau atur enabled ke false.
{
"runtime": {
"telemetry": {
"application-insights": {
"enabled": true,
"connection-string": "@env('app-insights-connection-string')"
}
}
}
}
DAB telah dimulai tetapi telemetri tidak muncul
Periksa log startup untuk pesan-pesan ini:
dab start --LogLevel Information
Pesan keberhasilan:
Application Insights telemetry is enabled with connection string from config.
Pesan peringatan:
Logs won't be sent to Application Insights because an Application Insights connection string is not available in the runtime config.
Application Insights are disabled.
Pesan kesalahan:
Telemetry client is not initialized.
Memverifikasi variabel lingkungan
echo $app-insights-connection-string
Uji dengan string koneksi langsung
Gunakan string koneksi langsung untuk sementara (bukan variabel lingkungan) untuk memverifikasi string valid:
{
"connection-string": "InstrumentationKey=...;IngestionEndpoint=..."
}
Jika pengujian ini berfungsi, masalahnya adalah dengan pemuatan variabel lingkungan.