Cara mengonfigurasi pemantauan untuk Azure Functions

Azure Functions terintegrasi dengan Application Insights untuk lebih memungkinkan Anda memantau aplikasi fungsi Anda. Application Insights sebuah fitur Azure Monitor yang merupakan layanan Manajemen Performa Aplikasi (APM) yang dapat diperluas dan mengumpulkan data yang dihasilkan oleh aplikasi fungsi, termasuk informasi yang ditulis aplikasi Anda ke 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. Konfigurasi default dapat menghasilkan data dengan volume yang tinggi. Jika 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.

Kemudian di artikel ini, Anda mempelajari cara mengonfigurasi dan mengkustomisasi data yang dikirim fungsi Anda ke Application Insights. Konfigurasi pengelogan umum dapat diatur dalam file host.json. Secara default, pengaturan ini juga mengatur log kustom yang dikeluarkan oleh kode Anda, meskipun dalam beberapa kasus perilaku ini dapat dinonaktifkan demi opsi yang memberi Anda lebih banyak kontrol atas pengelogan. Lihat Log aplikasi kustom untuk informasi selengkapnya.

Catatan

Anda dapat menggunakan pengaturan aplikasi yang dikonfigurasi khusus untuk mewakili pengaturan tertentu dalam file host.json untuk lingkungan tertentu. Ini memungkinkan Anda mengubah pengaturan host.json secara efektif tanpa harus menerbitkan ulang file host.json di proyek Anda. Untuk informasi selengkapnya, lihat Menimpa nilai host.json.

Log aplikasi kustom

Secara default, log aplikasi kustom yang Anda tulis dikirim ke host Functions, yang kemudian mengirimkannya ke Application Insights melalui kategori "Pekerja". Beberapa tumpukan bahasa memungkinkan Anda untuk mengirim log langsung ke Application Insights, memberi Anda kontrol penuh atas bagaimana log yang Anda tulis dikeluarkan. Alur pengelogan berubah dari worker -> Functions host -> Application Insights ke worker -> Application Insights.

Tabel berikut ini meringkas opsi yang tersedia untuk setiap tumpukan:

Tumpukan bahasa komputer Konfigurasi log kustom
.NET (model dalam proses) host.json
.NET (model terisolasi) Secara default: host.json
Opsi untuk mengirim log secara langsung: Mengonfigurasi Application Insights di HostBuilder
Node.JS host.json
Python host.json
Java Secara default: host.json
Opsi untuk mengirim log secara langsung: Mengonfigurasi agen Application Insights Java
PowerShell host.json

Ketika log aplikasi kustom 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. Untuk mengontrol perilaku semua log, Anda mungkin perlu membuat perubahan untuk kedua konfigurasi.

Mengonfigurasi kategori

Pencatat Azure Functions meliputi kategori untuk setiap log. Kategori ini mengindikasikan bagian mana dari kode runtime bahasa umum 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. Misalnya:

  • 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 kategori Function.<FUNCTION_NAME>.User.

Bagan berikut menjelaskan kategori utama log yang dibuat runtime bahasa umum:

Category Table Deskripsi
Function jejak 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 bahasa umum juga membuat log tingkat Warning, seperti saat pesan antrean dikirim ke antrian racun.
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 bahasa umum juga membuat log tingkat Warning, seperti saat pesan antrean dikirim ke antrian racun.
Function.<YOUR_FUNCTION_NAME> customMetrics
customEvents
C# dan JavaScript SDK memungkinkan Anda mengumpulkan metrik kustom dan mencatat peristiwa kustom. Untuk informasi selengkapnya, lihat Data telemetri khusus.
Function.<YOUR_FUNCTION_NAME> jejak 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 bahasa umum juga membuat log tingkat Warning, seperti saat pesan antrean dikirim ke antrian racun.
Function.<YOUR_FUNCTION_NAME>.User jejak 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 bahasa umum ini memberikan hitungan dan rata-rata pemanggilan fungsi selama periode waktu yang dapat dikonfigurasi. Periode default berdurasi 30 detik atau 1.000 tataan hasil, yang mana terjadi lebih dulu. Contohnya adalah jumlah eksekusi, tingkat kesuksesan, dan durasi. Semua log ini ditulis pada tingkat Information. Jika Anda memfilter pada Warning atau di atasnya, Anda tidak akan melihat data ini.
Host.Results permintaan Log yang dihasilkan runtime bahasa umum ini mengindikasikan keberhasilan atau kegagalan fungsi. Semua log ini ditulis pada tingkat Information. Jika Anda memfilter pada Warning atau di atasnya, Anda tidak akan melihat data ini.
Microsoft jejak Kategori log yang sepenuhnya memenuhi syarat yang mencerminkan komponen runtime bahasa umum .NET yang dipanggil oleh host.
Worker jejak Log yang dihasilkan oleh proses pekerja bahasa pemrogram untuk bahasa non-.NET. Log pekerja bahasa pemrogram juga dapat dicatat dalam kategori Microsoft.*, seperti Microsoft.Azure.WebJobs.Script.Workers.Rpc.RpcFunctionInvocationDispatcher. Semua log ini ditulis pada tingkat Information.

Catatan

Untuk fungsi pustaka kelas .NET Framework, kategori ini mengasumsikan Anda menggunakan ILogger dan bukan ILogger<T>. Untuk informasi selengkapnya, lihat dokumentasi Functions ILogger.

Kolom Tabel mengindikasikan tabel mana di Application Insights yang ditulis oleh log.

Mengonfigurasikan tingkat log

Tingkat log ditetapkan ke setiap log. Nilai tersebut adalah bilangan bulat yang menunjukkan kepentingan relatif:

LogLevel Kode Deskripsi
Trace 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.
Debug 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.
Error 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.jsonmenentukan berapa banyak pembuatan 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 di bawah ini menentukan pengelogan berdasarkan aturan berikut:

  • Tingkat pengelogan default diatur ke Warning untuk mencegah pengelogan berlebihan untuk kategori yang tidak diantisipasi.
  • Host.Aggregator dan Host.Results diatur ke tingkat yang lebih rendah. Mengatur ini ke tingkat yang terlalu tinggi (terutama lebih tinggi dari Information) dapat mengakibatkan hilangnya metrik dan data performa.
  • Pengelogan untuk eksekusi fungsi diatur ke Information. Ini dapat ditimpa dalam pengembangan lokal ke Debug atau Trace, ketika diperlukan.
{
  "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 bahasa umum, 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. Mengatur tingkat log kategori ke nilai apa pun yang berbeda dari Information akan mencegah telemetri mengalir ke tabel tersebut. Sebagai hasilnya, Anda tidak akan dapat melihat data terkait di tab Application Insights atau Monitor Fungsi.

Dari sampel di atas:

  • Jika kategori Host.Results diatur ke tingkat log Error, kategori ini hanya akan mengumpulkan peristiwa telemetri eksekusi host di tabel requests untuk eksekusi fungsi yang gagal, mencegah untuk menampilkan detail eksekusi host dari eksekusi yang berhasil di kedua tab Application Insights dan Monitor Fungsi.
  • Jika kategori Function diatur ke tingkat log Error, kategori akan berhenti mengumpulkan data telemetri fungsi yang terkait dengan dependencies, customMetrics, dan customEvents untuk semua fungsi, yang mencegah untuk melihat data ini di Application Insights. Ia hanya akan mengumpulkan traces yang dicatat dengan tingkat Error.

Dalam kedua kasus tersebut, Anda akan terus mengumpulkan data kesalahan dan pengecualian di tab Application Insights dan Monitor Fungsi. Untuk informasi selengkapnya, lihat Solusi dengan telemetri volume tinggi.

Mengonfigurasikan agregator

Seperti yang dicatat di bagian sebelumnya, runtime bahasa umum menggabungkan data tentang eksekusi fungsi selama periode waktu tertentu. Periode default berdurasi 30 detik atau 1.000 tataan hasil, yang mana yang lebih dulu terjadi. Anda dapat mengonfigurasikan pengaturan ini di file host.json. Berikut 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. Hal ini memastikan semua eksekusi fungsi (permintaan) dan pengecualian dicatat, sementara jenis telemetri lainnya tetap sesuai dengan pengambilan sampel.

Jika proyek Anda mengambil dependensi pada Application Insights SDK untuk melakukan pelacakan telemetri manual, Anda mungkin mengalami perilaku aneh 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 pada dependensi untuk permintaan HTTP, panggilan database, dan untuk 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 dapat menggunakan dependencyTrackingOptions.enableSqlCommandTextInstrumentation untuk mengaktifkan pengelogan teks kueri SQL dengan mengatur (minimal) berikut ini 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 meminta pengontrol skala Azure Functions mengeluarkan log ke Application Insights atau ke penyimpanan Blob untuk lebih memahami keputusan yang dibuat pengontrol skala bagi aplikasi fungsi Anda.

Untuk mengaktifkan fitur ini, Anda dapat menambahkan pengaturan aplikasi bernama SCALE_CONTROLLER_LOGGING_ENABLED ke pengaturan aplikasi fungsi Anda. Nilai pengaturan berikut harus dalam format <DESTINATION>:<VERBOSITY>:

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 pencatatan. 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.

Tip

Perlu diingat bahwa saat Anda membiarkan pencatatan pengontrol skala diaktifkan, itu berdampak pada biaya potensial untuk memantau aplikasi fungsi Anda. Pertimbangkan untuk mengaktifkan pembuatan log hingga Anda mengumpulkan cukup data untuk memahami bagaimana skala pengontrol berperilaku, dan kemudian menonaktifkannya.

Misalnya, perintah Azure CLI berikut ini mengaktifkan pembuatan log 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 Ini adalah pengaturan yang direkomendasikan, yang diperlukan saat instans Application Insights Anda berjalan di sovereign cloud. string koneksi mendukung kemampuan baru lainnya.
APPINSIGHTS_INSTRUMENTATIONKEY Pengaturan warisan, yang tidak digunakan lagi oleh Application Insights mendukung pengaturan string koneksi.

Saat Anda membuat aplikasi fungsi di portal Azure dari baris perintah dengan menggunakan Alat Inti Azure Functions 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 yang terdekat.

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 di geografi Azure tempat Anda ingin menyimpan data Anda.

Screenshot of enabling Application Insights while creating a function app.

Saat Anda memilih Buat, sumber daya Application Insights dibuat dengan aplikasi fungsi Anda, yang memiliki set APPLICATIONINSIGHTS_CONNECTION_STRING dalam pengaturan aplikasi. Semuanya siap untuk dijalankan.

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.

  1. Di portal Microsoft Azure, cari dan pilih aplikasi fungsi, lalu pilih aplikasi fungsi Anda.

  2. Pilih banner Application Insights tidak dikonfigurasi di bagian atas jendela. Jika Anda tidak melihat banner ini, aplikasi Anda mungkin sudah mengaktifkan Application Insights.

    Screenshot of enabling Application Insights from the portal.

  3. 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.
    Location Eropa Barat Jika memungkinkan, gunakan wilayah yang sama dengan aplikasi fungsi Anda, atau wilayah yang dekat dengan wilayah tersebut.

    Screenshot of creating an Application Insights resource.

  4. 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.

  5. Di aplikasi fungsi Anda, pilih Konfigurasi pada Pengaturan, lalu pilih Pengaturan aplikasi. Jika Anda melihat pengaturan bernama APPLICATIONINSIGHTS_CONNECTION_STRING, integrasi Application Insights diaktifkan untuk aplikasi fungsi Anda yang berjalan di Azure. Jika karena alasan tertentu pengaturan ini tidak ada, tambahkan menggunakan Application Insights anda string koneksi sebagai nilai.

Catatan

Aplikasi fungsi yang lebih lama mungkin menggunakan APPINSIGHTS_INSTRUMENTATIONKEY alih-alih APPLICATIONINSIGHTS_CONNECTION_STRING. Jika memungkinkan, Anda harus memperbarui aplikasi 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 pengelogan bawaan digunakan dalam produksi, catatan pengelogan 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 Microsoft Azure, lihat bagian Pengaturan aplikasi tentang Cara mengelola aplikasi fungsi. Sebelum Anda menghapus pengaturan aplikasi, pastikan tidak ada fungsi yang ada di aplikasi fungsi yang sama menggunakan pengaturan pemicu atau pengikatan Azure Storage.

Solusi dengan volume telemetri yang tinggi

Aplikasi fungsi adalah bagian penting dari solusi yang dapat menyebabkan volume telemetri yang 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 dikonsumsi di dasbor real-time, pemberitahuan, diagnostik terperinci, dan sebagainya. Bergantung pada bagaimana telemetri yang dihasilkan akan dikonsumsi, Anda harus menentukan strategi untuk mengurangi volume data yang dihasilkan. Strategi ini akan memungkinkan Anda untuk memantau, mengoperasikan, dan mendiagnosis aplikasi fungsi Anda dengan benar dalam produksi. Anda dapat mempertimbangkan opsi berikut:

  • Gunakan pengambilan sampel: Seperti yang disebutkan sebelumnya, ini akan membantu secara dramatis mengurangi volume peristiwa telemetri yang diserap sambil mempertahankan analisis yang benar secara statistik. Itu bisa terjadi bahwa bahkan menggunakan pengambilan sampel Anda masih mendapatkan volume telemetri yang tinggi. Periksa opsi yang disediakan pengambilan sampel adaptif untuk Anda. Misalnya, atur maxTelemetryItemsPerSecond ke 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 Warning atau Error sebagai nilai default untuk semua kategori telemetri. Sekarang, Anda dapat memutuskan kategori mana yang ingin Anda tetapkan pada tingkat Information sehingga Anda dapat memantau dan mendiagnosis fungsi Anda dengan benar.

  • Sesuaikan telemetri fungsi Anda: Dengan tingkat log default yang diatur ke Error atau Warning, tidak ada informasi terperinci dari tiap fungsi yang akan dikumpulkan (dependensi, metrik kustom, peristiwa kustom, dan trace). Untuk fungsi-fungsi yang merupakan kunci untuk pemantauan produksi, tentukan entri eksplisit untuk kategori Function.<YOUR_FUNCTION_NAME> dan atur ke Information, sehingga Anda dapat mengumpulkan informasi terperinci. Pada titik ini, untuk menghindari pengumpulan log buatan pengguna pada tingkat Information, atur kategori Function.<YOUR_FUNCTION_NAME>.User ke tingkat log Error atau Warning.

  • Kategori Host.Aggregator: Seperti yang dijelaskan dalam kategori konfigurasi, kategori ini memberikan informasi agregat dari pemanggilan fungsi. Informasi dari kategori ini dikumpulkan dalam tabel customMetrics Application Insights, dan ditampilkan di tab Gambaran Umum fungsi di portal Microsoft Azure. Tergantung pada bagaimana Anda mengonfigurasi agregator, pertimbangkan bahwa akan ada penundaan, yang ditentukan oleh flushTimeout, dalam telemetri yang dikumpulkan. Jika Anda menetapkan kategori ini ke nilai lain yang berbeda dari Information, Anda akan berhenti mengumpulkan data di tabel customMetrics dan tidak akan menampilkan metrik di tab Gambaran Umum fungsi.

    Cuplikan layar berikut menunjukkan data telemetri Host.Aggregator yang ditampilkan di tab Gambaran Umum fungsi:

    Screenshot of Host.Aggregator telemetry displayed in function Overview tab.

    Cuplikan layar berikut menunjukkan data telemetri Host.Aggregator dalam tabel customMetrics Application Insights:

    Screenshot of Host.Aggregator telemetry in customMetrics Application Insights table.

  • 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 Insights requests Aplikasi, dan ditampilkan di tab Monitor fungsi dan di dasbor Application Insights yang berbeda (Performa, Kegagalan, dan sebagainya). Jika Anda mengatur kategori ini ke nilai lain yang berbeda dari Information, Anda hanya akan mengumpulkan telemetri yang dihasilkan pada tingkat log yang ditentukan (atau lebih tinggi). Misalnya, mengaturnya agar error menghasilkan data permintaan pelacakan hanya untuk eksekusi yang gagal.

    Cuplikan layar berikut menunjukkan data telemetri Host.Results yang ditampilkan di tab Monitor fungsi:

    Screenshot of Host.Results telemetry in function Monitor tab.

    Cuplikan layar berikut menunjukkan data telemetri Host.Results yang ditampilkan di dasbor Performa Application Insights:

    Screenshot of Host.Results telemetry in Application Insights Performance dashboard.

  • 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, Anda akan memiliki:

  • Nilai default untuk semua fungsi dan kategori telemetri diatur ke Warning (termasuk kategori Microsoft dan Worker). Jadi, secara default, semua kesalahan dan peringatan yang dihasilkan oleh runtime dan pengelogan kustom dikumpulkan.

  • Tingkat log kategori Function diatur ke Error, jadi untuk semua fungsi, secara default, hanya pengecualian dan log kesalahan yang akan dikumpulkan (dependensi, metrik buatan pengguna, dan peristiwa buatan pengguna akan dilewati).

  • Untuk kategori Host.Aggregator, karena disetel ke Error tingkat log, informasi gabungan dari pemanggilan fungsi tidak akan dikumpulkan di tabel customMetrics Application Insights, dan informasi tentang jumlah eksekusi (total, berhasil, dan gagal) tidak akan ditampilkan di dasbor gambaran umum fungsi.

  • Untuk kategori Host.Results, semua informasi eksekusi host dikumpulkan dalam tabel Application Insights requests. Semua hasil pemanggilan akan ditampilkan di dasbor Monitor fungsi dan di dasbor Application Insights.

  • Untuk fungsi yang disebut Function1, kami telah mengatur level log ke Information. Jadi, untuk fungsi konkret ini, semua telemetri dikumpulkan (ketergantungan, metrik khusus, dan peristiwa khusus). Untuk fungsi yang sama, kategori Function1.User (trace buatan pengguna) diatur ke Error, sehingga hanya pengelogan kesalahan kustom yang akan dikumpulkan.

    Catatan

    Konfigurasi per fungsi tidak didukung di v1.x.

  • Pengambilan sampel dikonfigurasi untuk mengirim satu item telemetri per detik per jenis, tidak termasuk pengecualian. Pengambilan sampel ini akan terjadi untuk setiap host server yang menjalankan aplikasi fungsi kami. Jadi, jika kita memiliki empat instans, konfigurasi ini akan 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.

Tip

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.

Menimpa konfigurasi pemantauan saat runtime

Akhirnya, mungkin ada situasi di mana Anda perlu dengan cepat mengubah perilaku pengelogan kategori tertentu dalam produksi, dan Anda tidak ingin membuat seluruh penyebaran hanya untuk perubahan dalam file host.json. Untuk kasus seperti itu, Anda dapat menimpa nilai host.json.

Untuk mengonfigurasi nilai ini di tingkat Pengaturan aplikasi (dan menghindari 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, titik (.) yang digunakan untuk menunjukkan hierarki JSON digantikan oleh garis bawah ganda (__). Misalnya, Anda dapat menggunakan pengaturan aplikasi di bawah ini untuk mengonfigurasi tingkat log fungsi individual seperti host.json di atas.

Jalur Host.json Pengaturan aplikasi
logging.logLevel.default AzureFunctionsJobHost__logging__logLevel__default
logging.logLevel.Host.Aggregator AzureFunctionsJobHost__logging__logLevel__Host__Aggregator
logging.logLevel.Function AzureFunctionsJobHost__logging__logLevel__Function
logging.logLevel.Function.Function1 AzureFunctionsJobHost__logging__logLevel__Function__Function1
logging.logLevel.Function.Function1.User AzureFunctionsJobHost__logging__logLevel__Function__Function1__User

Anda dapat menimpa pengaturan secara langsung di panel Konfigurasi Aplikasi Fungsi portal Microsoft Azure 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

Menimpa host.json lewat pengubahan pengaturan aplikasi akan 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

Fitur Pemeriksaan Kesehatan dapat digunakan untuk memantau aplikasi fungsi pada paket Premium (Elastic Premium) dan Khusus (App Service). Pemeriksaan kesehatan bukanlah opsi untuk paket Konsumsi. 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 di titik akhir yang sama seperti yang dikonfigurasikan di parameter 'Jalur' dari pemeriksaan kesehatan. Anda juga dapat meminta fungsi tersebut melakukan pemeriksaan tambahan untuk memastikan bahwa layanan dependen dapat dijangkau dan berfungsi.

Langkah berikutnya

Untuk informasi selengkapnya tentang pemantauan, lihat: