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

Cara Memantau Aplikasi Berbasis Docker Menggunakan New Relic

by
Read Time:26 minsLanguages:
This post is part of a series called Performance Monitoring With New Relic.
How to Use New Relic Browser to Improve Your Web App's User Experience
How to Use New Relic Insights to Learn More About Your Customers
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)

Pengenalan

Docker adalah salah satu teknologi baru yang tumbuh paling cepat saat ini. Solusi untuk menyebarkan perangkat lunak dan membangun arsitektur layanan web yang skalabel, memungkinkan Anda membagi arsitektur aplikasi ke dalam wadah dengan peran dan tanggung jawab tertentu. Dengan menggunakan Docker, Anda juga dapat menentukan dependensi aplikasi pada tingkat sistem operasi, membawa kita yang paling dekat yang pernah kita miliki ke janji asli Java: "Tulis sekali, jalankan di mana saja".

Pada sisi negatifnya, encapsulating kode Anda di dalam satu set container dapat menyebabkan kurangnya visibilitas: container menjadi kotak hitam dan meninggalkan pengembang dengan sedikit atau tidak ada visibilitas ke inner workings mereka.

Untuk memperbaikinya, New Relic mengambil tugas dan membuat alat pemantauan sisi servernya (Server dan APM) mendukung Docker. Pada Juni 2015, dukungan Docker menjadi tersedia untuk semua pelanggan New Relic.

Dalam posting yang mengumumkan dukungan Docker, Andrew Marshall dari New Relic menulis:

"Anda sekarang dapat menelusuri dari aplikasi (yang benar-benar apa yang Anda pedulikan) ke wadah Docker individu, dan kemudian ke server fisik. Tidak ada lagi titik buta!"

Dengan memantau aplikasi berbasis Docker menggunakan set alat New Relic, sekarang Anda dapat menganalisis aplikasi secara keseluruhan dan kemudian, ketika Anda menemukan masalah dalam aplikasi Anda, cari wadah tempat masalah terjadi dan perbaiki masalah di dalamnya.

Juga, dengan memantau aplikasi di tingkat Docker, Anda akan mendapatkan informasi berharga tentang pengaturan Anda: apakah Anda menggunakan wadah Anda dengan bijaksana, dan apakah pembagian sumber daya antara container berfungsi sebagaimana mestinya?

Dalam Tutorial Ini

Dalam tutorial ini, saya akan menunjukkan kepada Anda bagaimana memulai dengan memantau aplikasi berbasis Docker sederhana menggunakan alat-alat New Relic.

Anda akan belajar:

  • cara mengatur pemantau New Relic pada server web yang menjalankan sekumpulan container Docker untuk mengumpulkan informasi tentang lingkungan Docker secara keseluruhan
  • cara mengatur Pemantauan New Relic untuk aplikasi PHP yang berjalan di dalam satu atau beberapa container Docker untuk memantau keadaan aplikasi serta wadah Docker individu

Untuk mencapai hal ini, kami akan membuat prototipe sederhana untuk solusi WordPress yang dihosting: tiga situs WordPress masing-masing berjalan dalam container Docker dan wadah MySQL dibagi di antara mereka.

Dengan pengaturan di tempat, kami kemudian akan mengaktifkan pemantauan New Relic dan pergi melalui pandangan alat-alat pemantauan dan menjelajahi data yang akan Anda temukan di dalamnya.

Persyaratan

Sementara saya berharap Anda akan belajar sesuatu tentang menggunakan Docker dengan membaca tutorial ini, itu tidak dimaksudkan untuk menjadi tutorial tentang Docker sama seperti tentang menggunakan alat pemantauan New Relic bersama dengan aplikasi berbasis Docker Anda.

Itu sebabnya, untuk mendapatkan hasil maksimal dari tutorial, Anda setidaknya harus sedikit akrab dengan Docker. Juga, pemahaman dasar tentang baris perintah Linux diharapkan.

Mengatur Container Docker

Singkatnya, Docker adalah alat untuk mengemas komponen aplikasi Anda dan ketergantungannya ke dalam unit yang terdokumentasi dengan baik dan lengkap yang dapat digunakan dengan cepat dan andal ke dalam lingkungan yang berbeda—baik itu mesin pengembangan atau sekelompok server produksi.

Blok-blok bangunan ini disebut containers—sebuah konsep yang dekat dengan mesin virtual, tetapi tidak cukup. Sedangkan mesin virtual menjalankan sistem operasinya sendiri, semua container dijalankan pada sistem operasi host yang sama tetapi masing-masing memiliki dependensi dan pustaka sendiri. Wadah juga dapat dihubungkan satu sama lain untuk memungkinkan mereka berbagi, misalnya, sumber daya mereka.

Untuk mempelajari lebih lanjut tentang Docker, tempat terbaik untuk memulai adalah dokumentasi online alat ini. Ini ditulis dengan baik dan akan membimbing Anda dengan tangan.

Kemudian, setelah Anda merasa nyaman untuk mencoba Docker beraksi, mari kita mulai dengan setup kami!

Apa yang Akan Kita Bangun?

Sebelum memulai dengan menerapkan konfigurasi Docker dan New Relic kami, inilah gambar yang menunjukkan gambaran umum arsitektur dasar yang akan kami bangun dalam tutorial ini:

A simple WordPress stack build on Docker containers and reporting to New RelicA simple WordPress stack build on Docker containers and reporting to New RelicA simple WordPress stack build on Docker containers and reporting to New Relic

Seperti yang saya sebutkan dalam pendahuluan, ini adalah layanan WordPress yang disederhanakan: Dalam tiga kontainer (nomor acak), kita akan menjalankan instalasi WordPress di masing-masing. Container WordPress semuanya terhubung ke sebuah kontainer yang menjalankan MySQL. Semua ini akan berjalan di satu server—yang pada contohnya akan di-host di Amazon Web Services, tetapi dapat berupa server yang mampu menjalankan alat pemantauan Docker dan New Relic.

Server dan kontainer yang berjalan di dalamnya akan dipantau oleh alat APM (Application Performance Monitoring) dan Server milik New Relic.

Saya merancang konfigurasi ini sebagian besar untuk tujuan demonstrasi, tetapi sebenarnya dimodelkan setelah sesuatu yang saya buat di proyek saya sendiri: hanya dengan menambahkan alat admin, konfigurasi DNS yang tepat, dan proxy reverse Nginx—semua ini berjalan sendiri Container Docker—pengaturannya dapat dibangun menjadi layanan WordPress host yang berfungsi penuh. Ini, bagaimanapun, berada di luar lingkup tutorial ini, jadi mari kita kembali untuk menjalankan beberapa container WordPress.

Langkah 1: Mulai Mesin EC2 Baru

Saya suka menggunakan Amazon Web Services ketika saya membutuhkan server web untuk eksperimen seperti ini: server murah untuk memulai, dan Anda hanya membayar saat Anda menggunakannya (ingatlah untuk menghentikannya ketika Anda selesai!).

Namun, tidak ada yang spesifik tentang Amazon menggunakan Docker dengan New Relic, jadi jika Anda lebih memilih beberapa penyedia server virtual lain atau memiliki server sendiri di mana Anda dapat menginstal Docker dan alat pemantauan New Relic, ini semua adalah opsi yang baik.

Dalam hal ini, Anda dapat melewati langkah ini dan langsung ke menginstal Docker pada mesin server (Langkah 2).

Dalam tutorial saya sebelumnya, Memulai Dengan Mengawasi Aplikasi Web Anda Menggunakan Alert New Relic, saya menyertakan petunjuk langkah demi langkah terperinci untuk memulai mesin di cloud Amazon. Ikuti petunjuk tersebut, di Langkah 1 tutorial, tetapi jangan menginstal PHP atau mulai Apache dulu seperti saat ini, karena Apache dan PHP akan masuk ke dalam wadah Docker.

Jika Anda sudah terbiasa dengan AWS dan hanya ingin pengingat cepat tentang opsi mana yang harus dipilih saat memulai mesin, daftar singkat ini akan memandu Anda melalui proses:

  1. Masuk ke konsol AWS, buat akun jika Anda belum memilikinya.
  2. Di menu utama, pilih EC2. Anda akan melihat bahwa Amazon baru-baru ini meluncurkan layanan baru untuk menjalankan kontainer Docker di cloud (Layanan Container EC2), tetapi kali ini, kami ingin mengelola Docker sendiri.
  3. Pilih Launch Instance untuk meluncurkan mesin baru. Pergi dengan opsi Quick Start dan pilih default, server Amazon Linux 64-bit. Untuk pengujian, ukuran mesin t2.micro baik-baik saja.
  4. Pada halaman grup keamanan, buka port HTTP dan buat SSH hanya tersedia dari IP Anda dengan memilih opsi IP Saya.
  5. Klik Review and Launch untuk memulai server. Ketika Anda diminta untuk membuat sepasang kunci, buat satu (beri nama misalnya docker_test) dan unduh.

Setelah satu menit atau lebih, Anda akan melihat bahwa mesin Anda sudah habis.

Klik kanan pada namanya dan pilih opsi Connect. Salin alamat IP mesin dari popup dan gunakan untuk menyambung ke mesin menggunakan SSH (letakkan alamat IP di mana tertulis INSERT_IP_HERE di perintah di bawah):

Langkah 2: Instal Docker di Server

Sekarang Anda telah memulai server dan Anda terhubung ke SSH, saatnya menginstal mesin Docker.

Instruksi dalam langkah ini adalah untuk server Amazon Linux yang kami buat pada Langkah 1. Jika Anda menggunakan sistem operasi yang berbeda, lihat dokumentasi Docker untuk instruksi instalasi khusus untuk lingkungan Anda.

Mulai dengan menginstal paket buruh pelabuhan:

Opsi -y membuat yum secara otomatis menjawab ya untuk pertanyaan tentang instalasi. Itu membuat segalanya lebih cepat, tetapi jika Anda ingin bermain aman, jangan ragu untuk meninggalkannya.

Setelah paket Docker diinstal, mulailah sebagai layanan:

Sekarang, Anda akan menemukan Docker berjalan untuk sisa runtime server ini (atau sampai Anda menghentikannya sendiri).

Untuk menguji instalasi, Anda dapat menggunakan perintah docker ps yang berisi daftar kontainer Docker yang sedang berjalan:

Saat ini, daftar tersebut masih kosong, karena kami belum memulai penampung apa pun:

The Docker process list shows no running containersThe Docker process list shows no running containersThe Docker process list shows no running containers

Akhirnya, tambahkan pengguna default ke grup docker sehingga Anda dapat mengontrol Docker tanpa harus mengawali semua perintah Docker Anda dengan sudo. Itu hanya empat huruf tambahan, tetapi membuat perbedaan besar ketika Anda harus sering menulisnya!

Untuk menerapkan perubahan ke koneksi Anda, tutup koneksi ssh dan hubungkan lagi.

Sekarang, Anda siap untuk memulai beberapa kontainer Docker.

Langkah 3: Mulai Container Docker

Jika Anda mencari untuk WordPress dan Docker (atau MySQL dan Docker), Anda akan melihat bahwa ada banyak gambar Docker yang berbeda untuk memilih dari. Dalam aplikasi Anda sendiri, itu adalah ide yang baik untuk pergi melalui paling terkenal dan melihat yang terbaik untuk Anda—atau jika Anda benar-benar harus menulis satu dari awal.

Dalam tutorial ini, saya memutuskan untuk menggunakan gambar resmi: gambar MySQL yang disediakan oleh MySQL, dan gambar WordPress resmi Docker.

Pertama, mulai kontainer menggunakan gambar MySQL, mysql/mysql-server:5.5.

Perintah mengunduh paket dan dependensinya dan kemudian memulai wadah MySQL Anda, menamakannya db. Nama ini penting karena kami akan menggunakannya untuk menautkan kontainer WordPress kami ke database.

Jika Anda suka, gunakan docker ps untuk memeriksa apakah penampung baru sedang berjalan. Untuk beberapa informasi lebih lanjut tentang startup, Anda dapat memeriksa file log kontainer dengan docker log db. Anda seharusnya melihat sesuatu seperti ini sebagai beberapa baris terakhir dari output:

Selanjutnya, mulailah sebuah container WordPress menggunakan gambar WordPress Docker, wordpress:latest (menggunakan tag latest, Anda akan selalu mendapatkan versi berbasis-Apache yang paling mutakhir).

Dalam perintah di atas, Anda akan melihat bahwa kami menautkan penampung ke gambar MySQL di atas (--link db:mysql) dan meneruskan nama database untuk digunakan sebagai variabel lingkungan (-e WORDPRESS_DB_NAME="wordpress_1"). Penampung ini mendengarkan port HTTP standar 80.

Kata sandi basis data pengguna root dibagikan secara otomatis saat kami menautkan container db.

Setelah gambar dimuat dan penampung sedang berjalan, kunjungi URL mesin untuk memeriksa apakah penampung berfungsi sebagaimana mestinya. Saat bekerja di AWS, gunakan IP Publik dari Langkah 1.

Visiting the site youll find WordPress runningVisiting the site youll find WordPress runningVisiting the site youll find WordPress running

Selesaikan instalasi WordPress jika Anda suka—hanya perlu satu atau dua menit.

Anda sekarang telah memulai yang pertama dari tiga kontainer WordPress. Sebelum menambahkan sisanya, mari kita siapkan pemantauan New Relic untuk pengaturan saat ini.

Menginstal Server peninggalan baru pemantauan dengan dukungan Docker

Dukungan Docker Relic baru dibagi menjadi dua bagian:

  • Di bagian Servers, Anda akan menemukan informasi keseluruhan tentang Docker: hal-hal seperti berapa banyak kontainer dari berbagai jenis berjalan, atau berapa banyak sumber daya yang mereka gunakan pada masing-masing server Anda.
  • Di bagian APM, Anda dapat mengakses wadah Docker sebagai bagian dari aplikasi web Anda, memonitornya bersama-sama dan secara individu pada tingkat aplikasi.

Mari kita mulai dengan bagian Servers.

Langkah 1: Pasang Monitor Server New Relic

Saat New Relic berjalan sebagai layanan online, untuk menggunakan alat pemantau New Relic, Anda harus terlebih dahulu memerlukan akun New Relic yang aktif. Anda dapat memulai dengan uji coba gratis 14 hari atau menggunakan versi gratis—semua fungsi yang disajikan dalam tutorial ini tersedia dalam versi gratis.

Jika Anda belum memiliki akun New Relic, mulailah dengan mendaftar.

Setelah mendaftar, pilih Servers dari menu teratas untuk mengakses alat pemantauan server.

The New Relic menu barThe New Relic menu barThe New Relic menu bar

Jika Anda sudah menggunakan Server New Relic, Anda akan melihat daftar server Anda yang dimonitor dengan New Relic. Klik tombol Add more untuk instruksi pengaturan.

Jika Anda baru saja mendaftar, Anda akan langsung dikirim ke halaman Memulai dengan Halaman Server New Relic.

Di halaman ini, Anda akan menemukan instruksi khusus untuk lingkungan yang berbeda. Pilih yang cocok dengan server Anda. Untuk pengaturan Linux Amazon yang digunakan dalam tutorial ini, kita akan menggunakan opsi Red Hat atau CentOS.

Get started with New Relic ServersGet started with New Relic ServersGet started with New Relic Servers

Gulir ke bawah, dan selesaikan penginstalan sesuai dengan petunjuk yang sesuai dengan lingkungan server Anda.

Dalam kasus Amazon Linux, mulailah dengan menambahkan New Relic yum repository. Perhatikan bahwa ini perlu dilakukan sebagai root, jadi kita akan menggunakan sudo.

Selanjutnya, dengan menambahkan repositori yum, gunakan untuk menginstal paket Server Monitor:

Sekali lagi, parameter -y membuat yum menjawab ya untuk setiap prompt. Jika Anda ingin lebih berhati-hati, jangan ragu untuk pergi tanpa itu dan menerima petunjuk secara manual.

Untuk menyelesaikan instalasi, konfigurasikan agen pemantauan dan atur kunci lisensi Anda. Anda akan menemukan versi perintah dengan kunci lisensi Anda di tempat pada Memulai dengan halaman Server New Relic. Ingat awali perintah dengan sudo.

Sebelum memulai daemon pemantauan, kami akan mengalihkan sedikit dari instruksi pengaturan pada halaman Server Relik Baru dan membuat beberapa konfigurasi tambahan untuk pemantauan Docker.

Langkah 2: Terapkan Konfigurasi Khusus Docker

Pertama, untuk memungkinkan New Relic mengumpulkan data tentang pengaturan Docker Anda, tambahkan pengguna newrelic ke grup Docker di server Anda:

Kemudian, restart Docker.

Perhatikan bahwa untuk memulai ulang dengan anggun dan memastikan tidak ada yang rusak di penampung Anda, ada baiknya untuk menghentikan semua menjalankan kontainer terlebih dahulu.

Setelah restart selesai, kita sudah siap dan Anda dapat memulai daemon monitoring server.

Pengaturan untuk daemon server New Relic sekarang selesai. Mulai lagi wadah Docker, dan Anda akan segera melihat informasi tentang server Anda di tool dashboard.

Mari kita lihat apa yang dapat Anda temukan di sana.

Apa yang Akan Anda Temukan Di Dalam Server New Relic

Di dalam Relik Baru, klik pada item menu Servers untuk memuat kembali daftar server. Jika semuanya berjalan lancar, Anda seharusnya melihat server Anda terdaftar:

The server listing now shows our new serverThe server listing now shows our new serverThe server listing now shows our new server

Klik pada nama mesin untuk melihat informasi lebih lanjut tentang itu. Jika belum ada data yang ditampilkan, berikan alat beberapa kali dan coba lagi.

Hal pertama yang akan Anda lihat adalah halaman ikhtisar.

Ikhtisar

Pada halaman ikhtisar, semuanya terlihat hampir sama seperti pada halaman ikhtisar Server New Relic ketika memonitor server reguler tanpa Docker.

The New Relic Servers overview pageThe New Relic Servers overview pageThe New Relic Servers overview page

Ada penggunaan CPU, rata-rata beban server, jumlah memori fisik yang digunakan, beberapa informasi tentang Disk I/O dan penggunaan jaringan. Saat kami baru memulai server dan tidak ada pengguna yang mengunjungi situs ini, sebagian besar angka ini masih rendah.

Jika Anda melihat daftar proses di kanan bawah, Anda akan melihat bahwa Docker memang berjalan di server ini:

The list of processes show Docker running on the serverThe list of processes show Docker running on the serverThe list of processes show Docker running on the server

Tampilan Gambar Docker

Tampilan keseluruhan penting ketika memikirkan tentang kesehatan server secara keseluruhan, tetapi sekarang, apa yang benar-benar kita minati adalah apa yang dapat kita pelajari tentang pengaturan Docker. Untuk ini, bagian yang lebih menarik dari Server adalah menu Docker.

Klik pada item menu Docker di sebelah kiri.

The Docker Images view on New Relic ServersThe Docker Images view on New Relic ServersThe Docker Images view on New Relic Servers

Layar Docker menunjukkan persentase sumber daya server yang digunakan oleh penampung Docker Anda, dikelompokkan berdasarkan gambarnya.

Dalam hal ini, misalnya, Anda akan melihat dua gambar, wordpress:latest dan mysql/mysql-server:5.5, yang kami gunakan untuk memulai dua kontainer kami di langkah sebelumnya. Tidak banyak aktivitas di server, tetapi kita dapat melihat bahwa WordPress menggunakan lebih banyak CPU, dan keduanya menggunakan jumlah memori yang sama.

Anda dapat menggunakan drop-down di sudut kiri atas untuk mengurutkan daftar dengan CPU atau Memory.

Kemudian, seiring aplikasi Anda matang, temuan dari halaman ini akan memberi tahu Anda lebih banyak tentang pengaturan Anda dan apa yang harus Anda lakukan dengannya.

Sebagai contoh, jika Anda memperhatikan bahwa MySQL menggunakan banyak memori sistem dan kekuatan pemrosesan, mungkin ini saat yang tepat untuk mempertimbangkan untuk memindahkannya ke server sendiri. Atau mungkin Anda akan melihat bahwa ada lebih banyak kontainer WordPress yang berjalan di server daripada apa yang benar-benar cocok dan memutuskan untuk membaginya menjadi dua ...

Pandangan Lebih Dekat pada Satu Gambar Docker

Jika Anda ingin mempelajari lebih lanjut tentang gambar tertentu, klik namanya pada daftar di sebelah kiri. Ini akan membuka tampilan yang menunjukkan informasi tentang hanya kontainer yang menggunakan gambar ini.

A closer look at the WordPress imageA closer look at the WordPress imageA closer look at the WordPress image

Layar menunjukkan Anda CPU dan penggunaan memori dari kontainer menggunakan gambar ini dan jumlah wadah dari waktu ke waktu.

Untuk melihat bagaimana menambahkan lebih banyak penampung memengaruhi tampilan, tambahkan beberapa wadah WordPress lainnya. Kami akan menggunakan perintah yang sama docker run dari sebelumnya, dengan beberapa perubahan kecil:

  • Kontainer baru akan diberi nama wordpress-2 dan wordpress-3 masing-masing.
  • Wadah baru akan menggunakan database wordpress_2 dan wordpress_3.
  • Wadah baru akan mendengarkan port yang berbeda, 8000 dan 8001 bukan 80.

Berikut adalah dua perintah run dengan perubahan dari daftar di atas di tempat:

Di Amazon, untuk membuat situs WordPress baru dapat diakses, Anda masih perlu mengedit pengaturan Security Grup EC2 Anda untuk memungkinkan lalu lintas masuk dari port 8000 dan 8001. Gunakan opsi Custom TCP Rule dan pilih Anywhere sebagai sumber lalu lintas.

Sekarang, kunjungi dua situs WordPress baru, klik pada beberapa item menu mereka.

Kemudian kembali ke Servers New Relic untuk melihat bagaimana data pada halaman Docker berubah.

Perubahan pertama, dan yang paling terlihat adalah jumlah kontainer yang berjalan. Alih-alih satu, sekarang ada tiga:

The Containers graph show the change in the number of running containersThe Containers graph show the change in the number of running containersThe Containers graph show the change in the number of running containers

Penggunaan CPU dan memori masih rendah—meskipun penggunaan memori menunjukkan pertumbuhan:

CPU and memoery usage after adding two more WordPress containersCPU and memoery usage after adding two more WordPress containersCPU and memoery usage after adding two more WordPress containers

Menambahkan Dukungan untuk APM New Relic di Container Docker Anda

Sejauh ini, kami telah melihat wadah Docker dari luar, melalui penggunaan sumber daya mereka, dan bagaimana mereka terlihat ketika dieksplorasi dari server yang menjalankannya.

Tetapi meskipun tampilan Servers ini ke Docker memberikan informasi keseluruhan yang berguna tentang server Anda dan apa yang berjalan di dalamnya, kekuatan sesungguhnya dari New Relic terletak pada pendekatan aplikasinya yang pertama: dengan memantau tingkat aplikasi, Anda dapat memperoleh informasi yang lebih detail tentang apa terjadi di server Anda dan apa yang harus dilakukan.

Biasanya, ketika menjalankan kode PHP langsung di server web Anda, Anda cukup menginstal agen pemantauan APM. Untuk contoh ini, Anda dapat melihat di sana di server di mana Anda menjalankan aplikasi (seperti yang kita lakukan di tutorial New Relic Alerts yang saya sebutkan sebelumnya).

Sekarang, hal-hal sedikit berbeda: Kami telah membagi arsitektur menjadi bagian-bagian terpisah—"micro services"—masing-masing berjalan di kontainer mereka sendiri, sehingga server host itu sendiri tidak menjalankan Apache atau PHP. Itu sebabnya, jika Anda menginstal agen APM langsung di server host, Anda tidak akan melihat aktivitas apa pun.

Pemantauan perlu masuk ke dalam container.

Langkah 1: Buat Versi Anda Sendiri dari Gambar WordPress

Salah satu hal hebat tentang Docker adalah cara yang memungkinkan Anda membangun pada gambar yang ada, menggunakan mereka sebagai basis dan menjadikannya milik Anda sendiri tanpa harus mengubah gambar asli atau menulis yang baru dari awal.

Kami akan memodifikasi gambar WordPress yang kami gunakan sebelumnya di tutorial dengan mengaktifkan pemantau New Relic di dalamnya.

Anda dapat mengunduh file sumber untuk gambar Docker dari repositori GitHub yang terhubung, atau Anda dapat membuatnya sendiri dengan mengikuti petunjuk dalam tutorial ini. Ketika bekerja dengan contoh ini, mungkin paling mudah melakukannya di server Anda.

Mulai dengan membuat direktori untuk definisi gambar baru, misalnya di direktori home ec2-user.

Kemudian, di direktori itu, tambahkan file teks baru, beri nama Dockerfile. Ini adalah file yang akan berisi definisi apa yang masuk ke gambar Docker Anda.

Di dalam file, tambahkan kode berikut. Kami akan memeriksa isi baris demi baris tepat setelah cuplikan.

Sekarang, mari kita lihat file dan lihat apa yang dilakukannya.

Baris 1: File dimulai dengan menentukan gambar Docker yang harus dibangun oleh gambar kita. Saya memilih versi tertentu dari gambar wordpress sehingga jika kita membangun gambar ini lagi setelah beberapa saat, itu tidak akan berubah di antaranya. 4.3.1-apache adalah versi terbaru pada saat penulisan.

Baris 3–5: Sertakan skrip untuk menginisialisasi monitor New Relic. Skrip akan dijalankan di startup wadah sehingga kami dapat menggunakannya untuk menentukan nama aplikasi dan kunci lisensi secara terpisah untuk setiap penampung.

Kita akan melihat isi file ini di langkah berikutnya.

Baris 7–8: Jika Anda melihat lebih dekat pada kode yang mendefinisikan gambar WordPress dasar, Anda akan melihat bahwa skrip, apache-entrypoint.sh, didefinisikan untuk dijalankan saat ENTRYPOINT nya berakhir dengan garis yang mengeksekusi perintah yang diteruskan dalam CMD option (secara default, ini adalah apache2-foreground).

Barisnya terlihat seperti ini:

Karena saya tidak ingin mengganti skrip "entrypoint" asli tetapi harus menyelesaikannya dengan memanggil skrip run.sh baru yang baru saja disebutkan di atas, saya memutuskan untuk mengedit file ENTRYPOINT pada waktu kompilasi: perintah sed (pada baris 8) menggantikan garis exec dari atas dengan perintah exec yang mengeksekusi run.sh sebagai gantinya.

Baris 10–11: Ini mungkin bukan sesuatu yang Anda inginkan dalam pengaturan produksi. Namun, untuk menguji itu sangat berguna untuk memasukkan file PHP sederhana yang dapat kita gunakan untuk memeriksa apakah New Relic sudah diatur dengan benar.

Pastikan untuk juga membuat file bernama test.php dengan konten berikut:

Baris 13–20: Ini adalah bagian di mana kami menginstal paket pemantauan Relik Baru ke dalam gambar.

Jika Anda melihat petunjuk pemasangan di New Relic Memulai dengan halaman New Relic (halaman pertama yang akan Anda lihat ketika Anda memilih opsi APM setelah masuk), Anda akan melihat bahwa perintah pada jalur ini mengikuti instalasi instruksi untuk lingkungan Debian. Ini karena gambar WordPress default didasarkan pada gambar yang menggunakan Debian.

Pertama, skrip menginstal wget dan menggunakannya untuk men-download tombol peninggalan baru dan menambahkannya ke APT.

Selanjutnya, skrip menambahkan repositori New Relic ke APT.

Dan kemudian, akhirnya, pada baris 19 dan 20, menginstal paket newrelic-php5 dari repositori itu.

Baris 22-25: Petunjuk pemasangan Relik Baru pada Memulai dengan halaman New Relic berlanjut dengan menyelesaikan instalasi dan meletakkan kunci lisensi pada tempatnya.

Karena kunci lisensi dan nama aplikasi adalah informasi yang cukup spesifik untuk wadah, kami tidak dapat menyertakan langkah terakhir ini dalam gambar. Tempatnya hanya di startup, di skrip run.sh kami.

Untuk mempersiapkan ini, skrip mendefinisikan tiga variabel lingkungan:

  • NR_INSTALL_SILENT: Variabel ini, jika ada (dan disetel ke nilai apa pun) akan menyebabkan skrip pemasangan Relik Baru mengabaikan semua permintaan pengguna dan menggunakan default.
  • NR_INSTALL_KEY: Yang ini menentukan kunci lisensi. Karena kami tidak ingin mem-hard kode kunci lisensi dalam definisi gambar, itu diatur ke **ChangeMe** untuk saat ini. Variabel ini juga dibaca secara otomatis oleh skrip pemasangan.
  • NR_APP_NAME: Ini adalah variabel yang saya tambahkan sendiri, yang akan digunakan dalam skrip run.sh untuk mengedit konfigurasi daemon New Relic untuk menggunakan nama aplikasi sebenarnya dari kontainer, bukan default ("PHP Application").

Langkah 2: Buat Custom Startup Script

Dengan Dockerfile siap, kita masih perlu mengimplementasikan skrip startup, run.sh, yang disebutkan di atas. Skrip akan menyelesaikan pengaturan New Relic dan baru kemudian memulai server, sekarang dengan pemantauan New Relic di tempat.

Buat file dan tambahkan kode berikut ke dalamnya:

Sekarang, mari kita lihat kode baris per baris.

Baris 1: Tentukan bahwa skrip harus dijalankan dengan interpreter bash.

Baris 2: Tentukan bahwa skrip harus keluar jika terjadi kesalahan.

Baris 4–5: Jalankan skrip instalasi Relik Baru. Perhatikan bahwa kita tidak perlu melewatkan parameter apa pun karena konfigurasi dilakukan menggunakan variabel lingkungan. NR_INSTALL_SILENT sudah ditentukan dalam Dockerfile dan NR_INSTALL_KEY harus diteruskan dengan perintah run docker.

Baris 7–8: Karena skrip instalasi tidak memiliki variabel lingkungan untuk menentukan nama aplikasi, kita harus mengedit konfigurasi secara manual—atau sebenarnya, secara terprogram—dalam skrip ini.

Di file konfigurasi, nama aplikasi ditetapkan sebagai:

Perintah sed pada baris 8 mencari string ini dan menggantinya dengan versi yang menyertakan nama yang ditentukan dalam NR_APP_NAME.

Baris 10: Akhirnya, untuk menyelesaikan startup, panggil apache2-foreground untuk menjalankan Apache di latar depan dan menjaga wadah tetap berjalan. Seperti yang Anda ingat dari sebelumnya, ini awalnya dilakukan pada akhir skrip entrypoint.

Sekarang, semua bagian untuk menambah gambar WordPress dengan pemantauan New Relic sudah tersedia. Kami sekarang dapat membangun citra dan mencobanya.

Langkah 3: Kompilasi dan Jalankan Gambar Baru

Di direktori tempat Anda meletakkan file yang dibuat selama dua langkah terakhir, masukkan perintah:

Ini menciptakan gambar baru, bernama tutsplus/wordpress-newrelic dengan tag 4.3.1-apache, dan menambahkannya ke repositori gambar Docker lokal Anda.

Setelah build selesai, saatnya untuk melihat apakah semuanya berfungsi dengan benar.

Pertama, hentikan dan hapus wadah WordPress Anda yang ada:

Kemudian, jalankan yang baru, dimulai dengan hanya satu dan tambahkan lagi setelah Anda memeriksa bahwa semuanya berjalan lancar.

Perintahnya hampir sama dengan yang kita lihat sebelumnya ketika memulai gambar WordPress default, dengan perubahan berikut:

-e NR_INSTALL_KEY="YOUR KEY HERE": Ini adalah tempat Anda menetapkan kunci lisensi Relik Baru yang harus digunakan dalam skrip instalasi. Anda dapat menemukan milik Anda dengan masuk ke APM. Mulailah dengan halaman New Relic dan pilih opsi PHP.

Pada halaman ini, tepat sebelum petunjuk instalasi, ada tombol merah yang mengatakan, Reveal License Key. Klik dan kemudian ganti YOUR KEY HERE dengan kunci yang ditunjukkan.

Get your license keyGet your license keyGet your license key

-e NR_APP_NAME=wordpress-cloud": Bagian dari perintah ini mengatur variabel lingkungan yang digunakan untuk menentukan nama aplikasi. Nama ini digunakan untuk mengelompokkan data di dalam APM.

Nilai "benar" untuk nama kontainer tergantung pada pengaturan Anda dan bagaimana Anda ingin memonitornya. Jika semua container Anda menjalankan aplikasi yang sama, akan masuk akal untuk menggunakan nama yang sama untuk mereka dan mengumpulkan semuanya dalam tampilan yang sama di alat pemantauan. Di sisi lain, jika wadahnya jelas terpisah, nama yang berbeda adalah cara untuk pergi. Dalam contoh ini, saya memutuskan untuk menggunakan nama yang sama, wordpress-cloud, untuk semua tiga container.

Periksa dokumentasi New Relic untuk diskusi yang lebih detail tentang penamaan aplikasi Anda.

tutsplus/wordpress-newrelic:4.3.1-apache: Di akhir perintah, Anda akan melihat bahwa sekarang kita menggunakan gambar yang baru dibuat, bukan wordpress:latest.

Setelah Anda menjalankan perintah dan server Anda telah dimulai, kunjungi halaman pengujian WordPress untuk memverifikasi bahwa server sedang berjalan dan New Relic disertakan. Anda mungkin juga ingin memeriksa nilai newrelic.appname.

The PHP test page showing New Relic configurationThe PHP test page showing New Relic configurationThe PHP test page showing New Relic configuration

Kemudian, Anda dapat kembali ke halaman utama untuk menemukan WordPress berjalan OK. Anda sekarang memiliki wadah Docker yang menjalankan WordPress dan melaporkan statusnya ke New Relic APM.

Tambahkan dua wadah yang tersisa, wordpress-2 dan wordpress-3, dan kemudian mari kita lihat data yang akan kita temukan di APM.

Apa yang Akan Anda Temukan di Dalam New Relic APM

Sekarang setelah Anda mengatur pemantauan untuk setiap kontainer Docker Anda, mari kita lihat informasi yang dapat kita temukan tentang mereka dalam APM.

Saat kami menambahkan ketiga container WordPress dengan nama yang sama, ketika Anda sekarang membuka halaman APM, Anda akan menemukan hanya satu aplikasi, wordpress-cloud. Saat Anda menempatkan penunjuk tetikus di bagian atas nama aplikasi, Anda akan melihat munculan bertuliskan "Aplikasi php berjalan di 3 host (3 instance)."

APM showing our Docker based applicationAPM showing our Docker based applicationAPM showing our Docker based application

Klik pada nama untuk mengakses data analitik untuk aplikasi ini dan wadahnya.

Ikhtisar

Tampilan pertama yang akan Anda lihat dalam APM adalah Ikhtisar. Halaman ini menunjukkan ringkasan kinerja dari semua kontainer dalam aplikasi ini: berapa lama permintaan yang dibuat untuk aplikasi rata-rata, skor Apdex aplikasi, throughputnya, dan daftar transaksi paling lambat aplikasi.

Overview of the wordpress-cloud applicationOverview of the wordpress-cloud applicationOverview of the wordpress-cloud application

Di bagian bawah layar, Anda akan menemukan ringkasan struktur aplikasi: server apa yang sedang berjalan, dan kontainer yang digunakan di dalamnya.

Dalam aplikasi kehidupan nyata yang lebih kompleks, Anda mungkin melihat beberapa server serta beberapa container. Sekarang, Anda akan menemukan tiga container WordPress kami. Karena kami tidak menginstal New Relic ke gambar basis data, kami tidak dapat melihatnya di daftar ini.

Memfilter Data berdasarkan Container

Mirip dengan halaman ringkasan, secara default, sisa layar di APM akan menunjukkan ringkasan kinerja keseluruhan aplikasi dalam berbagai metrik yang disajikan di dalamnya.

Namun, jika Anda ingin menelusuri ke penampung tertentu, Anda dapat kapan saja menggunakan menu drop-down di bagian atas layar untuk memilih salah satu yang Anda minati:

Dropdown menu to choose a specific containerDropdown menu to choose a specific containerDropdown menu to choose a specific container

Jika Anda tidak yakin apa arti kode server yang berbeda pada daftar ini, Anda dapat menggunakan perintah docker ps untuk menemukan pemetaan antara ID Docker ini dan penampung Anda.

Menemukan dan Memperbaiki Kesalahan PHP di Container Docker

APM tidak hanya berguna untuk melacak kinerja aplikasi berbasis web Anda. Ini juga sangat membantu dalam memperhatikan ketika ada yang salah dalam aplikasi Anda dan menemukan masalah.

Untuk menguji ini dalam lingkungan berbasis Docker, saya membuat sebuah plugin WordPress sederhana, sengaja menempatkan beberapa kesalahan dalam kode, dan menginstalnya di salah satu kontainer. Kemudian, setelah menjelajahi situs untuk sementara waktu, ini adalah apa yang saya lihat pada halaman Errors di APM:

The Errors page shows the applications errorsThe Errors page shows the applications errorsThe Errors page shows the applications errors

Melihat gambar, Anda akan segera melihat bahwa tingkat kesalahan dalam aplikasi Anda sedang meningkat.

Di bawah grafik, Anda akan menemukan daftar yang menunjukkan kesalahan terbaru: kesalahan sintaks yang telah terjadi tiga kali dan pembagian dengan nol, terjadi di berbagai tempat dalam kode. Keduanya perlu ditangani, tetapi untuk sekarang, mari kita lihat yang pertama.

Mengeklik pesan kesalahan akan membawa Anda ke halaman yang menampilkan lebih banyak informasi tentang kesalahan:

More information about the errorMore information about the errorMore information about the error

Melihat layar ini, Anda akan melihat bahwa kesalahan terjadi pada salah satu kontainer Docker, 402c389c0661, yang kebetulan menjadi ID dari wordpress-3, wadah tempat saya menginstal plugin yang rusak.

Sekarang setelah kami menemukan wadah tempat kesalahan terjadi, kami dapat menggunakan pelacakan tumpukan untuk memperbaiki masalah dan memperbarui versi kerja plugin ke penampung yang terpengaruh. Masalah dipecahkan.

Kesimpulan

Anda sekarang telah menerapkan setup server web berbasis Docker sederhana dan mengaktifkan pemantauan New Relic di atasnya. Anda juga telah melihat bagaimana Anda dapat menggunakan alat pemantauan untuk mendapatkan visibilitas yang lebih baik ke dalam aplikasi berbasis Docker.

Namun, kami hanya menggaruk permukaan apa yang dapat Anda lakukan dengan alat pemantau New Relic, jadi jika Anda belum menjadi pengguna New Relic, lihat halaman Pemantauan Docker di New Relic, dan mulailah.

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.