Memasang Nginx Amplify

Artikel ini ditayangkan pada 24 Juni 2017, sekitar 5 bulan yang lalu. Informasi pada tulisan ini mungkin sudah tidak sesuai.

Pada 22 Juni 2017, Nginx merilis aplikasi pemantau performa (application performance monitoring) Nginx Amplify dari private beta menjadi public beta.

Sebagai pengguna Nginx, saya pun tertarik dan segera mencoba aplikasi Nginx Amplify untuk mengetahui performa Nginx secara real time, memudahkan troubleshooting jika terjadi error, memberikan rekomendasi performa dan keamanan, dan mengeset pemberitahuan jika terjadi sesuatu.

Walau saya sudah melakukan optimalisasi konfigurasi Nginx saya, namun saya tidak bisa melakukan benchmark dan memantau kinerja Nginx saya dengan lebih detail.

Nginx Amplify sangat mudah digunakan dan dipasang. Hanya meluangkan waktu sekitar 5 menit untuk memasangnya.

Nginx Amplify bisa digunakan pada Nginx dan Nginx Plus (berbayar). Saya menggunakan Nginx versi open source, sehingga langkah-langkah pemasangan yang saya lakukan ini tidak berlaku untuk Nginx Plus.

Untuk memasang Nginx Amplify, dibutuhkan Python 2.6 atau 2.7. Saat tulisan ini dibuat, Python 3 belum didukung.

Sebelum memasang, saya membuat akun Nginx Amplify untuk mendapatkan kunci API (API key) yang nanti digunakan saat melakukan instalasi. Akun Nginx Amplify bisa didapatkan dengan gratis.

tampilan ringkas Nginx Amplify tampilan ringkas Nginx Amplify

Cara Kerja Nginx Amplify

Nginx Amplify merupakan layanan SaaS (Software as a Service) yang di-hosting di AWS public cloud. Nginx Amplify terdiri dari 3 komponen, yaitu agent, web UI, dan backend.

Agent Nginx Amplify merupakan aplikasi Python yang berfungsi mengumpulkan informasi dan memantau kinerja sistem. Data-data ini kemudian dikirim ke backend melalui SSL/TLS.

Web UI merupakan antarmuka berbasis web yang diakses melalui URL https://amplify.nginx.com berprotokol SSL/TLS (HTTPS).

Backend merupakan aplikasi yang melakukan pengolahan data, yang kemudian ditampilkan ke pengguna melalui antarmuka web atau mengirim pemberitahuan kepada pengguna bila terjadi sesuatu. Backend ini lah yang merupakan layanan SaaS yang ditawarkan oleh Nginx.

Nginx Amplify melakukan pemantauan pada sistem operasi, Nginx dan Nginx Plus, serta PHP-FPM.

Memasang Modul stub_status

Agar berfungsi maksimal, Nginx Amplify membutuhkan modul stub_status. Untuk menambahkan, saya membuat satu berkas konfigurasi /etc/nginx/conf.d/stub_status.conf yang kemudian berkas ini dimuat oleh berkas konfigurasi utama.

Pastikan pada berkas konfigurasi utama /etc/nginx/nginx.conf terdapat perintah untuk memuat seluruh berkas konfigurasi di direktori /etc/nginx/conf.d/.

include /etc/nginx/conf.d/*.conf;

Saya menyimpan berkas konfigurasi stub_status dengan nama sub_status.conf yang isinya sebagai berikut.

server {
    listen 80;
    server_name 127.0.0.1;
    location /nginx_status {
        stub_status;
        allow 127.0.0.1;
        deny all;
    }
}

Setelah disimpan, lakukan pengetesan konfigurasi dengan perintah nginx -t lalu muat ulang Nginx dengan perintah sudo service nginx reload.

Jika tidak ada masalah, periksa apakah modul stub_status telah terpasang dengan melakukan curl http://localhost/nginx_status. Jika berhasil, tampilannya akan terlihat seperti berikut.

$ curl http://localhost/nginx_status
Active connections: 6
server accepts handled requests
 3007030 3007030 4355501
Reading: 0 Writing: 2 Waiting: 4

Memasang Agen Nginx Amplify

Memasang agent Nginx Amplify sangat mudah. Pertama, unduh berkas instalasi dengan menggunakan perintah berikut.

$ curl -L -O https://raw.githubusercontent.com/nginxinc/nginx‑amplify‑agent/master/packages/install.sh

Kemudian, jalankan perintah instalasi dengan menyertakan kunci API yang didapat dari akun Nginx Amplify sebagai berikut.

$ sudo API_KEY='kunci_api_nginx_amplify' sh ./install.sh

Perintah ini akan menjalankan kurang lebih 15 langkah instalasi, di mana saat instalasi selesai, agen Nginx Amplify akan secara otomatis dieksekusi.

Setelah menunggu kurang lebih satu menit, hasil pemantaian agen Nginx Amplify bisa dilihat di antarmuka web dengan masuk menggunakan akun yang telah didaftarkan.

Menambahkan Informasi Detail

Untuk mendapatkan laporan detail, saya menambahkan beberapa baris konfigurasi dengan menambahkan beberapa informasi pada bagian format penulisan access.log.

Selain itu, pencatatan kesalahan pada error log juga harus diset ke warn.

Berikut ini bagian dari /etc/nginx/nginx.conf yang telah saya sesuaikan.

http {
    ...
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" '
                      '"$host" sn="$server_name" '
                      'rt=$request_time '
                      'ua="$upstream_addr" us="$upstream_status" '
                      'ut="$upstream_response_time" ul="$upstream_response_length" '
                      'cs=$upstream_cache_status';

    access_log  /var/log/nginx/access.log  main;
    error_log /var/log/nginx/error.log warn;
    ...
}

Memantau PHP-FPM

Agar PHP-FPM bisa dipantau oleh Nginx Amplify, pada berkas konfigurasi www.conf (pada sistem yang saya gunakan berada di /etc/php/fpm/pool.d/www.conf) dan mengaktifkan pm.status_path.

...
pm.status_path = /status
...
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
..

Pastikan bahwa PHP-FPM dan Nginx menggunakan pengguna yang sama (saya menggunakan pengguna nginx) sehingga agen Nginx Amplify bisa mengakses informasi PHP-FPM.

Setelah melakukan pengesetan, muat ulang PHP-FPM dengan perintah sudo service php-fpm restart (perintah php-fpm bisa sedikit berbeda, misal php7.1-fpm).

Periksa apakah status PHP-FPM bisa terbaca dengan menggunakan perintah berikut cg-fcgi. Jika perintah cg-fcgi tidak ditemukan, pasang aplikasi tersebut dengan memasang paket libcgi-dev.

$ sudo SCRIPT_NAME=/status SCRIPT_FILENAME=/status QUERY_STRING= REQUEST_METHOD=GET cgi-fcgi -bind -connect /run/php/php7.1-fpm.sock
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Cache-Control: no-cache, no-store, must-revalidate, max-age=0
Content-type: text/plain;charset=UTF-8

pool:                 www
process manager:      dynamic
start time:           24/Jun/2017:04:27:19 +0700
start since:          3
accepted conn:        2
listen queue:         0
max listen queue:     0
listen queue len:     0
idle processes:       0
active processes:     2
total processes:      2
max active processes: 2
max children reached: 0
slow requests:        0

Pastikan agen Nginx Amplify bisa membaca konfigurasi PHP-FPM, dengan mengeset pada berkas konfigurasi /etc/amplify-agent/agent.conf berikut.

[extensions]
phpfpm = True

Untuk memastikan agen Nginx Amplify membaca konfigurasi yang baru, lakukan perintah untuk memuat ulang sudo service amplify-agent restart.

Muhammad Zamroni

pengembang web • penyelam scuba • pejalan pemula • peminat perangkat

Jakarta, Indonesia

4 komentar

Artikel ini ditayangkan pada 24 Juni 2017, sekitar 5 bulan yang lalu. Informasi pada tulisan ini mungkin sudah tidak sesuai.

Jauhari

2 Juli 2017 13:37

Duh kok malah mumet aku :)))

Yeni Setiawan

19 Agustus 2017 10:22

Wih #heker!

Adjie Purbojati

22 Agustus 2017 13:56

'"$host" sn="$server_name" '

apakah server_name diganti dengan server name kita? soalnya error terus nih mas

ridha

20 Oktober 2017 10:01

mantab sekali tutorialnya,

Statistik

Telah dibaca 108 kali. Waktu baca rata-rata 7 menit. Ada 4 komentar.