Pemantauan eksekusi kode real-time Laravel
Sebagai pemilik produk, saya belajar secara langsung cara mengidentifikasi dan memperbaiki masalah dalam aplikasi Anda, berdampak negatif pada pengalaman pengguna, dan memblokir calon pelanggan baru dengan kartu masuk Anda.
Pengguna tidak menghabiskan waktu untuk melaporkan bug. Jika tidak berfungsi seperti yang diharapkan, hentikan penggunaan aplikasi tersebut dan cari aplikasi lain yang sesuai dengan kebutuhan Anda.
Ide di balik Inspector adalah untuk menciptakan lingkungan pemantauan yang dirancang khusus untuk pengembang perangkat lunak, menghindari konfigurasi server dan infrastruktur yang tidak ingin ditangani oleh banyak pengembang. Bahkan, berkat inspector, Anda tidak perlu menginstalnya di server Anda atau melakukan konfigurasi yang rumit di tingkat infrastruktur.
Sebagai pemilik produk, saya belajar secara langsung cara mengidentifikasi dan memperbaiki masalah dalam aplikasi Anda, berdampak negatif pada pengalaman pengguna, dan memblokir calon pelanggan baru dengan kartu masuk Anda.
Pengguna tidak menghabiskan waktu untuk melaporkan bug. Jika tidak berfungsi seperti yang diharapkan, hentikan penggunaan aplikasi tersebut dan cari aplikasi lain yang sesuai dengan kebutuhan Anda.
Ide di balik Inspector adalah untuk menciptakan lingkungan pemantauan yang dirancang khusus untuk pengembang perangkat lunak, menghindari konfigurasi server dan infrastruktur yang tidak ingin ditangani oleh banyak pengembang. Bahkan, berkat inspector, Anda tidak perlu menginstalnya di server Anda atau melakukan konfigurasi yang rumit di tingkat infrastruktur.
Ia bekerja dengan pustaka perangkat lunak ringan yang dapat Anda instal di aplikasi Anda seperti ketergantungan lainnya. Untuk Laravel, Anda dapat menggunakan paket Laravel resmi. Pengembang tidak selalu terbiasa menginstal dan mengonfigurasi perangkat lunak di tingkat server, karena penginstalan ini berada di luar siklus hidup pengembangan perangkat lunak atau dikelola oleh tim eksternal.
Memaksa tim dengan tujuan yang berbeda (pengembang, operasi TI, keamanan siber, dll.) untuk bekerja dengan alat yang sama dapat menyebabkan kebingungan dan melemahkan kemampuan pengembang untuk mengidentifikasi dan menyelesaikan masalah dalam aplikasi dengan cepat.
Inspector adalah lingkungan pemantauan berbasis kode yang sepenuhnya di bawah kendali pengembang perangkat lunak dan membantu mengidentifikasi bug dan hambatan dalam aplikasi "sebelum" pengguna menghadapi masalah.
Sifatnya yang digerakkan oleh kode menyediakan alat yang tepat untuk proses pengembangan perangkat lunak yang sukses, dengan interupsi sesedikit mungkin dan keterlibatan produk yang berkelanjutan.
Pemantauan Eksekusi Kode Laravel: Cara Kerjanya
Inspector adalah paket composer yang menambahkan pemantauan eksekusi kode secara real-time ke aplikasi Laravel Anda, memungkinkan Anda untuk mengerjakan perubahan kode berkelanjutan sambil menangkap bug dan kemacetan secara real time sebelum Anda melakukannya.
Dibutuhkan kurang dari satu menit untuk memulai. Mari saya tunjukkan cara kerjanya.
Instal paket komposer
Jalankan perintah komposer berikut di terminal.
composer require inspector-apm/inspector-laravel
Konfigurasikan kunci pengambilan
Dapatkan kunci pengambilan baru dengan mendaftar ke Inspektor dan membuat proyek baru. Hanya butuh beberapa detik.
Prosedur instalasi ditampilkan langsung di layar aplikasi.
Tempatkan kunci API di file lingkungan:
INSPECTOR_API_KEY=xxxxxxxxxxxxxxxUji apakah semuanya berfungsi
Jalankan perintah pengujian untuk melihat apakah aplikasi Anda berhasil mengirim data ke Inspector:
php artisan inspector:test
Buka https://app.inspector.dev/home untuk menjelajahi data demo Anda.
Secara default, Inspektor memantau:
- Interaksi basis data
- Menjalankan pekerjaan yang antri
- Artisan commands
- Email terkirim
- Pengecualian yang tidak tertangani
- pemberitahuan
- Perintah redis
Langkah selanjutnya adalah memantau setiap run cycle yang dihasilkan oleh permintaan http.
Pantau permintaan HTTP yang masuk
Untuk mengaktifkan pemantauan permintaan http, middleware WebRequestMonitoring dapat digunakan sebagai komponen terpisah, memberi Anda kebebasan untuk memutuskan rute mana yang perlu Anda pantau berdasarkan konfigurasi rute atau pengaturan pemantauan pribadi Anda.
Pada dasarnya, middleware dapat dilampirkan ke kelas App\Http\Kernel.
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
...,
\Inspector\Laravel\Middleware\WebRequestMonitoring::class,
],
'api' => [
...,
\Inspector\Laravel\Middleware\WebRequestMonitoring::class,
]
]
Terapkan kode dan navigasikan alur eksekusi
Langkah selanjutnya adalah menerapkan kode ke produksi dan melihat bagaimana Inspector dapat merepresentasikan secara visual apa yang terjadi dalam kode selama operasi normal.
Aliran transaksi segera ditampilkan di dasbor, memungkinkan Anda memantau apa yang dilakukan aplikasi Anda secara real time berdasarkan transaksi per transaksi.
Perkaya timeline
default, inspector menyatukan database kueri, pekerjaan di latar belakang, dan perintah pengrajin, tetapi kode Anda mungkin memiliki banyak pernyataan kustom yang perlu Anda pantau dalam hal kinerja dan kesalahan.
- Http panggilan ke layanan eksternal
- Berfungsi untuk menangani file (pdf, excel, gambar)
- Proses impor/ekspor data
Anda dapat menggunakan paket untuk menambahkan segmen khusus ke garis waktu selain segmen yang ditemukan secara default untuk mengukur dampak blok kode tersembunyi pada kinerja transaksi.
Mari saya tunjukkan contoh nyata.
Misalkan Anda memiliki pekerjaan dalam antrean yang menjalankan beberapa kueri basis data dan permintaan http ke layanan eksternal di latar belakang.
Kueri pekerjaan dan basis data secara otomatis dideteksi oleh inspector, tetapi mungkin menarik untuk memantau dan mengukur pelaksanaan permintaan http ke layanan eksternal.
Cukup gunakan fungsi pembantu inspector.
class TagUserAsActive extends Job
{
/**
* @var User $user
*/
protected $user;
/**
* The TagUserAsActive constructor.
*/
public function __construct(User $user)
{
$this->user = $user;
}
/**
* Handle the job execution.
*/
public function handle()
{
// Monitring the HTTP request
inspector()->addSegment(function () {
$this->guzzle->post('/mail-marketing/add_tag', [
'email' => $this->user->email,
'tag' => 'active',
]);
}, 'http');
}
}
Anda dapat dengan mudah mengidentifikasi dampak segmen baru pada timeline transaksi.
Peringatan kesalahan dan pengecualian
Secara default, semua pengecualian yang terjadi di aplikasi Laravel Anda dilaporkan secara otomatis dan kesalahan yang tidak terduga akan diperingatkan secara real time.
Kami berharap semua perubahan yang Anda buat pada kode Anda akan sempurna. Namun pada kenyataannya, hal ini tidak selalu terjadi. Beberapa kesalahan muncul segera setelah pembaruan, sementara yang lain muncul secara tidak terduga. Ini adalah fakta yang tidak menguntungkan bagi pengembang dan seringkali tergantung pada masalah yang disebabkan oleh koneksi antara aplikasi dan layanan lainnya.
Namun, menggunakan inspector membuat segalanya lebih mudah. Ini mengotomatiskan deteksi masalah yang tidak diketahui, menghilangkan kebutuhan untuk terus-menerus memeriksa status aplikasi Anda secara manual atau menunggu langsung laporan dari pengguna. Jika terjadi kesalahan, Anda akan diberi tahu secara real time. Dengan setiap rilis, Anda akan mendapatkan informasi tentang dampak dari perubahan kode terbaru.
Jika kode Anda menimbulkan pengecualian tetapi Anda tidak ingin memblokir eksekusi, Anda dapat melaporkan kesalahan secara manual untuk pemantauan pribadi.
try {
// Your dangerous code here...
} catch (GuzzleException $exception) {
inspector()->reportException($exception)
}
Jika kode Anda gagal, Anda akan melihat peringatan waktu nyata di kotak masuk Anda untuk melihat kesalahan yang Anda lihat.
Anda juga dapat mengakses detail yang dikumpulkan oleh Inspektor secara real time.
Kesimpulan
Jika pelanggan melaporkan bahwa ada sesuatu yang tidak berfungsi, Anda harus menghentikan semua pekerjaan yang sedang berlangsung, mencoba mereproduksi skenario, lalu menangkap kembali dan menganalisis ulang log dengan perangkat Anda sendiri.
Ini bisa memakan waktu berjam-jam, atau berhari-hari dalam pengalaman saya, untuk mencari tahu apa yang sebenarnya terjadi. inspector dapat membuat perbedaan besar dalam hal efisiensi, produktivitas, dan kepuasan pelanggan.
Baru mengenal inspector?
Hindari konfigurasi server dan infrastruktur yang tidak ingin ditangani oleh banyak pengembang, dan dapatkan lingkungan pemantauan yang dirancang khusus untuk pengembang perangkat lunak.
Berkat Inspector, Anda tidak perlu menginstal di tingkat server atau melakukan konfigurasi yang rumit pada infrastruktur cloud Anda.
Inspector bekerja dengan pustaka perangkat lunak ringan yang dapat Anda instal di aplikasi Anda seperti ketergantungan lainnya. Pengembang tidak selalu terbiasa menginstal dan mengonfigurasi perangkat lunak di tingkat server, karena penginstalan ini berada di luar siklus hidup pengembangan perangkat lunak atau dikelola oleh tim eksternal.