Cara Membuat Dashboard Monitoring Aplikasi dengan Laravel Pulse
Apa Itu Laravel Pulse?
Laravel Pulse adalah dashboard monitoring yang dirancang untuk memberikan informasi singkat mengenai kondisi aplikasi Laravel.
Pulse dapat membantu developer menemukan masalah seperti:
Request yang lambat.
Query database lambat.
Queue bermasalah.
Job yang membutuhkan waktu lama.
Exception.
Cache hit dan miss.
Penggunaan CPU.
Penggunaan memory.
Penggunaan storage.
Pengguna yang paling aktif.
Laravel membedakan Pulse dengan Telescope. Pulse lebih ditujukan untuk melihat gambaran performa dan penggunaan aplikasi, sedangkan Telescope lebih cocok untuk debugging event atau request secara lebih mendalam.
Informasi yang Bisa Dipantau
Dashboard Pulse menyediakan beberapa card bawaan.
Application Usage
Menampilkan pengguna yang paling banyak:
Membuat request.
Menjalankan job.
Mengalami slow request.
Slow Requests
Menampilkan request aplikasi yang melewati batas waktu tertentu.
Secara default, threshold slow request adalah:
1000 ms
atau satu detik.
Slow Queries
Menampilkan query database yang membutuhkan waktu lama.
Secara default, query yang membutuhkan waktu lebih dari 1.000 ms akan dicatat sebagai slow query.
Exceptions
Menampilkan exception yang terjadi pada aplikasi beserta frekuensi dan waktu terakhir terjadinya.
Queues
Menampilkan kondisi queue seperti:
Job menunggu.
Job sedang diproses.
Job selesai.
Job dilepas kembali.
Job gagal.
Cache
Menampilkan statistik cache hit dan cache miss untuk membantu melihat apakah strategi caching aplikasi bekerja dengan baik.
Servers
Menampilkan penggunaan resource server seperti CPU, memory, dan storage. Untuk memperoleh data server, command pulse:check harus dijalankan pada server yang ingin dipantau.
1. Install Laravel Pulse
Install menggunakan Composer:
composer require laravel/pulse
Kemudian publish konfigurasi dan migration:
php artisan vendor:publish --provider="Laravel\Pulse\PulseServiceProvider"
Jalankan migration:
php artisan migrate
Setelah migration selesai, dashboard Pulse dapat diakses melalui:
/pulse
Implementasi storage bawaan Pulse saat ini membutuhkan MySQL, MariaDB, atau PostgreSQL. Jika aplikasi menggunakan database lain, Pulse dapat menggunakan koneksi database terpisah.
2. Membuka Dashboard Pulse
Jalankan aplikasi:
php artisan serve
Kemudian buka:
http://localhost:8000/pulse
Dashboard akan mulai menampilkan data setelah aplikasi menerima request dan aktivitas lainnya.
Anda dapat mencoba membuka beberapa halaman aplikasi, menjalankan transaksi, atau mengeksekusi query untuk melihat data mulai masuk ke Pulse.
3. Publish Konfigurasi Pulse
Jika ingin mengubah pengaturan Pulse:
php artisan vendor:publish --tag=pulse-config
File konfigurasi akan tersedia pada:
config/pulse.php
File tersebut digunakan untuk mengatur recorder, threshold, sampling, database, dan berbagai pilihan monitoring lainnya.
4. Monitoring Server
Untuk menampilkan penggunaan CPU, RAM, dan storage, jalankan:
php artisan pulse:check
Command ini harus berjalan terus pada setiap server aplikasi yang ingin dimonitor.
Contoh data yang dapat muncul:
CPU : 35%
Memory : 62%
Storage : 48%
Server : production-01
Jika memiliki beberapa server, berikan nama berbeda.
Tambahkan ke .env:
PULSE_SERVER_NAME=production-01
Pada server lainnya:
PULSE_SERVER_NAME=production-02
Setiap server yang mengirimkan data ke Pulse harus memiliki nama yang unik.
5. Menjalankan Pulse di Production
Karena:
php artisan pulse:check
merupakan proses yang berjalan dalam waktu lama, jangan mengandalkan terminal biasa pada production.
Laravel merekomendasikan penggunaan process monitor seperti Supervisor agar proses dapat dijalankan kembali ketika berhenti.
Contoh sederhana Supervisor:
[program:laravel-pulse]
process_name=%(program_name)s
command=php /var/www/app/artisan pulse:check
autostart=true
autorestart=true
user=www-data
redirect_stderr=true
stdout_logfile=/var/log/laravel-pulse.log
Sesuaikan:
/var/www/app
dengan lokasi project Laravel.
6. Restart Pulse Setelah Deployment
Karena pulse:check merupakan long-running process, perubahan source code tidak langsung dibaca oleh proses yang sedang berjalan.
Laravel menyediakan:
php artisan pulse:restart
Command tersebut dapat dipanggil pada proses deployment agar Pulse melakukan restart secara aman.
Contohnya:
git pull
composer install --no-dev --optimize-autoloader
php artisan migrate --force
php artisan optimize
php artisan pulse:restart
Pulse menggunakan cache untuk menyimpan sinyal restart, sehingga cache driver aplikasi perlu dikonfigurasi dengan benar.
7. Mengamankan Dashboard Pulse
Secara default, dashboard /pulse hanya dapat diakses langsung pada environment local.
Untuk production, Anda harus menentukan siapa yang diperbolehkan melihatnya melalui Gate viewPulse.
Buka:
app/Providers/AppServiceProvider.php
Tambahkan:
use App\Models\User;
use Illuminate\Support\Facades\Gate;
Kemudian:
public function boot(): void
{
Gate::define(
'viewPulse',
function (User $user) {
return $user->role === 'super-admin';
}
);
}
Jika aplikasi memiliki permission:
Gate::define(
'viewPulse',
function (User $user) {
return $user->hasPermission(
'monitoring.view'
);
}
);
Jangan membuka /pulse untuk semua pengguna karena dashboard dapat menampilkan informasi internal mengenai performa aplikasi.
8. Monitoring Slow Query
Misalnya aplikasi memiliki query:
$transactions = Transaction::query()
->with([
'customer',
'items.product',
'payments',
])
->get();
Jika query membutuhkan waktu terlalu lama, Pulse dapat menampilkannya pada card:
Slow Queries
Pulse menggunakan threshold default 1.000 ms, tetapi threshold dapat disesuaikan melalui konfigurasi.
Contohnya pada config/pulse.php:
Recorders\SlowQueries::class => [
'threshold' => [
'default' => 500,
],
],
Dengan konfigurasi tersebut, query lebih dari:
500 ms
dapat dianggap lambat.
Hasil monitoring kemudian dapat digunakan untuk menentukan apakah aplikasi membutuhkan:
Database index.
Eager loading.
Cache.
Pagination.
Perbaikan struktur query.
Optimasi database.
9. Monitoring Slow Request
Pulse juga dapat mendeteksi endpoint yang lambat.
Contohnya:
/dashboard
/reports
/api/products
/admin/transactions
Jika request sering melebihi threshold, periksa:
Query database.
API eksternal.
Proses file.
Loop data.
Rendering view.
Perhitungan laporan.
Cache.
Threshold request dapat diatur berbeda berdasarkan URL. Pulse memang mendukung konfigurasi threshold tertentu untuk pola request tertentu.
Contoh:
Recorders\SlowRequests::class => [
'threshold' => [
'#^/admin/reports#' => 3000,
'default' => 1000,
],
],
Artinya halaman laporan diberikan batas:
3 detik
sedangkan request lainnya menggunakan satu detik.
10. Monitoring Queue
Jika aplikasi menggunakan:
php artisan queue:work
Pulse dapat digunakan untuk melihat performa queue.
Informasi yang dapat dipantau termasuk job yang queued, processing, processed, released, dan failed.
Contoh job:
GenerateMonthlyReport::dispatch();
Jika proses tersebut membutuhkan waktu terlalu lama, Pulse dapat menampilkannya melalui:
Slow Jobs
Threshold slow job default juga 1.000 ms dan dapat disesuaikan.
11. Monitoring API Eksternal
Pulse juga dapat memantau outgoing request yang dibuat menggunakan HTTP Client Laravel.
Misalnya:
Http::post(
'https://example-api.com/payment',
$data
);
Jika API eksternal lambat, Pulse dapat menampilkannya pada:
Slow Outgoing Requests
Threshold default untuk card tersebut adalah 1.000 ms.
Fitur ini berguna untuk memantau integrasi seperti:
Payment gateway.
WhatsApp API.
Marketplace API.
Shipping API.
ERP.
CRM.
Sistem pihak ketiga.
Dengan demikian, developer dapat mengetahui apakah performa aplikasi lambat karena kode internal atau layanan eksternal.
12. Monitoring Cache
Pulse dapat membantu melihat apakah cache aplikasi benar-benar digunakan.
Dashboard dapat menampilkan:
Cache Hit
Cache Miss
Jika cache miss terlalu tinggi, developer dapat mengevaluasi strategi cache yang digunakan. Pulse dapat mengelompokkan statistik cache berdasarkan key dan mendukung konfigurasi grouping untuk key yang memiliki pola serupa.
Contoh:
Cache::remember(
'dashboard-statistics',
600,
function () {
return $this->calculateStatistics();
}
);
Cache yang efektif dapat mengurangi kebutuhan query dan proses berulang.
13. Customize Dashboard Pulse
Dashboard Pulse dapat disesuaikan.
Publish view:
php artisan vendor:publish --tag=pulse-dashboard
File akan tersedia pada:
resources/views/vendor/pulse/dashboard.blade.php
Dashboard Pulse menggunakan Livewire dan dapat dikustomisasi tanpa perlu rebuild JavaScript hanya untuk mengatur layout card.
Contohnya:
<x-pulse full-width>
<livewire:pulse.servers
cols="12"
/>
<livewire:pulse.usage
cols="6"
/>
<livewire:pulse.slow-requests
cols="6"
/>
<livewire:pulse.slow-queries
cols="6"
/>
<livewire:pulse.queues
cols="6"
/>
</x-pulse>
Secara default, Pulse menggunakan layout grid 12 kolom, tetapi jumlah kolom serta ukuran masing-masing card dapat dikustomisasi.
14. Sampling untuk Aplikasi dengan Traffic Tinggi
Pada aplikasi dengan traffic tinggi, menyimpan seluruh aktivitas dapat menambah beban database.
Pulse menyediakan fitur sampling sehingga hanya sebagian aktivitas yang dicatat dan hasil dashboard dapat ditampilkan sebagai estimasi.
Fitur ini berguna untuk:
Marketplace besar.
Aplikasi SaaS.
API dengan traffic tinggi.
Sistem multi-cabang.
Website dengan banyak pengguna.
Jangan langsung meningkatkan jumlah data monitoring tanpa mempertimbangkan kebutuhan storage dan performa.
Laravel Pulse vs Telescope
Gunakan Pulse ketika ingin mengetahui:
Apakah aplikasi lambat.
Server sedang penuh atau tidak.
Query apa yang paling lambat.
Queue sedang bermasalah atau tidak.
Exception apa yang sering terjadi.
Bagaimana penggunaan aplikasi secara umum.
Gunakan Telescope ketika membutuhkan debugging yang lebih detail terhadap request, exception, query, job, notification, dan aktivitas tertentu.
Laravel sendiri menyarankan Telescope untuk debugging event individual yang lebih mendalam dibandingkan gambaran umum yang diberikan Pulse.
Kesalahan yang Perlu Dihindari
Membuka Pulse untuk Semua User
Dashboard monitoring hanya sebaiknya tersedia untuk administrator atau tim teknis.
Tidak Menjalankan pulse:check
Tanpa:
php artisan pulse:check
card monitoring resource server tidak mendapatkan data server.
Menjalankan pulse:check Manual di Production
Gunakan Supervisor atau process manager agar proses tetap hidup.
Mengabaikan Slow Query
Query yang terus-menerus lambat dapat meningkatkan penggunaan CPU dan database.
Monitoring Tanpa Tindakan
Dashboard monitoring tidak memberikan manfaat jika masalah yang ditemukan tidak dianalisis dan diperbaiki.
Contoh Penggunaan Pulse untuk Bisnis
Laravel Pulse dapat digunakan pada:
Point of Sales
Memantau transaksi lambat, queue, database, dan penggunaan server.
Sistem Inventory
Mengetahui query stok dan laporan yang membutuhkan waktu lama.
Aplikasi Klinik
Memantau request pendaftaran, pemeriksaan, pembayaran, serta exception.
Marketplace
Memantau API pembayaran, queue pesanan, query produk, dan server.
Sistem Multi-Cabang
Memantau performa aplikasi ketika digunakan banyak cabang secara bersamaan.
SaaS
Melihat aktivitas pengguna, performa API, exception, cache, dan penggunaan infrastruktur.
Checklist Laravel Pulse Production
Sebelum digunakan pada production, pastikan:
Pulse sudah terinstall.
Migration sudah dijalankan.
/pulsedapat diakses administrator.Authorization sudah dibuat.
pulse:checkberjalan.Supervisor sudah dikonfigurasi.
Cache driver bekerja.
Slow query dipantau.
Slow request dipantau.
Queue dipantau.
Exception dipantau.
Kapasitas database Pulse diperhatikan.
Sampling dipertimbangkan jika traffic besar.
pulse:restartdijalankan setelah deployment.
Monitoring Aplikasi Bersama Ovla Media
Ovla Media dapat membantu pengembangan dan optimasi aplikasi Laravel melalui:
Implementasi Laravel Pulse.
Monitoring performa server.
Optimasi database.
Optimasi slow query.
Optimasi Laravel Queue.
Monitoring API.
Optimasi cache.
Dashboard monitoring.
Audit aplikasi Laravel.
Pengembangan aplikasi bisnis custom.
Monitoring dapat diterapkan pada sistem Point of Sales, inventory, klinik, marketplace, CRM, ERP, SaaS, dan aplikasi multi-cabang.
Kesimpulan
Laravel Pulse merupakan solusi monitoring resmi Laravel untuk melihat kondisi aplikasi melalui satu dashboard.
Instalasi dasarnya:
composer require laravel/pulse
php artisan vendor:publish --provider="Laravel\Pulse\PulseServiceProvider"
php artisan migrate
Kemudian dashboard dapat dibuka melalui:
/pulse
Untuk monitoring resource server, jalankan:
php artisan pulse:check
Pulse dapat membantu developer memantau:
Server.
Request lambat.
Query lambat.
Queue.
Slow jobs.
Exception.
Cache.
Aktivitas pengguna.
API eksternal.
Dengan monitoring yang tepat, masalah performa dapat ditemukan lebih cepat sebelum berdampak besar pada pengalaman pengguna dan operasional bisnis.
Artikel Terkait
Cara Membuat Notifikasi Realtime Laravel Menggunakan Reverb
Laravel Reverb adalah WebSocket server resmi Laravel yang dapat digunakan untuk membuat fitur realtime seperti notifikasi, update transaksi, status pesanan, chat, dan dashboard tanpa pengguna harus melakukan refresh halaman. Reverb terintegrasi langsung dengan sistem broadcasting Laravel dan dapat digunakan bersama Laravel Echo pada frontend.
Cara Membuat Aplikasi SaaS Multi-Tenant Menggunakan Laravel
Aplikasi SaaS multi-tenant memungkinkan banyak perusahaan atau pelanggan menggunakan satu aplikasi yang sama dengan data yang tetap terpisah. Artikel ini membahas cara membuat aplikasi SaaS multi-tenant menggunakan Laravel, mulai dari pemilihan arsitektur database, pembuatan tenant, middleware, global scope, keamanan data, subdomain, hingga pengelolaan queue dan cache.
Cara Membuat Chatbot AI Laravel Menggunakan OpenAI API
Chatbot AI Laravel dapat dibuat dengan menghubungkan aplikasi Laravel ke OpenAI API melalui HTTP request. Chatbot tersebut dapat digunakan untuk menjawab pertanyaan pelanggan, membantu layanan customer service, memberikan informasi produk, membuat konten, dan mendukung otomatisasi bisnis. Artikel ini membahas konfigurasi OpenAI API, pembuatan service, controller, route, tampilan chat, penyimpanan konteks percakapan, serta keamanan API key.