Bagikan melalui


Diagnostik mendalam untuk aplikasi dan layanan web dengan Application Insights

Artikel ini menjelaskan bagaimana Application Insights cocok dengan siklus DevOps.

Mengapa saya membutuhkan Application Insights?

Application Insights memantau aplikasi web Anda yang sedang berjalan. Ini memberi tahu Anda tentang kegagalan dan masalah performa dan membantu Anda menganalisis bagaimana pelanggan menggunakan aplikasi Anda. Ini berfungsi untuk aplikasi yang berjalan di platform seperti ASP.NET, Java EE, dan Node.js. Ini dihosting di cloud atau lokal.

Gambar yang menunjukkan aspek kompleksitas pengiriman aplikasi web.

Sangat penting untuk memantau aplikasi modern saat sedang berjalan. Anda ingin mendeteksi kegagalan sebelum pelanggan Anda melakukannya. Anda juga ingin menemukan dan memperbaiki masalah performa yang memperlambat atau menyebabkan ketidaknyamanan bagi pengguna Anda. Ketika sistem berkinerja sesuai kepuasan Anda, Anda juga ingin tahu apa yang dilakukan pengguna dengannya. Misalnya, apakah mereka menggunakan fitur terbaru? Apakah mereka berhasil dengan itu?

Aplikasi web modern dikembangkan dalam siklus pengiriman berkelanjutan:

  • Merilis fitur atau peningkatan baru.
  • Amati seberapa baik bekerja untuk pengguna.
  • Rencanakan kenaikan pengembangan berikutnya berdasarkan pengetahuan tersebut.

Bagian penting dari siklus ini adalah fase observasi. Application Insights menyediakan alat untuk memantau performa dan penggunaan aplikasi web.

Aspek terpenting dari proses ini adalah diagnostik dan diagnosis. Jika aplikasi gagal, bisnis akan hilang. Peran utama kerangka kerja pemantauan adalah untuk:

  • Mendeteksi kegagalan dengan andal.
  • Segera beri tahu.
  • Berikan informasi yang diperlukan untuk mendiagnosis masalah.

Application Insights melakukan tugas-tugas ini.

Dari mana datangnya bug?

Kegagalan dalam sistem web biasanya muncul dari masalah konfigurasi atau interaksi yang buruk antara banyak komponennya. Tugas pertama ketika Anda mengatasi insiden situs langsung adalah mengidentifikasi lokus masalah. Komponen atau hubungan mana yang menjadi penyebabnya?

Di era yang lebih sederhana, program komputer berjalan dalam satu komputer. Pengembang mengujinya secara menyeluruh sebelum mengirimkannya, dan setelah pengiriman, mereka jarang melihat atau memikirkannya lagi. Pengguna harus memasang bug sisa selama bertahun-tahun.

Prosesnya sangat berbeda sekarang. Aplikasi Anda memiliki banyak perangkat yang berbeda untuk dijalankan, dan mungkin sulit untuk menjamin perilaku yang sama persis pada masing-masing perangkat. Menghosting aplikasi di cloud berarti bug dapat diperbaiki dengan cepat. Tetapi itu juga berarti ada persaingan berkelanjutan dan harapan fitur baru pada interval yang sering.

Dalam kondisi ini, satu-satunya cara untuk menjaga kontrol tegas pada jumlah bug adalah pengujian unit otomatis. Tidak mungkin untuk mencoba kembali semuanya secara manual pada setiap pengiriman. Pengujian unit sekarang menjadi bagian yang biasa dari proses pembuatan. Alat seperti Xamarin Test Cloud membantu dengan menyediakan pengujian UI otomatis pada beberapa versi browser. Rezim pengujian ini memungkinkan kami berharap bahwa tingkat bug yang ditemukan di dalam aplikasi dapat ditekan seminimal mungkin.

Aplikasi web khusus memiliki banyak komponen langsung. Seiring dengan klien (di browser atau aplikasi perangkat) dan server web, kemungkinan ada pemrosesan back-end yang substansial. Mungkin ujung belakang adalah alur komponen atau koleksi potongan kolaborasi yang longgar. Banyak dari mereka tidak akan berada dalam kendali Anda. Mereka adalah layanan eksternal yang Anda andalkan.

Dalam konfigurasi seperti ini, mungkin sulit dan tidak ekonomis untuk menguji, atau memperkirakan, setiap mode kegagalan yang mungkin, selain di sistem langsung itu sendiri.

Pertanyaan

Berikut adalah beberapa pertanyaan yang perlu diajukan saat Anda mengembangkan sistem web:

  • Apakah aplikasi Anda mengalami crash?
  • Apa yang sebenarnya terjadi? Jika gagal dalam permintaan, Anda ingin tahu bagaimana permintaan itu sampai di sana. Anda memerlukan jejak peristiwa.
  • Apakah aplikasi Anda cukup cepat? Berapa lama waktu yang dibutuhkan untuk menanggapi permintaan khusus?
  • Apakah server dapat menangani beban? Ketika tingkat permintaan meningkat, apakah waktu respons akan tetap stabil?
  • Seberapa responsif dependensi Anda, seperti REST API, database, dan komponen lain yang dipanggil aplikasi Anda? Secara khusus, jika sistem lambat, apakah itu komponen Anda, atau Apakah Anda mendapatkan respons lambat dari orang lain?
  • Apakah aplikasi Anda naik atau turun? Bisakah ini dilihat dari seluruh dunia? Anda perlu tahu apakah itu berhenti.
  • Apa akar penyebabnya? Apakah kegagalan dalam komponen atau dependensi Anda? Apakah ini masalah komunikasi?
  • Berapa banyak pengguna yang terpengaruh? Jika Anda memiliki lebih dari satu masalah untuk ditangguhkan, mana yang paling penting?

Apa yang dimaksud dengan Application Insights?

Gambar yang memperlihatkan alur kerja dasar Application Insights.

  1. Application Insights melengkapi aplikasi Anda dan mengirimkan telemetri tentangnya saat aplikasi sedang berjalan. Baik Anda dapat membangun Application Insights SDK ke dalam aplikasi atau Anda dapat menerapkan instrumentasi saat runtime. Metode sebelumnya lebih fleksibel karena Anda dapat menambahkan telemetri Anda sendiri ke modul reguler.
  2. Telemetri dikirim ke portal Application Insights, tempat telemetri disimpan dan diproses. Meskipun Application Insights dihosting di Azure, Application Insights dapat memantau aplikasi web apa pun, bukan hanya aplikasi Azure.
  3. Telemetri disajikan kepada Anda dalam bentuk bagan dan tabel peristiwa.

Ada dua jenis utama telemetri: Instans agregat dan mentah.

  • Data instans mungkin menyertakan laporan permintaan yang telah diterima oleh aplikasi web Anda. Anda dapat menemukan dan memeriksa detail permintaan dengan menggunakan alat Pencarian di portal Application Insights. Instans mungkin menyertakan data seperti berapa lama aplikasi Anda merespons permintaan dan URL yang diminta dan perkiraan lokasi klien.
  • Data agregat mencakup jumlah peristiwa per satuan waktu sehingga Anda dapat membandingkan tingkat permintaan dengan waktu respons. Ini juga mencakup rata-rata metrik seperti waktu respons permintaan.

Kategori utama data adalah:

  • Permintaan ke aplikasi Anda (biasanya permintaan HTTP) dengan data di URL, waktu respons, dan keberhasilan atau kegagalan.
  • Dependensi seperti panggilan REST dan SQL yang dilakukan oleh aplikasi Anda, juga dengan URI, waktu respons, dan keberhasilan.
  • Pengecualian, termasuk pelacakan tumpukan.
  • Data tampilan halaman, yang berasal dari browser pengguna.
  • Metrik seperti penghitung kinerja dan metrik yang Anda tulis sendiri.
  • Peristiwa kustom yang dapat Anda gunakan untuk melacak peristiwa bisnis.
  • Jejak log yang digunakan untuk penelusuran kesalahan.

Studi kasus: Real Madrid F.C.

Layanan web Real Madrid Football Club melayani sekitar 450 juta penggemar di seluruh dunia. Penggemar mengaksesnya melalui browser web dan aplikasi seluler klub. Penggemar dapat memesan tiket dan juga mengakses informasi dan klip video tentang hasil, pemain, dan game yang akan datang. Mereka dapat mencari dengan filter seperti jumlah tujuan yang dicetak. Ada juga tautan ke media sosial. Pengalaman pengguna sangat dipersonalisasi dan dirancang sebagai komunikasi dua arah untuk melibatkan penggemar.

Solusinya adalah sistem layanan dan aplikasi di Azure. Skalabilitas adalah persyaratan utama. Lalu lintas bervariasi dan dapat mencapai volume tinggi selama dan sekitar kecocokan.

Untuk Real Madrid, sangat penting untuk memantau performa sistem. Application Insights memberikan pandangan komprehensif di seluruh sistem untuk memastikan tingkat layanan yang andal dan tinggi.

Klub juga mendapatkan pemahaman mendalam tentang penggemarnya seperti di mana mereka berada (hanya 3% di Spanyol), minat apa yang mereka miliki pada pemain, hasil historis, dan permainan yang akan datang, dan bagaimana mereka merespons hasil pertandingan.

Sebagian besar data telemetri ini secara otomatis dikumpulkan tanpa kode tambahan, yang menyederhanakan solusi dan mengurangi kompleksitas operasional. Untuk Real Madrid, Application Insights menangani 3,8 miliar poin telemetri setiap bulan.

Real Madrid menggunakan modul Power BI untuk melihat telemetrinya.

Cuplikan layar yang memperlihatkan tampilan Power BI telemetri Application Insights.

Deteksi cerdas

Diagnostik proaktif adalah fitur terbaru. Tanpa konfigurasi khusus apa pun dari Anda, Application Insights secara otomatis mendeteksi dan memperingatkan Anda tentang kenaikan tingkat kegagalan yang tidak biasa di aplikasi Anda. Cukup cerdas untuk mengabaikan latar belakang kegagalan sesekali dan juga kenaikan yang hanya sebanding dengan peningkatan permintaan.

Misalnya, mungkin ada kegagalan di salah satu layanan yang Anda andalkan. Atau mungkin build baru yang Anda sebarkan tidak berfungsi dengan baik. Anda akan mengetahuinya segera setelah melihat email Anda. Ada juga webhook sehingga Anda dapat memicu aplikasi lain.

Aspek lain dari fitur ini melakukan analisis mendalam harian telemetri Anda, mencari pola performa yang tidak biasa yang sulit ditemukan. Misalnya, ini dapat menemukan performa lambat yang terkait dengan area geografis tertentu atau dengan versi browser tertentu.

Dalam kedua kasus, pemberitahuan memberi tahu Anda gejala yang ditemukan. Ini juga memberi Anda data yang Anda butuhkan untuk membantu mendiagnosis masalah, seperti laporan pengecualian yang relevan.

Cuplikan layar yang memperlihatkan email dari diagnostik proaktif.

Pelanggan Samtec mengatakan, "Selama cutover fitur baru-baru ini, kami menemukan database berskala kurang yang mencapai batas sumber dayanya dan menyebabkan waktu habis. Peringatan deteksi proaktif muncul saat kami melakukan triase masalah, sangat mendekati waktu real time seperti yang diiklankan. Peringatan ini ditambah dengan peringatan platform Azure membantu kami memperbaiki masalah hampir secara instan. Total waktu henti <10 menit."

Aliran Metrik Langsung

Menyebarkan build terbaru dapat menjadi pengalaman yang mengkhawatirkan. Jika ada masalah, Anda ingin segera mengetahuinya sehingga Anda dapat mundur jika perlu. Stream Metrik Langsung memberi Anda metrik utama dengan latensi sekitar satu detik.

Cuplikan layar yang memperlihatkan metrik langsung.

Ini memungkinkan Anda segera memeriksa sampel kegagalan atau pengecualian apa pun.

Cuplikan layar yang memperlihatkan peristiwa kegagalan langsung.

Peta Aplikasi

Peta Aplikasi secara otomatis menemukan topologi aplikasi Anda. Ini meletakkan informasi performa di atas peta untuk memungkinkan Anda dengan mudah mengidentifikasi penyempitan performa dan aliran bermasalah di seluruh lingkungan terdistribusi Anda. Dengan Peta Aplikasi, Anda dapat menemukan dependensi aplikasi pada layanan Azure.

Anda dapat melakukan triase masalah dengan memahami apakah terkait kode atau dependensi. Dari satu tempat, Anda dapat menelusuri pengalaman diagnostik terkait. Misalnya, aplikasi Anda mungkin gagal karena penurunan performa di tingkat SQL. Dengan Peta Aplikasi, Anda dapat segera melihatnya dan menelusuri pengalaman SQL Index Advisor atau Query Insights.

Cuplikan layar yang memperlihatkan peta aplikasi.

Analitik Log Application Insights

Dengan Log Analytics, Anda dapat menulis kueri arbitrer dalam bahasa seperti SQL yang kuat. Mendiagnosis di seluruh tumpukan aplikasi menjadi mudah karena berbagai perspektif terhubung. Kemudian Anda dapat mengajukan pertanyaan yang tepat untuk menghubungkan performa layanan dengan metrik bisnis dan pengalaman pelanggan.

Anda dapat membuat kueri semua instans telemetri dan data mentah metrik yang disimpan di portal. Bahasa tersebut mencakup filter, join, aggregation, dan operasi lainnya. Anda dapat menghitung bidang dan melakukan analisis statistik. Visualisasi tabular dan grafis tersedia.

Cuplikan layar yang memperlihatkan kueri analitik dan bagan hasil.

Misalnya, mudah untuk:

  • Segmentasikan data performa permintaan aplikasi Anda berdasarkan tingkat pelanggan untuk memahami pengalaman mereka.
  • Mencari kode kesalahan tertentu atau nama peristiwa kustom selama penyelidikan situs langsung.
  • Menelusuri penggunaan aplikasi oleh pelanggan tertentu untuk memahami bagaimana fitur diperoleh dan diadopsi.
  • Melacak sesi dan waktu respons untuk pengguna tertentu guna memungkinkan tim dukungan dan operasi memberikan dukungan pelanggan instan.
  • Tentukan fitur aplikasi yang sering digunakan untuk menjawab pertanyaan prioritas fitur.

Pelanggan DNN mengatakan, "Application Insights telah memberi kami bagian yang hilang dari persamaan untuk dapat menggabungkan, mengurutkan, mengkueri, dan memfilter data sesuai kebutuhan. Memungkinkan tim kami menggunakan kecerdikan dan pengalaman mereka sendiri untuk menemukan data dengan bahasa kueri yang kuat telah memungkinkan kami menemukan wawasan dan memecahkan masalah yang bahkan tidak kami ketahui sebelumnya. Banyak jawaban menarik dari pertanyaan yang dimulai dengan 'Saya ingin tahu apakah...'. "

Integrasi alat pengembangan

Application Insights terintegrasi dengan alat pengembangan.

Mengonfigurasi Application Insights

Visual Studio dan Eclipse memiliki alat untuk mengonfigurasi paket SDK yang benar untuk proyek yang Anda kembangkan. Ada perintah menu untuk menambahkan Application Insights.

Jika Anda kebetulan menggunakan kerangka kerja pencatatan jejak, seperti Log4N, NLog, atau System.Diagnostics.Trace, Anda mendapatkan opsi untuk mengirim log ke Application Insights bersama dengan telemetri lain sehingga Anda dapat dengan mudah menghubungkan jejak dengan permintaan, panggilan dependensi, dan pengecualian.

Mencari telemetri di Visual Studio

Saat mengembangkan dan men-debug fitur, Anda dapat melihat dan mencari telemetri langsung di Visual Studio. Anda dapat menggunakan fasilitas pencarian yang sama seperti di portal web.

Saat Application Insights mencatat pengecualian, Anda dapat melihat titik data di Visual Studio dan langsung melompat ke kode yang relevan.

Cuplikan layar yang memperlihatkan pencarian Visual Studio.

Selama penelusuran kesalahan, Anda dapat menyimpan telemetri di komputer pengembangan Anda. Anda dapat melihatnya di Visual Studio tanpa mengirimkannya ke portal. Opsi lokal ini menghindari pencampuran penelusuran kesalahan dengan telemetri produksi.

Item pekerjaan

Saat peringatan ditampilkan, Application Insights dapat secara otomatis membuat item pekerjaan di sistem pelacakan kerja Anda.