Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Web Development
Code

Cara Menggunakan New Relic Dengan PHP & WordPress

by
Difficulty:BeginnerLength:LongLanguages:
This post is part of a series called Performance Monitoring With New Relic.
Using New Relic to Monitor Your Android App
Optimizing Application Performance with New Relic for iOS
Sponsored Content

This sponsored post features a product relevant to our readers while meeting our editorial guidelines for being objective and educational.

Indonesian (Bahasa Indonesia) translation by Ilham Saputra (you can also view the original English article)

Kami sebelumnya telah membahas cara mengatur aplikasi New Relic for a Rails, serta menghabiskan banyak waktu mencari cara menggunakan New Relic UI. Dan meskipun UI sangat mirip terlepas dari bahasa dan kerangka yang Anda gunakan, sebenarnya pengaturan New Relic bisa sangat berbeda. Hari ini, kita akan melihat cara memonitor aplikasi PHP menggunakan New Relic. Lebih khusus lagi, kami akan menyiapkan instalasi WordPress dasar dan mendapatkan beberapa data kinerja tentangnya, di dasbor Relik Baru.

Mendapatkan Relic Baru yang diatur untuk Ruby adalah lingkungan yang sangat agnostik. Kami hanya menambahkan permata agen ke aplikasi kami di mana tidak peduli bagaimana kami menyebarkan aplikasi kami (Passenger + Apache, Tipis + Nginx dll), permata akan melakukan sisa pekerjaan untuk memastikan kami mendapatkan metrik kinerja kami. Dengan versi PHP dari agen, lingkungan jauh lebih penting, karena agen diinstal dan tinggal di kotak di mana aplikasi akan digunakan, daripada menjadi bagian dari aplikasi tertentu.

Mari siapkan kotak pasir untuk kita mainkan (menggunakan instance EC2) dan dapatkan instalasi WordPress dasar berjalan.

Menyiapkan Sandbox kami

Kami tidak akan membahas terlalu banyak detail di sini karena sebagian besar hal yang perlu kami lakukan didokumentasikan dengan baik di tempat lain. Tapi, inilah garis besar dasarnya.

Kita perlu meluncurkan turunan EC2 dengan Ubuntu Server 12.04 LTS. Jika Anda tidak ingin mengatur turunan EC2, Anda dapat membuat mesin virtual dengan menggunakan VirtualBox (atau alat VM pilihan Anda). Jika Anda menyiapkan instance EC2, Anda harus ingat untuk melakukan hal berikut:

  • unduh kunci Anda (jika Anda telah membuat yang baru selama proses pengaturan), sehingga Anda dapat SSH ke instance Anda
  • tambahkan aturan tambahan ke grup keamanan apa pun yang Anda berikan kepada instance Anda untuk memungkinkan koneksi HTTP ke instance (sehingga kita benar-benar dapat mengakses blog WordPress kami melalui browser nanti)

Selain itu, semua yang lain harus cukup lurus ke depan dan Anda harus berakhir dengan menjalankan contoh (atau mesin virtual) yang siap untuk langkah selanjutnya.

Kami sekarang perlu menginstal Apache, PHP dan MySQL. Dengan Ubuntu Server, itu harus menjadi masalah sederhana menjalankan perintah berikut:

Anda harus memilih LAMP di UI dan Anda juga harus memasukkan kata sandi MySQL Anda ketika diminta untuk melakukannya (saya hanya membiarkannya kosong karena kami tidak peduli tentang kotak ini aman dengan cara apa pun). Setelah instalasi selesai, kita dapat menjalankan beberapa perintah untuk memastikan semuanya terinstal tanpa masalah.

Pertama periksa apakah Apache diinstal:

Kedua, periksa apakah kita memiliki PHP:

Dan kemudian periksa bahwa kita memiliki MySQL:

Kita mungkin juga perlu memeriksa apakah PHP benar-benar diaktifkan di konfigurasi Apache kami, tetapi karena kami menginstal lamp-server menggunakan tasksel, kami bisa sangat yakin bahwa itu adalah (dan kami selalu dapat melakukan skrip phpinfo() cepat jika kami benar-benar ingin memeriksa).

Sekarang kita dapat menginstal WordPress. Sebelum kami mengunduhnya, kami perlu menyiapkan database untuk itu. Kami hanya bisa mengikuti instruksi dari Codex:

Saya akan memanggil instalasi baru myblog1 (jadi database untuk itu juga bernama myblog1). Sekarang kita perlu menjalankan perintah berikut untuk menjalankan blog kita (jangan lupa untuk sudo bila perlu):

Sekarang isi nama database Anda, nama pengguna dan kata sandi ke dalam file konfigurasi (nama host adalah localhost yang ada secara default). Pada titik ini Anda harus dapat pergi ke browser Anda, tekan URL yang tepat (dalam kasus saya http://ec2-107-20-122-116.compute-1.amazonaws.com/myblog1) dan WordPress akan melakukan Hal (mungkin tidak ada salahnya untuk me-restart Apache sebelum melakukan ini sudo apache2 service restart).

Kotak pasir kami sekarang sudah selesai dan kita bisa mulai dengan menginstal New Relic.

Memasang New Relic

Seperti yang saya sebutkan sebelumnya, agen PHP New Relic berada di kotak, karena itu masuk akal bahwa Anda dapat menginstalnya menggunakan manajer paket sistem operasi (apt-get karena kita menggunakan Ubuntu). Hal pertama yang harus dilakukan adalah mengimpor kunci repositori New Relic:

Sekarang kita menambahkan New Relic repositori itu sendiri ke sistem:

Pada titik ini, kita dapat menggunakan perintah apt standar untuk menginstal agen:

Ini mengambil paket agen PHP dari repositori dan menempatkan skrip instalasi agen pada sistem. Script ini disebut newrelic-install dan ia hidup di /usr/bin, jadi Anda harus dapat menjalankannya dari mana saja. Skrip ini juga sayangnya bernama, karena Anda dapat menggunakannya untuk menginstal dan menghapus Relik Baru dari sistem Anda. Untuk menginstal New Relic, kita perlu menjalankan:

Skrip bersifat interaktif dan akan meminta Anda memasukkan kunci lisensi Anda. Anda dapat menemukannya dengan menekan big red button saat Anda sedang menyiapkan aplikasi PHP baru di dalam New Relic UI.

Jika Anda memiliki lebih dari satu instalasi PHP di sistem Anda, itu juga akan meminta Anda untuk memilih instalasi New Relic yang harus diinstal (Anda dapat memilih sejumlah instalasi termasuk semuanya). Jika Anda hanya memiliki satu PHP di sistem Anda, skrip hanya akan menggunakan yang satu itu. Perlu dicatat bahwa jika versi PHP Anda lebih lama dari 5,2, skrip akan keluar karena versi yang lebih lama tidak didukung.

Jika semuanya berjalan dengan baik, Anda akan melihat pesan berikut:

Script kemudian akan mencetak beberapa informasi tambahan untuk Anda termasuk lokasi file-file log:

Serta fakta bahwa Anda perlu me-restart server web Anda (dan PHP-FPM jika Anda menggunakannya).

Jika Anda me-restart server dan mengekor log daemon, Anda akan melihat sesuatu seperti ini:

Sesuatu yang bernama Aplikasi PHP melaporkan. Ini agak generik dan benar-benar tidak terlihat seperti blog WordPress kami, tetapi ini adalah awal yang baik. Artinya, semua aplikasi di server web Anda berjalan dan dilaporkan sebagai aplikasi yang sama dengan Relik Baru. Aplikasi ini memiliki nama default Aplikasi PHP.

Dalam kasus kami, karena kami hanya menjalankan satu aplikasi (instalasi WordPress kami), kami benar-benar dapat melompat ke UI Relik Baru dan mendapatkan statistik yang masuk akal untuk blog kami. Namun, tentu saja, kami ingin memberikan nama blog kami yang lebih baik dan berjaga-jaga, kami ingin server kami melayani lebih dari satu aplikasi. Kami juga ingin melihat cara memisahkan aplikasi dari satu sama lain. Kami akan melihat cara melakukan hal ini segera, tetapi sebelum kita melakukannya, mari kita lihat apa yang sebenarnya membentuk agen PHP.

Seperti apa Instalasi yang Sehat

Ada dua bagian dari agen PHP New Relic. Yang pertama adalah ekstensi PHP, itu adalah objek bersama yang disebut newrelic.so. Jika kita melihat file konfigurasi agen:

Kita bisa melihatnya tercantum tepat di atas:

Ini adalah hal yang benar-benar akan mengumpulkan statistik dari aplikasi Anda, tetapi itu tidak akan mengirim statistik ke New Relic, ini adalah pekerjaan daemon proxy.

Agen daemon adalah proxy antara ekstensi PHP dan server Relik Baru. Pada dasarnya, ekstensi PHP akan memberikan data yang dikumpulkan ke daemon dan daemon akan melakukan hal-hal seperti mengumpulkannya dan mencari tahu kapan untuk mengirimnya ke server. Anda harus selalu memastikan bahwa daemon berjalan, jika tidak, data tidak akan dikirim ke New Relic. Untungnya, secara default, setiap kali Anda me-restart server Anda, ekstensi PHP akan mencoba mendeteksi apakah daemon berjalan dan akan memulainya, jika tidak.

Sebuah daemon proxy yang berjalan memiliki dua proses. Salah satunya adalah proses monitor dan yang kedua adalah pekerja. Pekerja benar-benar melakukan pekerjaan berkomunikasi dengan server Relik Baru, proses pemantauan hanya mengamati pekerja dan jika pekerja meninggal, karena alasan apa pun, itu akan menelurkan yang baru. Anda dapat menghentikan daemon dengan menjalankan:

Yang akan mengirim sinyal shutdown ke proses pemantauan. Proses pemantauan kemudian akan membunuh proses pekerja dan kemudian mematikannya. Jika Anda perlu membunuh daemon secara manual, pastikan Anda menghentikan proses pemantauan terlebih dahulu sebelum membunuh pekerja tersebut (jika tidak, pekerja baru akan muncul - jelas).

Mengkonfigurasi Agen (dan Daemon Proxy)

Kami sudah melihat file konfigurasi agen New Relic PHP /etc/php5/cli/conf.d/newrelic.ini. Baik agen dan daemon dikonfigurasi menggunakan file ini.

File ini didokumentasikan dengan sangat baik dengan semua opsi dan nilai defaultnya terdaftar. Mari kita bicara tentang format file ini. Agen Relik Ruby Baru dapat dikonfigurasi melalui YAML, yang merupakan format terkenal. Agen PHP hanyalah sebuah file teks, tetapi kita membutuhkan sedikit struktur. Setiap variabel dalam file memiliki satu dari empat jenis (String, Boolean, Number, Duration). String dan angka adalah cukup jelas, nilai boolean bisa true, pada atau 1 untuk menunjukkan kebenaran dan false, mati atau 0 untuk menunjukkan kepalsuan. Durasi adalah string dengan format tertentu, misalnya: "1w3d23h10m" menunjukkan satu minggu, tiga hari, 23 jam, dan sepuluh menit. Nilai untuk durasi bisa sama granular dengan mikrodetik.

Semua variabel dalam file juga memiliki 'ruang lingkup'. Ada tiga kemungkinan lingkup: SISTEM, PERDIR, dan SCRIPT. Variabel yang memiliki lingkup SISTEM hanya dapat diatur dalam file konfigurasi global. Variabel dengan lingkup PERDIR dapat diatur dalam file konfigurasi global dan juga dapat diganti pada basis per direktori. Variabel dengan skrip skrip dapat bersifat global, per direktori dan juga dapat ditimpa secara terprogram.

Sebagai contoh, variabel konfigurasi yang paling umum adalah `newrelic.appname`. Variabel ini adalah tipe String, ia memiliki nilai default Aplikasi PHP (sekarang kita tahu mengapa kita melihat nilai itu dalam file log setelah kita menginstal agen dan memulai ulang server). Ruang lingkup variabel ini adalah PERDIR yang memberi kita gagasan tentang cara mengganti nama aplikasi untuk blog WordPress kami.

Ada banyak variabel lain yang mengontrol hal-hal seperti lokasi file-file log, apakah atau tidak query sql dicatat, tingkat log dari output log dan sebagainya. Saya mendorong Anda untuk mempelajari file newrelic.ini untuk membiasakan diri dengan opsi.

Mengkonfigurasi Aplikasi Terpisah untuk Blog WordPress kami

Kami ingin melihat aplikasi terpisah di Relic UI Baru untuk blog WordPress kami, jadi mari kita lihat bagaimana kita bisa mewujudkannya. Pilihan Anda untuk setiap konfigurasi direktori berbeda tergantung pada stack Anda, jika Anda menggunakan PHP-FPM, langkah-langkahnya berbeda daripada jika Anda menggunakan Nginx. Dalam kasus kami, karena kami menjalankan Apache lurus, kami memiliki dua opsi.

Pertama, jika kita memiliki host virtual untuk aplikasi kita, kita dapat memasukkan blok IfModule ke dalam blok virtual host kami dan mengubah nama aplikasi di sana:

Tetapi saya tidak memiliki virtual host khusus hanya untuk blog, jadi pilihan lainnya adalah menggunakan file .htaccess. Pastikan bahwa Anda benar-benar mengizinkan file .htaccess, dengan membuang yang berikut ini ke host virtual utama Anda:

Kita sekarang dapat meletakkan file .htaccess di direktori level atas blog kita dan memasukkan yang berikut di dalamnya:

Formatnya persis sama seperti jika saya memasukkannya ke blok IfModule. Sekarang kita hanya perlu memantulkan server kami. Jika kita mengekor log daemon saat server dimulai ulang, kita akan melihat yang berikut:

Aplikasi PHP masih ada, tetapi sekarang memiliki teman yang merupakan blog WordPress kami. Dan ini dia di UI:

Kami sekarang akan menerima metrik saat menelusuri blog kami, baik untuk antarmuka front-end dan admin. Karena New Relic mendukung WordPress di luar kotak, metrik harus dipecah dengan bijaksana (ketika kerangka kerja tidak didukung, metrik akan cenderung disatukan).

Memperbarui Agen & Daemon

New Relic adalah perangkat lunak yang rumit dan sebaiknya tetap up to date karena bug diperbaiki secara teratur dan fitur baru ditambahkan. Karena kami memasang semua yang menggunakan apt-get, menjaga semuanya selalu mudah. Kami hanya melakukan hal yang sama dengan yang kami lakukan untuk menginstalnya:

Jika kita belum menginstal PHP lain pada sistem, kita sekarang hanya perlu me-restart server kami dan kami akan up to date. Jika ada PHP baru, kita mungkin perlu menjalankan ulang skrip newrelic-install.

Hanya ada satu peringatan untuk semua ini. Dalam situasi tertentu, Anda mungkin menjalankan daemon proxy Relik Baru secara terpisah dari agen, yang berarti me-restart server tidak secara otomatis meluncurkan daemon jika tidak berjalan (ini disebut mode daemon eksternal). Mungkin ada beberapa alasan mengapa Anda ingin melakukan ini, misalnya, Anda mungkin ingin pengguna lain untuk memiliki proses daemon sehingga log hanya terlihat oleh pengguna itu. Dalam situasi ini, Anda harus ingat untuk menghidupkan ulang server dan memulai kembali daemon proxy. Jika tidak, Anda akan melihat kesalahan 'kesalahan protokol' dalam log.

Kesimpulan

Seperti yang Anda lihat, menyiapkan New Relic untuk aplikasi PHP sangat berbeda dengan mengaturnya untuk Ruby, aplikasi Anda yang sebenarnya bahkan tidak memperhitungkan prosesnya, sementara lingkungan tempat Anda menyebarkan adalah pusat. Untungnya ini berarti bahwa jika Anda menggunakan framework PHP yang didukung, proses untuk mengatur New Relic adalah persis sama. Selain WordPress, sebagian besar kerangka kerja PHP yang populer didukung termasuk Cake, Symphony dan Laravel (versi 4 dan lebih tinggi). Anda juga dapat menggunakan Relik Baru dengan kerangka kerja yang tidak didukung, tetapi Anda harus berusaha keras agar metrik tersebut masuk akal.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.