Memantau eksekusi dalam Azure Functions

Azure Functions menawarkan integrasi bawaan dengan Application Insights Azure untuk memantau fungsi. Artikel ini menyediakan gambaran umum tentang kemampuan pemantauan yang disediakan oleh Azure untuk memantau Azure Functions.

Application Insights mengumpulkan data log, kinerja, dan kesalahan. Dengan secara otomatis mendeteksi anomali performa dan menampilkan alat analitik yang canggih, Anda dapat mendiagnosis masalah dengan lebih mudah dan lebih memahami bagaimana fungsi Anda digunakan. Alat-alat ini dirancang untuk membantu Anda terus meningkatkan performa dan kegunaan fungsi Anda. Anda bahkan dapat menggunakan Application Insights selama pengembangan proyek aplikasi fungsi lokal. Untuk informasi selengkapnya, lihat Apa itu Application Insights?.

Saat instrumentasi Application Insights dibangun ke dalam Azure Functions, Anda memerlukan kunci instrumentasi yang valid untuk menghubungkan aplikasi fungsi Anda ke sumber daya Application Insights. Kunci instrumentasi ditambahkan ke pengaturan aplikasi saat Anda membuat sumber daya aplikasi fungsi di Azure. Jika aplikasi fungsi Anda belum memiliki kunci ini, Anda dapat mengaturnya secara manual.

Anda juga dapat memantau aplikasi fungsi itu sendiri dengan menggunakan Azure Monitor. Untuk mempelajari selengkapnya, lihat Memantau Azure Functions dengan Azure Monitor.

Harga dan batasan Application Insights

Anda dapat mencoba integrasi Application Insights dengan Azure Functions secara gratis yang menampilkan batas harian atas banyaknya data yang diproses secara gratis.

Jika Anda mengaktifkan Application Insights selama pengembangan, Anda mungkin mencapai batas ini selama pengujian. Azure menyediakan pemberitahuan portal dan email saat Anda mendekati batas harian Anda. Jika Anda melewatkan peringatan tersebut dan mencapai batas, log baru tidak akan muncul di kueri Application Insights. Ketahui batasan untuk menghindari waktu pemecahan masalah yang tidak perlu. Untuk informasi selengkapnya, lihat Penagihan Application Insights.

Penting

Application Insights memiliki fitur pengambilan sampel yang dapat melindungi Anda dari memproduksi terlalu banyak data telemetri pada eksekusi yang selesai pada saat beban puncak. Pengambilan sampel diaktifkan secara default. Jika Anda tampaknya kehilangan data, Anda mungkin perlu menyesuaikan pengaturan pengambilan sampel agar sesuai dengan skenario pemantauan tertentu Anda. Untuk mempelajari lebih lanjut, lihat Mengonfigurasi pengambilan sampel.

Daftar lengkap fitur Application Insights yang tersedia untuk aplikasi fungsi Anda dirinci dalam fitur yang didukung Application Insights untuk Azure Functions.

Integrasi Application Insights

Biasanya, Anda membuat instans Application Insights saat membuat aplikasi fungsi. Dalam hal ini, kunci instrumentasi yang diperlukan untuk integrasi sudah ditetapkan sebagai pengaturan aplikasi bernama APPINSIGHTS_INSTRUMENTATIONKEY. Jika karena alasan tertentu aplikasi fungsi Anda tidak memiliki set kunci instrumentasi, Anda perlu mengaktifkan integrasi Application Insights.

Penting

Sovereign cloud, seperti Azure Government, memerlukan penggunaan string koneksi Application Insights ( APPLICATIONINSIGHTS_CONNECTION_STRING ), bukan kunci instrumentasi. Untuk mempelajari lebih lanjut, lihat referensi APPLICATIONINSIGHTS_CONNECTION_STRING.

Tabel berikut merinci fitur yang didukung dari Application Insights yang tersedia untuk memantau aplikasi fungsi Anda:

Azure Functions versi runtime 1.x 2.x+
Pengumpulan otomatis
• Permintaan
• Pengecualian
• Penghitung Performa
• Dependensi
   — HTTP
   — Bus Layanan
   — Azure Event Hubs
   — SQL*
Fitur yang didukung
• QuickPulse/LiveMetrics Ya Ya
   — Saluran Kontrol Aman Ya
• Pengambilan sampel Ya Ya
• Heartbeat Ya
Korelasi
• Bus Layanan Ya
• Pusat Aktivitas Ya
Dapat dikonfigurasi
Sepenuhnya dapat dikonfigurasi Ya

* Untuk mengaktifkan koleksi teks string kueri SQL, lihat Mengaktifkan koleksi kueri SQL.

Mengumpulkan data telemetri

Dengan integrasi Application Insights diaktifkan, data telemetri dikirim ke instans Application Insights anda yang terhubung. Data ini mencakup log yang dihasilkan oleh host Functions, jejak yang ditulis dari kode fungsi Anda, dan data performa.

Catatan

Selain data dari fungsi Anda dan host Fungsi, Anda juga dapat mengumpulkan data dari pengontrol skala Functions.

Tingkat log dan kategori

Ketika Anda menulis jejak dari kode aplikasi Anda, Anda harus menetapkan tingkat log ke jejak. Tingkat log menyediakan cara bagi Anda untuk membatasi jumlah data yang dikumpulkan dari jejak Anda.

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

LogLevel Kode Deskripsi
Lacak 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.
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 ada 6 Menon-fungsikan pencatatan untuk kategori yang ditentukan.

File host.jsonmenentukan berapa banyak pembuatan log yang dikirim oleh aplikasi fungsi ke Application Insights.

Untuk mempelajari selengkapnya tentang tingkat log, lihat Mengonfigurasi tingkat log.

Dengan menetapkan item yang dicatat ke kategori, Anda memiliki kontrol lebih besar atas telemetri yang dihasilkan dari sumber tertentu di aplikasi fungsi Anda. Kategori memudahkan untuk menjalankan analitik melalui data yang dikumpulkan. Jejak yang ditulis dari kode fungsi Anda ditetapkan ke kategori individual berdasarkan nama fungsi. Untuk mempelajari selengkapnya tentang kategori, lihat Mengonfigurasi kategori.

Data telemetri kustom

Di C#, JavaScript, dan Phyton, Anda dapat menggunakan Application Insights SDK untuk menulis data telemetri kustom.

Dependensi

Dimulai dengan versi 2.x dari Functions, Application Insights secara otomatis mengumpulkan data tentang dependensi untuk pengikatan yang menggunakan SDK klien tertentu. Pelacakan terdistribusi Application Insights dan pelacakan dependensi saat ini tidak didukung untuk aplikasi C# yang berjalan dalam proses pekerja yang terisolasi. Application Insights mengumpulkan data tentang dependensi berikut:

  • Azure Cosmos DB
  • Azure Event Hubs
  • Azure Service Bus
  • Layanan Azure Storage (Blob, Antrean, dan Tabel)

Permintaan HTTP dan panggilan database menggunakan SqlClient yang digunakan juga ditangkap. Untuk daftar lengkap dependensi yang didukung oleh Application Insights, lihat dependensi yang dilacak secara otomatis.

Application Insights menghasilkan peta aplikasi data dependensi yang dikumpulkan. Berikut ini adalah contoh peta aplikasi dari fungsi pemicu HTTP dengan pengikatan output penyimpanan Antrean.

Peta aplikasi dengan dependensi

Dependensi ditulis pada Information tingkat tersebut. Jika Anda memfilter di Warning atau di atasnya, Anda tidak akan melihat data dependensi. Juga, pengumpulan dependensi otomatis terjadi pada lingkup nonpengguna. Untuk menangkap data dependensi, pastikan level diatur ke setidaknya di Information luar lingkup pengguna (Function.<YOUR_FUNCTION_NAME>.User) di host Anda.

Selain pengumpulan data dependensi otomatis, Anda juga dapat menggunakan salah satu Application Insights SDK khusus bahasa untuk menulis informasi dependensi kustom ke log. Untuk contoh cara menulis dependensi kustom, lihat salah satu contoh spesifik bahasa berikut ini:

Penghitung Kinerja

Pengumpulan Penghitung Kinerja otomatis tidak didukung saat berjalan di Linux.

Menulis ke log

Cara Anda menulis ke log dan API yang Anda gunakan bergantung pada bahasa proyek aplikasi fungsi Anda.
Lihat panduan pengembang bahasa untuk mempelajari selengkapnya tentang menulis log dari fungsi Anda.

Menganalisis data

Secara default, data yang dikumpulkan dari aplikasi fungsi Anda disimpan di Application Insights. Di portal Microsoft Azure, Application Insights menyediakan serangkaian visualisasi data telemetri Anda yang luas. Anda bisa menelusuri log kesalahan, peristiwa, dan metrik kueri. Untuk mempelajari selengkapnya, termasuk contoh dasar cara menampilkan dan membuat kueri data yang Anda kumpulkan, lihat Menganalisis telemetri Azure Functions di Application Insights.

Log Streaming

Saat mengembangkan aplikasi, Anda sering ingin melihat apa yang sedang ditulis ke log dalam waktu dekat saat berjalan di Azure.

Ada dua cara untuk melihat aliran data log yang dihasilkan oleh eksekusi fungsi Anda.

  • Streaming log bawaan: platform App Service memungkinkan Anda melihat aliran file log aplikasi Anda. Aliran ini setara dengan output yang terlihat saat Anda men-debug fungsi Anda selama pengembangan lokal dan ketika Anda menggunakan tab Uji di portal. Semua informasi berbasis log ditampilkan. Untuk informasi selengkapnya, lihat Log streaming. Metode streaming ini hanya mendukung satu instans, dan tidak dapat digunakan dengan aplikasi yang berjalan di Linux dalam paket Konsumsi.

  • Live Metrics Stream: saat aplikasi fungsi Anda terhubung ke Application Insights, Anda dapat melihat data log dan metrik lainnya dalam waktu dekat secara real time di portal Microsoft Azure menggunakan Live Metrics Stream. Gunakan metode ini saat memantau fungsi yang berjalan pada beberapa instans atau di Linux dalam paket Konsumsi. Metode ini menggunakan data sampel.

Log stream dapat dilihat baik di portal maupun di sebagian besar lingkungan pengembangan lokal. Untuk mempelajari cara mengaktifkan aliran log, lihat Mengaktifkan log eksekusi streaming di Azure Functions.

Log Diagnostik

Application Insights memungkinkan Anda mengekspor data telemetri ke penyimpanan jangka panjang atau layanan analisis lainnya.

Karena Functions juga terintegrasi dengan Azure Monitor, Anda juga dapat menggunakan pengaturan diagnostik untuk mengirim data telemetri ke berbagai tujuan, termasuk log Azure Monitor. Untuk mempelajari selengkapnya, lihat Memantau Azure Functions dengan Log Azure Monitor.

Log Pengendali Skala

Pengontrol skala Azure Functions memantau instans host Azure Functions tempat aplikasi Anda berjalan. Pengontrol ini membuat keputusan tentang kapan harus menambahkan atau menghapus instans berdasarkan performa saat ini. Anda dapat meminta pengontrol skala mengeluarkan log ke Application Insights atau ke penyimpanan Blob untuk lebih memahami keputusan yang dibuat pengontrol skala untuk aplikasi fungsi Anda. Anda juga dapat menyimpan log yang dihasilkan dalam penyimpanan Blob untuk analisis oleh layanan lain.

Untuk mengaktifkan fitur ini, Anda menambahkan setelan aplikasi bernama SCALE_CONTROLLER_LOGGING_ENABLED ke pengaturan aplikasi fungsi Anda. Untuk mempelajari caranya, lihat Mengonfigurasi log pengontrol skala.

Metrik Azure Monitor

Selain data telemetri berbasis log yang dikumpulkan oleh Application Insights, Anda juga bisa mendapatkan data tentang cara aplikasi fungsi berjalan dari Metrik Azure Monitor. Untuk mempelajari selengkapnya, lihat Memantau dengan Azure Monitor.

Masalah laporan

Untuk melaporkan masalah dengan integrasi Application Insights di Functions atau untuk membuat saran atau permintaan, buat masalah di GitHub.

Langkah berikutnya

Untuk informasi lebih lanjut, lihat sumber daya berikut ini: