Apa Itu Elastic APM dan Bagaimana Integrasinya dengan Next.js

Ariska HidayatAriska Hidayat
3 min read

Apa Itu Elastic APM?

Elastic APM (Application Performance Monitoring) adalah modul dalam Elastic Stack yang dirancang untuk memantau performa aplikasi. Dengan Elastic APM, Anda dapat mengidentifikasi dan menganalisis berbagai masalah performa, seperti latensi tinggi, error, atau kegagalan proses tertentu.

Fitur utama Elastic APM meliputi:

  • Distribusi waktu respons: Memantau dan mengidentifikasi waktu respons aplikasi.

  • Transaksi: Memetakan proses tertentu, seperti permintaan HTTP atau query database.

  • Error tracking: Mencatat dan melaporkan error dalam aplikasi.

  • Tracing distribusi: Melacak interaksi antar layanan dalam aplikasi terdistribusi.

Elastic APM bekerja dengan menginstal agen kompatibel dengan bahasa atau framework yang digunakan. Agen ini mengumpulkan data telemetri dari aplikasi Anda dan mengirimkannya ke Elastic APM Server.


Mengintegrasikan Elastic APM dengan Next.js

Next.js adalah framework React yang populer untuk membangun aplikasi web modern. Untuk memantau performa aplikasi Next.js, Anda dapat mengintegrasikan Elastic APM menggunakan Elastic APM Node.js Agent. Berikut adalah langkah-langkahnya:

1. Persyaratan

Sebelum memulai, pastikan:

  • Anda memiliki akses ke Elastic APM Server (baik melalui Elastic Cloud atau self-hosted).

  • Anda memiliki aplikasi Next.js yang sudah ada.

  • Node.js sudah diinstal pada sistem Anda.

2. Instalasi Elastic APM Node.js Agent

Tambahkan agen Elastic APM ke proyek Next.js Anda dengan perintah berikut:

npm install elastic-apm-node --save

3. Konfigurasi Elastic APM

Buat file konfigurasi untuk Elastic APM, misalnya apm.js di folder root proyek:

const apm = require('elastic-apm-node').start({
  serviceName: 'nextjs-app', // Nama aplikasi Anda
  serverUrl: 'http://your-apm-server:8200', // URL server APM
  environment: process.env.NODE_ENV || 'development', // Environment aplikasi
  active: process.env.NODE_ENV === 'production', // Hanya aktif di production
});

module.exports = apm;

4. Inisialisasi Elastic APM di Aplikasi

Inisialisasikan agen Elastic APM sedini mungkin, sebelum file lainnya dijalankan. Tambahkan baris berikut di file next.config.js atau di file entry-point seperti server.js jika Anda menggunakan custom server:

require('./apm'); // Memuat konfigurasi APM

5. Mengukur Performa dengan Custom Transactions

Anda dapat menambahkan tracing untuk fungsi tertentu atau transaksi khusus. Contohnya, tambahkan monitoring pada API route di Next.js:

export default async function handler(req, res) {
  const transaction = apm.startTransaction('api-handler', 'custom');
  try {
    // Logika API
    res.status(200).json({ message: 'Hello from APM!' });
  } catch (error) {
    apm.captureError(error); // Tangkap error
    res.status(500).json({ error: 'Internal Server Error' });
  } finally {
    transaction.end(); // Akhiri transaksi
  }
}

6. Memverifikasi Data di Kibana

  • Buka Kibana dan navigasikan ke APM di Elastic Stack.

  • Pastikan aplikasi Next.js Anda mengirimkan data transaksi dan tracing ke Elastic APM Server.

  • Lihat laporan latensi, distribusi waktu respons, atau error yang telah dikumpulkan.


Tips Integrasi

  1. Gunakan Distributed Tracing: Jika aplikasi Anda terhubung dengan layanan lain, aktifkan distributed tracing untuk melacak seluruh alur request antar layanan.

  2. Perhatikan Overhead: Elastic APM dapat menambah sedikit overhead pada aplikasi. Pastikan untuk mengonfigurasi sampling rate jika aplikasi Anda memiliki beban tinggi.

  3. Integrasi dengan Logging: Gabungkan Elastic APM dengan Elasticsearch Logs untuk memantau log dan tracing performa di satu tempat.


Kesimpulan

Elastic APM memungkinkan Anda memantau performa aplikasi Next.js dengan efektif. Dengan menggunakan agen Node.js, Anda dapat melacak waktu respons, error, dan transaksi penting di aplikasi Anda. Pastikan untuk menyesuaikan konfigurasi sesuai kebutuhan, dan manfaatkan dashboard Kibana untuk mendapatkan wawasan lebih dalam tentang performa aplikasi Anda.

Dengan langkah-langkah di atas, Anda dapat mengintegrasikan Elastic APM dengan Next.js untuk meningkatkan observabilitas dan pengalaman pengguna.

0
Subscribe to my newsletter

Read articles from Ariska Hidayat directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Ariska Hidayat
Ariska Hidayat

I am an enthusiastic researcher and developer with a passion for using technology to innovate in business and education.