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 Functions terintegrasi dengan Application Insights untuk memungkinkan Anda memantau aplikasi fungsi dengan lebih baik. Application Insights, sebuah fitur dari Azure Monitor, adalah layanan Manajemen Performa Aplikasi (APM) yang dapat diperluas yang mengumpulkan data yang dihasilkan oleh aplikasi fungsi Anda, termasuk informasi yang ditulis oleh aplikasi Anda ke dalam log. Integrasi Application Insights biasanya diaktifkan saat aplikasi fungsi Anda dibuat. Jika aplikasi Anda tidak memiliki set kunci instrumentasi, Anda harus terlebih dahulu mengaktifkan integrasi Application Insights.
Anda dapat menggunakan Application Insights tanpa konfigurasi kustom apa pun. Namun, konfigurasi default dapat menghasilkan data dalam volume tinggi. Jika Anda menggunakan langganan Visual Studio Azure, Anda mungkin mencapai batas data untuk Application Insights. Untuk informasi selengkapnya tentang biaya Application Insights, lihat Tagihan Application Insights. Untuk informasi lebih lanjut, lihat Solusi dengan volume telemetri yang tinggi.
Dalam artikel ini, Anda mempelajari cara mengonfigurasi dan menyesuaikan data yang dikirim fungsi Anda ke Application Insights. Anda dapat mengatur konfigurasi pengelogan umum dalam file host.json. Secara default, pengaturan ini juga mengatur log kustom yang dipancarkan oleh kode Anda. Namun, dalam beberapa kasus perilaku ini dapat dinonaktifkan demi opsi yang memberi Anda lebih banyak kontrol atas pengelogan. Untuk informasi selengkapnya, lihat log aplikasi khusus.
Catatan
Anda dapat menggunakan pengaturan aplikasi yang dikonfigurasi khusus untuk mewakili pengaturan tertentu dalam file host.json untuk lingkungan tertentu. Melakukannya memungkinkan Anda mengubah pengaturan host.json secara efektif tanpa perlu menerbitkan ulang file host.json dalam proyek Anda. Untuk informasi lebih lanjut, lihat Menggantikan nilai host.json.
Log aplikasi kustom
Secara default, log aplikasi kustom yang Anda tulis dikirim ke host Functions, yang kemudian mengirimkannya ke Application Insights di bawah kategori Pekerja. Beberapa tumpukan bahasa memungkinkan Anda untuk mengirim log langsung ke Application Insights, yang memberi Anda kontrol penuh atas bagaimana log yang Anda tulis dikeluarkan. Dalam hal ini, alur pengelogan berubah dari worker -> Functions host -> Application Insights ke worker -> Application Insights.
Tabel berikut ini meringkas opsi konfigurasi yang tersedia untuk setiap tumpukan:
| Tumpukan bahasa komputer | Tempat untuk melakukan konfigurasi log kustom |
|---|---|
| .NET (model dalam proses) | host.json |
| .NET (model terisolasi) | Default (kirim log kustom ke host Functions): host.jsonUntuk mengirim log langsung ke Application Insights, lihat: Mengonfigurasi Application Insights di HostBuilder |
| Node.js | host.json |
| Python | host.json |
| Java | Default (kirim log kustom ke host Functions): host.jsonUntuk mengirim log langsung ke Application Insights, lihat: Konfigurasi agen Java Application Insights |
| PowerShell | host.json |
Ketika Anda mengonfigurasi log aplikasi kustom untuk dikirim secara langsung, host tidak lagi memancarkannya, dan host.json tidak lagi mengontrol perilaku mereka. Demikian pula, opsi yang diekspos oleh setiap tumpukan hanya berlaku untuk log kustom, dan tidak mengubah perilaku log runtime lain yang dijelaskan dalam artikel ini. Dalam hal ini, untuk mengontrol perilaku semua log, Anda mungkin perlu membuat perubahan di kedua konfigurasi.
Mengonfigurasi kategori
Pencatat log Azure Functions menyertakan category untuk setiap log. Kategori ini mengindikasikan bagian mana dari kode runtime atau kode fungsi Anda yang menulis log. Kategori berbeda antara versi 1.x dengan versi yang lebih baru.
Nama kategori ditetapkan secara berbeda dalam Functions dibandingkan dengan kerangka kerja .NET lainnya. Misalnya, saat Anda menggunakan ILogger<T> di ASP.NET, kategorinya adalah nama jenis generik. Fungsi C# juga menggunakan ILogger<T>, tetapi alih-alih mengatur nama jenis generik sebagai kategori, runtime menetapkan kategori berdasarkan sumbernya. Contohnya:
- Entri yang terkait dengan menjalankan fungsi diberi kategori
Function.<FUNCTION_NAME>. - Entri yang dibuat oleh kode pengguna di dalam fungsi, seperti saat memanggil
logger.LogInformation(), diberi kategoriFunction.<FUNCTION_NAME>.User.
Tabel berikut ini menjelaskan kategori utama log yang dibuat runtime:
| Kategori | Tabel | Deskripsi |
|---|---|---|
Function |
pelacakan | Termasuk fungsi memulai dan menyelesaikan log untuk semua eksekusi fungsi. Agar berhasil dijalankan, log ini berada pada tingkat Information. Pengecualian dicatat pada tingkat Error. Runtime juga membuat log tingkat Warning, seperti saat pesan antrean dikirim ke antrian kesalahan. |
Function.<YOUR_FUNCTION_NAME> |
dependensi | Data dependensi dikumpulkan secara otomatis untuk beberapa layanan. Agar berhasil dijalankan, log ini berada pada tingkat Information. Untuk informasi selengkapnya, lihat Dependensi. Pengecualian dicatat pada tingkat Error. Runtime juga membuat log tingkat Warning, seperti saat pesan antrean dikirim ke antrian kesalahan. |
Function.<YOUR_FUNCTION_NAME> |
customMetrics customEvents |
SDK khusus bahasa memungkinkan Anda mengumpulkan metrik kustom dan mencatat peristiwa kustom. Pendekatan yang direkomendasikan adalah menggunakan pengekspor OpenTelemetry. Untuk informasi selengkapnya, lihat Data telemetri khusus. |
Function.<YOUR_FUNCTION_NAME> |
pelacakan | Termasuk fungsi log yang dimulai dan diselesaikan untuk menjalankan fungsi tertentu. Agar berhasil dijalankan, log ini berada pada tingkat Information. Pengecualian dicatat pada tingkat Error. Runtime juga membuat log tingkat Warning, seperti saat pesan antrean dikirim ke antrian kesalahan. |
Function.<YOUR_FUNCTION_NAME>.User |
pelacakan | Log buatan pengguna, yang bisa menjadi log tingkat apa pun. Untuk informasi selengkapnya tentang menulis ke log dari fungsi Anda, lihat Menulis ke log. |
Host.Aggregator |
customMetrics | Log yang dihasilkan runtime ini memberikan pemanggilan fungsi dan rata-rata hitungan selama periode waktu yang dapat dikonfigurasi. Periode bawaan berdurasi 30 detik atau 1.000 hasil, mana pun yang terjadi lebih dulu. Contohnya adalah jumlah pengulangan, tingkat kesuksesan, dan durasi. Semua log ini ditulis pada tingkat Information. Jika Anda memfilter pada level Warning atau lebih tinggi, Anda tidak akan melihat data ini sama sekali. |
Host.Results |
permintaan | Log yang dihasilkan saat runtime ini mengindikasikan keberhasilan atau kegagalan suatu fungsi. Semua log ini ditulis pada tingkat Information. Jika Anda memfilter pada level Warning atau lebih tinggi, Anda tidak akan melihat data ini sama sekali. |
Microsoft |
pelacakan | Kategori log yang sepenuhnya memenuhi syarat yang mencerminkan komponen runtime .NET yang dipanggil oleh host. |
Worker |
pelacakan | Log yang dihasilkan oleh proses pekerja bahasa untuk bahasa selain .NET. Log pekerja penerjemahan mungkin juga dicatat dalam kategori Microsoft.*, seperti Microsoft.Azure.WebJobs.Script.Workers.Rpc.RpcFunctionInvocationDispatcher. Log ini ditulis pada tingkat Information. |
Catatan
Untuk fungsi pustaka kelas .NET, kategori ini mengasumsikan Anda menggunakan ILogger dan bukan ILogger<T>. Untuk informasi selengkapnya, lihat dokumentasi Functions ILogger.
Kolom Tabel menunjukkan tabel dalam Application Insights tempat log ditulis.
Mengonfigurasikan tingkat log
Tingkat log ditetapkan ke setiap log. Nilai tersebut adalah bilangan bulat yang menunjukkan kepentingan relatif:
| LogLevel | Kode | Deskripsi |
|---|---|---|
| Jejak | 0 | Log yang berisi pesan paling detail. Pesan-pesan ini mungkin berisi data aplikasi sensitif. Pesan ini dinonaktifkan secara default dan tidak boleh diaktifkan di lingkungan produksi. |
| Pemecahan Kesalahan | 1 | Log yang digunakan untuk penyelidikan interaktif selama pengembangan. Log ini harus berisi informasi yang berguna untuk penelusuran kesalahan dan tidak memiliki nilai jangka panjang. |
| Informasi | 2 | Log yang melacak aliran umum aplikasi. Log ini harus memiliki nilai jangka panjang. |
| Peringatan | 3 | Log yang menyoroti kejadian abnormal atau tidak terduga dalam alur aplikasi, tetapi tidak menyebabkan eksekusi aplikasi berhenti. |
| Kesalahan | 4 | Log yang menyoroti ketika aliran eksekusi saat ini dihentikan karena suatu kegagalan. Kesalahan ini harus menunjukkan kegagalan dalam aktivitas saat ini, bukan kegagalan di seluruh aplikasi. |
| Kritis | 5 | Log yang menjelaskan aplikasi atau kerusakan sistem yang tidak dapat dipulihkan, atau kegagalan parah yang membutuhkan perhatian segera. |
| Tidak | 6 | Menon-fungsikan pencatatan untuk kategori yang ditentukan. |
File host.json menentukan berapa banyak log yang dikirim oleh aplikasi fungsi ke Application Insights.
Untuk setiap kategori, Anda mengindikasikan tingkat log minimum untuk dikirim. Pengaturan host.json bervariasi bergantung pada versi waktu proses Functions.
Contoh berikut menentukan pengelogan berdasarkan aturan berikut:
- Tingkat pengelogan default diatur ke
Warninguntuk mencegah pengelogan berlebihan untuk kategori yang tidak diantisipasi. -
Host.AggregatordanHost.Resultsdiatur ke tingkat yang lebih rendah. Mengatur tingkat pengelogan terlalu tinggi (terutama lebih tinggi dariInformation) dapat mengakibatkan hilangnya metrik dan data performa. - Pengelogan untuk eksekusi fungsi diatur ke
Information. Jika perlu, Anda dapat mengambil alih pengaturan ini dalam pengembangan lokal keDebugatauTrace.
{
"logging": {
"fileLoggingMode": "debugOnly",
"logLevel": {
"default": "Warning",
"Host.Aggregator": "Trace",
"Host.Results": "Information",
"Function": "Information"
}
}
}
Jika host.json menyertakan beberapa log yang dimulai dengan untai (karakter) yang sama, maka log yang lebih banyak ditentukan akan dicocokkan terlebih dahulu. Pertimbangkan contoh berikut yang mencatat semua yang ada di runtime, kecuali Host.Aggregator, pada tingkat Error:
{
"logging": {
"fileLoggingMode": "debugOnly",
"logLevel": {
"default": "Information",
"Host": "Error",
"Function": "Error",
"Host.Aggregator": "Information"
}
}
}
Anda dapat menggunakan pengaturan tingkat log None untuk mencegah log ditulis untuk sebuah kategori.
Perhatian
Azure Functions terintegrasi dengan Application Insights dengan menyimpan peristiwa telemetri dalam tabel Application Insights. Jika Anda mengatur tingkat log kategori ke nilai apa pun yang berbeda dari Information, hal itu akan mencegah telemetri mengalir ke tabel-tabel tersebut, dan Anda tidak akan dapat melihat data terkait di tab Application Insights dan Function Monitor.
Misalnya, untuk sampel sebelumnya:
- Jika Anda mengatur kategori
Host.Resultske tingkat logError, Azure hanya mengumpulkan peristiwa telemetri eksekusi host dalam tabelrequestsuntuk eksekusi fungsi yang gagal, mencegah tampilan detail eksekusi host dari eksekusi yang berhasil di tab Application Insights dan Function Monitor. - Jika Anda mengatur
Functionkategori keErrortingkat log, maka akan berhenti mengumpulkan data telemetri fungsi yang terkait dengandependencies,customMetrics, dancustomEventsuntuk semua fungsi, mencegah Anda melihat data ini di Application Insights. Azure hanya mengumpulkantracesyang dicatat pada tingkatError.
Dalam kedua kasus, Azure terus mengumpulkan data kesalahan dan pengecualian di tab Application Insights dan Function Monitor. Untuk informasi lebih lanjut, lihat Solusi dengan volume telemetri yang tinggi.
Mengonfigurasikan agregator
Seperti yang dicatat di bagian sebelumnya, runtime menggabungkan data tentang eksekusi fungsi selama periode waktu tertentu. Periode bawaan berdurasi 30 detik atau 1.000 pengulangan, mana yang lebih dulu terjadi. Anda dapat mengonfigurasikan pengaturan ini di file host.json. Contohnya:
{
"aggregator": {
"batchSize": 1000,
"flushTimeout": "00:00:30"
}
}
Mengonfigurasikan pengambilan sampel
Application Insights memiliki fitur pengambilan sampel yang dapat melindungi Anda dari memproduksi terlalu banyak data telemetri pada eksekusi yang selesai pada saat beban puncak. Saat tingkat eksekusi masuk melebihi ambang batas yang ditentukan, Application Insights mulai mengabaikan beberapa eksekusi yang masuk secara acak. Pengaturan default untuk jumlah maksimum eksekusi per detik adalah 20 (lima dalam versi 1.x). Anda dapat mengonfigurasikan pengambilan sampel di host.json. Berikut contohnya:
{
"logging": {
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"maxTelemetryItemsPerSecond" : 20,
"excludedTypes": "Request;Exception"
}
}
}
}
Anda dapat mengecualikan jenis telemetri tertentu dari pengambilan sampel. Dalam contoh ini, data jenis Request dan Exception dikecualikan dari pengambilan sampel. Ini memastikan bahwa semua eksekusi fungsi (permintaan) dan pengecualian dicatat sementara jenis telemetri lainnya tetap tunduk pada pengambilan sampel.
Jika proyek Anda menggunakan dependensi pada Application Insights SDK untuk melakukan pelacakan telemetri manual, Anda mungkin mengalami perilaku yang tidak biasa jika konfigurasi pengambilan sampel Anda berbeda dari konfigurasi pengambilan sampel di aplikasi fungsi Anda. Dalam kasus seperti itu, gunakan konfigurasi pengambilan sampel yang sama dengan aplikasi fungsi. Untuk informasi selengkapnya, lihat Mengambil sampel di Application Insights.
Mengaktifkan kumpulan kueri SQL
Application Insights secara otomatis mengumpulkan data terkait dependensi untuk permintaan HTTP, panggilan basis data, dan beberapa pengikatan. Untuk informasi selengkapnya, lihat Dependensi. Untuk panggilan SQL, nama server dan database selalu dikumpulkan dan disimpan, tetapi teks kueri SQL tidak dikumpulkan secara default. Anda bisa menggunakan dependencyTrackingOptions.enableSqlCommandTextInstrumentation untuk mengaktifkan pengelogan teks kueri SQL dengan menggunakan pengaturan berikut (minimal) di file host.json Anda:
"logging": {
"applicationInsights": {
"enableDependencyTracking": true,
"dependencyTrackingOptions": {
"enableSqlCommandTextInstrumentation": true
}
}
}
Untuk informasi selengkapnya, lihat Pelacakan SQL Tingkat Lanjut untuk mendapatkan kueri SQL lengkap.
Mengonfigurasikan log pengontrol skala
Fitur ini masih dalam pratinjau.
Anda dapat mengatur pengontrol skala Azure Functions untuk mengirim log ke Application Insights atau Azure Blob Storage agar Anda dapat memahami dengan lebih baik keputusan yang dibuat pengontrol skala untuk aplikasi fungsi Anda.
Untuk mengaktifkan fitur ini, tambahkan pengaturan aplikasi bernama SCALE_CONTROLLER_LOGGING_ENABLED ke pengaturan aplikasi fungsi Anda. Nilai pengaturan berikut harus dalam format <DESTINATION>:<VERBOSITY>. Untuk informasi lebih lanjut, lihat tabel berikut ini:
| Properti | Deskripsi |
|---|---|
<DESTINATION> |
Tujuan pengiriman log. Nilai yang berlaku adalah AppInsights atau Blob.Saat Anda menggunakan AppInsights, pastikan Application Insights diaktifkan di aplikasi fungsi Anda.Ketika Anda mengatur tujuan ke Blob, log dibuat dalam kontainer gumpalan bernama azure-functions-scale-controller dalam akun penyimpanan default yang diatur dalam pengaturan aplikasi AzureWebJobsStorage. |
<VERBOSITY> |
Menentukan tingkat log. Nilai yang didukung adalah None, Warning, dan Verbose.Ketika diatur ke Verbose, pengontrol skala mencatat alasan untuk setiap perubahan dalam jumlah pekerja, serta informasi tentang pemicu yang memperhitungkan keputusan tersebut. Log verbose termasuk peringatan pemicu dan hash yang digunakan oleh pemicu sebelum dan sesudah pengontrol skala berjalan. |
Petunjuk / Saran
Perlu diingat bahwa saat Anda membiarkan pencatatan pengontrol skala diaktifkan, itu berdampak pada biaya potensial untuk memantau aplikasi fungsi Anda. Pertimbangkan untuk mengaktifkan pengelogan hingga Anda mengumpulkan cukup data untuk memahami bagaimana pengontrol skala bereaksi, lalu menonaktifkannya.
Misalnya, perintah Azure CLI berikut mengaktifkan pengelogan verbose dari pengontrol skala ke Application Insights:
az functionapp config appsettings set --name <FUNCTION_APP_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--settings SCALE_CONTROLLER_LOGGING_ENABLED=AppInsights:Verbose
Dalam contoh ini, ganti <FUNCTION_APP_NAME> dan <RESOURCE_GROUP_NAME> dengan nama aplikasi fungsi Anda dan nama grup sumber daya masing-masing.
Perintah Azure CLI berikut menonaktifkan pengelogan dengan mengatur verbositas ke None:
az functionapp config appsettings set --name <FUNCTION_APP_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--settings SCALE_CONTROLLER_LOGGING_ENABLED=AppInsights:None
Anda juga dapat menonaktifkan pengelogan dengan menghapus pengaturan SCALE_CONTROLLER_LOGGING_ENABLED menggunakan perintah Azure CLI berikut:
az functionapp config appsettings delete --name <FUNCTION_APP_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--setting-names SCALE_CONTROLLER_LOGGING_ENABLED
Dengan pengelogan pengontrol skala diaktifkan, Anda sekarang dapat mengkueri log pengontrol skala Anda.
Mengaktifkan integrasi Application Insights
Agar aplikasi fungsi mengirim data ke Application Insights, aplikasi perlu terhubung ke sumber daya Application Insights hanya menggunakan salah satu pengaturan aplikasi ini:
| Nama pengaturan | Deskripsi |
|---|---|
APPLICATIONINSIGHTS_CONNECTION_STRING |
Pengaturan ini direkomendasikan dan diperlukan saat instans Application Insights Anda berjalan di sovereign cloud. string koneksi mendukung kemampuan baru lainnya. |
APPINSIGHTS_INSTRUMENTATIONKEY |
Pengaturan lama, yang dihentikan penggunaannya oleh Application Insights demi pengaturan koneksi string. |
Saat Anda membuat aplikasi fungsi di portal Azure dari baris perintah dengan menggunakan Azure Functions Core Tools atau Visual Studio Code, integrasi Application Insights diaktifkan secara default. Sumber daya Application Insights memiliki nama yang sama dengan aplikasi fungsi Anda, dan dibuat baik di wilayah yang sama atau di wilayah terdekat.
Memerlukan autentikasi Microsoft Entra
Anda dapat menggunakan pengaturan APPLICATIONINSIGHTS_AUTHENTICATION_STRING untuk mengaktifkan koneksi ke Application Insights menggunakan autentikasi Microsoft Entra. Ini menciptakan pengalaman autentikasi yang konsisten di semua alur Application Insights, termasuk Profiler dan Snapshot Debugger, serta dari host Functions dan agen khusus bahasa.
Catatan
Saat ini tidak ada dukungan autentikasi Microsoft Entra ID untuk pengembangan lokal.
Saat Menyerap data di sovereign cloud, autentikasi Microsoft Entra ID tidak tersedia saat menggunakan Application Insights SDK. Pengumpulan data berbasis OpenTelemetry mendukung autentikasi Microsoft Entra ID di semua lingkungan cloud, termasuk sovereign cloud.
Nilai berisi Authorization=AAD untuk identitas terkelola penugasan sistem atau ClientId=<YOUR_CLIENT_ID>;Authorization=AAD untuk identitas terkelola penugasan pengguna. Identitas terkelola harus sudah tersedia untuk aplikasi fungsi, dengan peran yang ditetapkan setara dengan Monitoring Metrics Publisher. Untuk informasi selengkapnya, lihat autentikasi Microsoft Entra untuk Application Insights.
Pengaturan APPLICATIONINSIGHTS_CONNECTION_STRING masih diperlukan.
Catatan
Saat menggunakan APPLICATIONINSIGHTS_AUTHENTICATION_STRING untuk menyambungkan ke Application Insights menggunakan autentikasi Microsoft Entra, Anda juga harus Nonaktifkan autentikasi lokal untuk Application Insights. Konfigurasi ini memerlukan autentikasi Microsoft Entra agar telemetri diserap ke ruang kerja Anda.
Aplikasi fungsi baru di portal
Untuk meninjau sumber daya Application Insights yang sedang dibuat, pilih sumber daya tersebut untuk memperluas jendela Application Insights. Anda dapat mengubah Nama sumber daya baru atau memilih Lokasi yang berbeda dalam geografi Azure tempat Anda ingin menyimpan data Anda.
Saat Anda memilih Buat, sumber daya Application Insights dibuat bersama dengan aplikasi fungsi Anda, yang telah ditetapkan APPLICATIONINSIGHTS_CONNECTION_STRING dalam pengaturan aplikasi. Semuanya siap.
Menambahkan ke aplikasi fungsi yang sudah ada
Jika sumber daya Application Insights tidak dibuat dengan aplikasi fungsi Anda, gunakan langkah-langkah berikut untuk membuat sumber daya. Anda kemudian dapat menambahkan string koneksi dari sumber daya tersebut sebagai pengaturan aplikasi di aplikasi fungsi Anda.
Di portal Azure, cari dan pilih aplikasi fungsi, lalu pilih aplikasi fungsi Anda.
Pilih banner Application Insights tidak dikonfigurasi di bagian atas jendela. Jika Anda tidak melihat banner ini, aplikasi Anda mungkin sudah mengaktifkan Application Insights.
Perluas Ubah sumber daya Anda dan buat sumber daya Application Insights dengan menggunakan pengaturan yang ditentukan dalam tabel berikut:
Pengaturan Nilai yang disarankan Deskripsi Nama sumber daya baru Nama aplikasi unik Paling mudah menggunakan nama yang sama dengan aplikasi fungsi Anda, yang harus unik dalam langganan Anda. Tempat Eropa Barat Jika memungkinkan, gunakan wilayah yang sama dengan aplikasi fungsi Anda, atau wilayah yang dekat dengan wilayah tersebut.
Pilih Terapkan.
Sumber daya Application Insights dibuat di grup sumber daya dan langganan yang sama dengan aplikasi fungsi Anda. Setelah sumber daya dibuat, tutup jendela Application Insights.
Di aplikasi fungsi Anda, perluas Pengaturan, lalu pilih Variabel lingkungan. Di tab pengaturan App, jika Anda melihat pengaturan aplikasi bernama
APPLICATIONINSIGHTS_CONNECTION_STRING, integrasi Application Insights diaktifkan untuk aplikasi fungsi Anda yang berjalan di Azure. Jika pengaturan ini tidak ada, tambahkan dengan menggunakan string koneksi Application Insights Anda sebagai nilai.
Catatan
Aplikasi fungsi yang lebih lama mungkin menggunakan APPINSIGHTS_INSTRUMENTATIONKEY alih-alih APPLICATIONINSIGHTS_CONNECTION_STRING. Jika memungkinkan, perbarui aplikasi Anda untuk menggunakan string koneksi alih-alih kunci instrumentasi.
Nonaktifkan pengelogan bawaan
Versi awal Functions menggunakan pemantauan bawaan, yang tidak lagi direkomendasikan. Saat Anda mengaktifkan Application Insights, nonaktifkan pengelogan bawaan yang menggunakan Azure Storage. Pengelogan bawaan berguna untuk pengujian dengan beban kerja ringan, tetapi tidak dimaksudkan untuk penggunaan produksi beban tinggi. Untuk pemantauan produksi, kami merekomendasikan Application Insights. Jika Anda menggunakan fitur log bawaan dalam produksi, catatan log mungkin tidak lengkap karena pembatasan pada Azure Storage.
Untuk menonaktifkan pengelogan bawaan, hapus pengaturan aplikasi AzureWebJobsDashboard. Untuk informasi selengkapnya tentang cara menghapus pengaturan aplikasi di portal Azure, lihat bagian pengaturan AplikasiCara mengelola aplikasi fungsi. Sebelum Anda menghapus pengaturan aplikasi, pastikan bahwa tidak ada fungsi yang ada di aplikasi fungsi yang sama menggunakan pengaturan untuk pemicu atau pengikatan Azure Storage.
Solusi dengan volume telemetri yang tinggi
Aplikasi fungsi adalah bagian penting dari solusi yang dapat menyebabkan telemetri dalam volume tinggi, seperti solusi IoT, solusi berbasis peristiwa yang cepat, sistem keuangan beban tinggi, dan sistem integrasi. Dalam hal ini, Anda harus mempertimbangkan konfigurasi tambahan untuk mengurangi biaya sambil mempertahankan pengamatan.
Telemetri yang dihasilkan dapat digunakan di dasbor real-time, sistem peringatan, diagnostik terperinci, dan sebagainya. Bergantung pada bagaimana telemetri yang dihasilkan dikonsumsi, Anda perlu menentukan strategi untuk mengurangi volume data yang dihasilkan. Strategi ini memungkinkan Anda untuk memantau, mengoperasikan, dan mendiagnosis aplikasi fungsi Anda dengan benar dalam produksi. Pertimbangkan opsi berikut:
Gunakan paket tabel yang benar: Paket tabel membantu Anda mengelola biaya data dengan mengontrol seberapa sering Anda menggunakan data dalam tabel dan jenis analisis yang perlu Anda lakukan. Untuk mengurangi biaya, Anda dapat memilih paket
Basic, yang memang kekurangan beberapa fitur yang tersedia dalam paketAnalytics.Gunakan pengambilan sampel: Seperti yang disebutkan sebelumnya, pengambilan sampel membantu mengurangi volume peristiwa telemetri yang diserap secara dramatis sambil mempertahankan analisis yang benar secara statistik. Hal ini bisa terjadi bahwa meskipun menggunakan pengambilan sampel, Anda masih mendapatkan volume telemetri yang tinggi. Periksa opsi yang disediakan pengambilan sampel adaptif untuk Anda. Misalnya, atur
maxTelemetryItemsPerSecondke nilai yang menyeimbangkan volume yang dihasilkan dengan kebutuhan pemantauan Anda. Perlu diingat bahwa pengambilan sampel telemetri diterapkan per host yang menjalankan aplikasi fungsi Anda.Tingkat log default: Gunakan
WarningatauErrorsebagai nilai default untuk semua kategori telemetri. Nantinya, Anda dapat memutuskan kategori mana yang ingin Anda tetapkan di tingkat tersebutInformation, sehingga Anda dapat memantau dan mendiagnosis fungsi Anda dengan benar.Sesuaikan telemetri untuk fungsi Anda: Dengan tingkat log default diatur ke
ErroratauWarning, tidak ada informasi terperinci dari setiap fungsi yang dikumpulkan (dependensi, metrik kustom, kejadian kustom, dan jejak). Untuk fungsi-fungsi yang merupakan kunci untuk pemantauan produksi, tentukan entri eksplisit untukFunction.<YOUR_FUNCTION_NAME>kategori dan atur keInformation, sehingga Anda dapat mengumpulkan informasi terperinci. Untuk menghindari pengumpulan log yang dihasilkan pengguna pada level tersebut, atur kategoriInformationke levelFunction.<YOUR_FUNCTION_NAME>.UseratauErrorlog.Kategori Host.Aggregator: Seperti yang dijelaskan dalam kategori konfigurasi, kategori ini memberikan informasi agregat dari pemanggilan fungsi. Informasi dari kategori ini dikumpulkan dalam tabel Application Insights
customMetrics, dan ditampilkan dalam fungsi Overview tab di portal Azure. Bergantung pada cara Anda mengonfigurasi agregator, pertimbangkan bahwa mungkin ada penundaan, yang ditentukan olehflushTimeoutpengaturan, dalam telemetri yang dikumpulkan. Jika Anda mengatur kategori ini ke nilai yang berbeda dariInformation, Anda berhenti mengumpulkan data dalamcustomMetricstabel dan tidak menampilkan metrik di tab Ringkasan fungsi.Cuplikan layar berikut menunjukkan data telemetri
Host.Aggregatoryang ditampilkan di tab Gambaran Umum fungsi:Cuplikan layar berikut menunjukkan data telemetri
Host.Aggregatordalam tabelcustomMetricsApplication Insights:Kategori Host.Results: Seperti yang dijelaskan dalam kategori konfigurasi, kategori ini menyediakan log buatan runtime yang menunjukkan keberhasilan atau kegagalan pemanggilan fungsi. Informasi dari kategori ini dikumpulkan dalam tabel Application Insights
requests, dan ditampilkan di tab Monitor fungsi dan di dasbor Application Insights yang berbeda (Performa, Kegagalan, dan sebagainya). Jika Anda mengatur kategori ini ke nilai yang berbeda dariInformation, Anda hanya mengumpulkan telemetri yang dihasilkan pada tingkat log yang ditentukan (atau lebih tinggi). Misalnya, mengaturnya agarerrormenghasilkan data permintaan pelacakan hanya untuk eksekusi yang gagal.Cuplikan layar berikut menunjukkan data telemetri
Host.Resultsyang ditampilkan di tab Monitor fungsi:Cuplikan layar berikut menunjukkan data telemetri
Host.Resultsyang ditampilkan di dasbor Performa Application Insights:Host.Aggregator vs Host.Results: Kedua kategori memberikan wawasan yang baik tentang eksekusi fungsi. Jika perlu, Anda dapat menghapus informasi terperinci dari salah satu kategori ini, sehingga Anda dapat menggunakan yang lain untuk memantau dan memperingatkan. Berikut adalah sampelnya:
{
"version": "2.0",
"logging": {
"logLevel": {
"default": "Warning",
"Function": "Error",
"Host.Aggregator": "Error",
"Host.Results": "Information",
"Function.Function1": "Information",
"Function.Function1.User": "Error"
},
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"maxTelemetryItemsPerSecond": 1,
"excludedTypes": "Exception"
}
}
}
}
Dengan konfigurasi ini:
Nilai default untuk semua kategori fungsi dan telemetri diatur ke
Warning(termasuk kategori Microsoft dan Pekerja). Jadi, secara default, semua kesalahan dan peringatan yang dihasilkan oleh runtime dan pengelogan kustom dikumpulkan.Log kategori
Functiondiatur ke tingkatError, jadi untuk semua fungsi, secara default, hanya pengecualian dan log kesalahan yang dihimpun. Dependensi, metrik yang dihasilkan pengguna, dan peristiwa yang dihasilkan pengguna dilewati.Untuk kategori
Host.Aggregator, karena disetel ke level logError, informasi agregat dari pemanggilan fungsi tidak dikumpulkan dalam tabel Application InsightscustomMetrics, dan informasi tentang jumlah eksekusi (total, berhasil, dan gagal) tidak ditampilkan di dasbor ikhtisar fungsi.Untuk kategori
Host.Results, semua informasi eksekusi host dikumpulkan dalam tabel Application Insightsrequests. Semua hasil pemanggilan ditampilkan di dasbor Monitor fungsi dan di dasbor Application Insights.Untuk fungsi yang disebut
Function1, kami mengatur tingkat log keInformation. Jadi, untuk fungsi konkret ini, semua telemetri dikumpulkan (ketergantungan, metrik khusus, dan peristiwa khusus). Untuk fungsi yang sama, kami menetapkan kategoriFunction1.User(jejak pengguna) keError, sehingga hanya pencatatan kesalahan kustom yang dikumpulkan.Catatan
Konfigurasi per fungsi tidak didukung di v1.x dari runtime Functions.
Pengambilan sampel dikonfigurasi untuk mengirim satu item telemetri per detik per jenis, tidak termasuk pengecualian. Pengambilan sampel ini terjadi untuk setiap host server yang menjalankan aplikasi fungsi kami. Jadi, jika kita memiliki empat instans, konfigurasi ini memancarkan empat item telemetri per detik per jenis dan semua pengecualian yang mungkin terjadi.
Catatan
Jumlah metrik seperti laju permintaan dan laju pengecualian disesuaikan agar mengimbangi laju pengambilan sampel, sehingga menunjukkan nilai di Penjelajah Metrik yang kurang lebih benar.
Petunjuk / Saran
Bereksperimenlah dengan konfigurasi yang berbeda untuk memastikan bahwa Anda memenuhi persyaratan Anda untuk pengelogan, pemantauan, dan peringatan. Selain itu, pastikan Anda memiliki diagnostik terperinci jika terjadi kesalahan tak terduga atau malfungsi.
Mengganti konfigurasi pemantauan saat runtime
Akhirnya, mungkin ada situasi di mana Anda perlu dengan cepat mengubah perilaku pencatatan sebuah kategori tertentu dalam produksi, dan Anda tidak ingin melakukan seluruh penyebaran hanya untuk perubahan dalam file host.json. Untuk kasus seperti itu, Anda dapat menggantikan nilai host.json.
Untuk mengonfigurasi nilai-nilai ini di tingkat Pengaturan aplikasi (dan mencegah penyebaran ulang hanya pada perubahan host.json), Anda harus mengganti nilai host.json tertentu dengan membuat nilai yang setara sebagai pengaturan aplikasi. Ketika runtime menemukan pengaturan aplikasi dalam format AzureFunctionsJobHost__path__to__setting, runtime akan menimpa pengaturan host.json setara yang berada pada path.to.setting di JSON. Ketika dinyatakan sebagai pengaturan aplikasi, garis bawah ganda (__) menggantikan titik (.) yang digunakan untuk menunjukkan hierarki JSON. Misalnya, Anda dapat menggunakan pengaturan aplikasi berikut untuk mengonfigurasi tingkat log fungsi individual di host.json.
| Jalur Host.json | Pengaturan aplikasi |
|---|---|
| logging.logLevel.default | HostPekerjaanAzureFungsi__logging__TingkatLog__default |
| logging.logLevel.Host.Aggregator | AzureFunctionsJobHost__logging__logLevel__Host.Aggregator |
| logging.logLevel.Function | AzureFunctionsJobHost__pemantauan__tingkatLog__Function |
| logging.logLevel.Function.Function1 | AzureFunctionsJobHost__logging__logLevel__Function.Function1 |
| logging.logLevel.Function.Function1.User | AzureFunctionsJobHost__logging__logLevel__Function.Function1.User |
Anda dapat mengambil alih pengaturan secara langsung di panel Azure portal Function App Configuration atau dengan menggunakan skrip Azure CLI atau PowerShell.
az functionapp config appsettings set --name MyFunctionApp --resource-group MyResourceGroup --settings "AzureFunctionsJobHost__logging__logLevel__Host.Aggregator=Information"
Catatan
Mengubah host.json dengan mengubah pengaturan aplikasi dapat memulai ulang aplikasi fungsi Anda.
Pengaturan aplikasi yang berisi periode tidak didukung saat berjalan di Linux dalam paket Elastic Premium atau paket Khusus (App Service). Di lingkungan hosting ini, Anda harus terus menggunakan file host.json .
Memantau aplikasi fungsi menggunakan Pemeriksaan Kesehatan
Anda dapat menggunakan fitur Pemeriksaan Kesehatan untuk memantau aplikasi fungsi pada paket Premium (Elastic Premium) dan Dedicated (App Service). Pemeriksaan kesehatan tidak tersedia untuk paket Flex Consumption dan Consumption. Untuk mempelajari cara mengonfigurasikannya, lihat Memantau instans App Service menggunakan Pemeriksaan kesehatan. Aplikasi fungsi Anda harus memiliki fungsi pemicu HTTP yang merespons dengan kode status HTTP 200 pada titik akhir yang sama seperti yang dikonfigurasi pada Path parameter pemeriksaan kesehatan. Anda juga dapat meminta fungsi tersebut melakukan pemeriksaan tambahan untuk memastikan bahwa layanan dependen dapat dijangkau dan berfungsi.
Konten terkait
Untuk informasi selengkapnya tentang pemantauan, lihat: