Ketergantungan Azure SQL (berdasarkan EF Core 3.1.7) tidak muncul di Peta Aplikasi Wawasan Aplikasi
Kami memiliki fungsi Azure berdasarkan .net Core 3.1. Kami menggunakan versi terbaru EntityFrameworkCore.
Ini terhubung ke Azure SQL untuk menyimpan / mengambil / kueri data. Kami dapat melihat log untuk Azure SQL seperti Membuka koneksi, menutup koneksi di Live Stream dari wawasan Aplikasi terkadang (terkadang mungkin karena Pengambilan Sampel diaktifkan)
Namun, kami tidak melihat ketergantungan Azure SQL di peta Aplikasi wawasan Aplikasi. Bahkan, melihat tabel pelacakan, saya tidak melihat apa pun yang terkait dengan Azure SQL.
Apakah ada sesuatu yang perlu kami aktifkan agar Azure SQL ditampilkan sebagai ketergantungan? Saya membaca di beberapa artikel msdn, bahwa itu secara otomatis terdeteksi untuk SQL ketika Anda menggunakan paket Microsoft.Data.SqlClient (dan saya melihat inti EF telah menginstal paket itu secara internal).
Juga pertanyaan tindak lanjut jika di atas dijawab dan diselesaikan - apakah ada cara, saya dapat memeriksa apakah koneksi dibuang / ditutup atau kapan koneksi dibuka / ditutup untuk pemanggilan fungsi tertentu di App insights?
Sesuai komentar di bawah ini, menambahkan lebih banyak info,
Kami menambahkan DbContext ke layanan menggunakan pernyataan berikut di file startup.
builder.Services.AddDbContextPool<OurDbContext>(options =>
{
options.UseSqlServer("connectionstring"), builder =>
{
builder.EnableRetryOnFailure(3, TimeSpan.FromSeconds(2), null);
});
});
Kelas OurDbContext memiliki konstruktor berikut,
public OurDbContext(DbContextOptions<OurDbContext> options)
: base(options)
{
}
Dan kemudian kami menyuntikkan kelas OurDbContext di repositori berbeda yang menggunakan konteks ini untuk berbicara dengan SQL. Mirip dengan di bawah ini:
public class Repo : IRepo
{
public Repo(OurDbContext ourDbContext)
{
}
public async Task AddAsync(Entity entity)
{
ourDbContext.AddAsync(entity);
ourDbContext.SaveChangesAsync()
}
}
Kami menyuntikkan repo ini di kelas Fungsi dan memanggil metode di atas seperti
await _repo.AddAsync()
Kami menggunakan paket EFCore di bawah ini

yang kami miliki di bawah ini dalam file host.json.
{
"version": "2.0",
"logging": {
"applicationInsights": {
"samplingExcludedTypes": "Request",
"samplingSettings": {
"isEnabled": true
}
}
}
}
Catatan: Saya mencoba tautan di bawah ini hanya untuk memeriksa apakah ketergantungan sql muncul di App insights, meskipun itu tidak menggunakan konfigurasi EFCore / versi terbaru dari fungsi Azure yang saya gunakan. Satu-satunya hal yang saya tambahkan adalah APPINSIGHTS_INSTRUMENTATIONKEY di pengaturan lokal saya.
https://dev.to/azure/using-entity-framework-with-azure-functions-50aa Kode Sumber GitHub: https://github.com/jeffhollan/functions-csharp-entityframeworkcore
Dengan di atas, saya bisa melihat ketergantungan SQL di wawasan aplikasi saya. Namun, ketika saya memodifikasi di atas ke versi fungsi Azure, inti .net, EFCore, yang saya gunakan untuk proyek saya saat ini, ketergantungan SQL berhenti muncul di wawasan Aplikasi. Padahal, menambahkan di bawah level logging menunjukkan log debug di Console.
"Logging": {
"LogLevel": {
"Default": "Debug",
}
}
Tangkapan layar sesuai komentar di bawah ini untuk KrishnenduGhosh-MSFT.


Log dari stackify.

Jawaban
Perbarui bagian logging Anda di host.json seperti di bawah ini untuk mengizinkan log tingkat Informasi (perhatikan saya menambahkan logLevel di konfigurasi yang ada yang Anda posting di atas). Secara default Peringatan jika Anda tidak menentukan. Seperti yang disebutkan dalam Catatan di sini , dependensi dicatat dengan tingkat Informasi. Perhatikan juga excludedTypes (bukan samplingExcludedTypes) harus berada di dalam samplingSettings sesuai dokumentasi .
{
"version": "2.0",
"logging": {
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"excludedTypes": "Dependency;Request"
}
},
"logLevel": {"default": "Information"}
}
}
Juga untuk fungsi Azure, Anda tidak boleh menambahkan microsoft.applicationinsights.aspnetcore
nuget dan builder.Services.AddApplicationInsightsTelemetry();
di Startup. Itu untuk aplikasi inti asp.net. Fungsi seharusnya tidak memiliki ituhttps://docs.microsoft.com/en-us/azure/azure-functions/functions-dotnet-dependency-injection#logging-services