Cara melakukan cek script atau program yang sedang berjalan di server untuk keperluan monitoring

Mendapatkan data mengenai konsumsi memori (RAM) dan CPU dari sistem operasi merupakan hal yang sangat penting agar kita dapat mengelola server dengan baik terlebih saat menentukan kapan harus melakukan upgrade spek server.

Saat melakukan investasi atau hanya sekedar ingin mengetahui script mana yang paling mengkonsumsi memory dan CPU paling tinggi di sistem operasi windows biasannya kita akan langsung menekan ctrl+alt+del untuk memunculkan task manager.

Pada linux server atau di ulasan ini kita spesifik membahas mengenai ubuntu server maka kita tidak memiliki program GUI layaknya seperti task manager pada windows ataupun System Monitor pada OSX. Ubuntu server yang notabenenya hanya berupa CLI(Command line intepreter) tidak support aplikasi dengna model GUI.

Namun jangan khawatir ubuntu server tetap menyediakan fitur untuk mendapatkan kondisi terkini terkait script atau job yang sedang berjalan pada sistem operasi disertai dengan berapa memory (RAM) dan CPU yang dikonsumsinnya.

Cara cek konsumsi RAM dan CPU script atau job pada server

HTOP

Secara bawaan ubuntuk telah memiliki fitur yang dapat kita gunakan untuk mengetahui konsumsi memori(RAM) dan CPU pada server. Script ini memiliki nama HTOP yang memiliki fungsi sebagai program untuk menvisualisasikan process yang sedang berjalan di OS (Sistem operasi).

Untuk mengakses HTOP anda cukup login ke shell melalui terminal/putty/ssh/etc (sesuai dengan konfugurasi akses yang anda berikan di server) lalu tuliskan perintah dibawah ini

htop

setelah perintah diatas dituliskan dan dieksekusi akan muncul process viewer untuk memantau kondisi RAM dan CPU di Server. Perhatikan gambar dibawah ini

Header

pada bagian header kita dapat melihat terdaat tiga informasi penting yakni :

  1. jumlah CPU yang tersedia dibandingkan dengan total CPU yang kita miliki(100% makasimal)
  2. jumlah ram yang tersedia dibandingkan dengan total RAM yang terinstall pada VPS/Server kita
  3. SWP atau SWAP memory yang tersedia diserver. Swap akan berfungsi sebagai RAM candangan ketika memory (RAM) utama pada server penuh. Pada server degananda.com kami belum menggunakan fungsi SWAP ini karena memang traffic yang masuk tidak terlalu besar.
  4. Disisi kanan kita juga dapat melihat uptime (lama jangka waktu server kita hidup) pada gambar diatas contohnya degananda.com telah live selama 40 hari tanpa adannya reboot atau restart atau shutdown system.
  5. Diatas uptime kita dapat melihat ada berapa thread dan task yang berjalan di server kita

Body

pada bagian body htop adalah fungsi utama yang menyajikan daftar process atau script atau job yang sedang berjalan di server.Kita dapat meliaht konsumsi memory(RAM) dan CPU untuk masing-masing process (script/job). Contohnya disini kita dapat melihat job / script mysqld(untuk database mysql) memakan CPU sebanyak 0% (kemungkinan saat itu tidak ada proses ke mysql) dan memory hingga 8.6%.

mysql dengan id 1386 tersebut telah “up” atau berjalan dalam jangka waktu 1 jam 30 menit.

jika tidak ada aktivitas pada suatu proses (contoh disini mysql) biasannya process atua script atau job tersebut akan dimatikan (killed).

Cara install htop

jika memang anda menggunakan linux server atau ubuntu server yang kebetulan memang tidak memiliki htop dari bawaannya tenang anda dapat menginstall htop dengan menggunakan perintah dbawah ini

debian

apt-get install htop

Centos/redhat/rhel

yum install htop

Cara mendapatkan process / script / job tertentu yang sedang berjalan dengan menggunakan htop

misalkan kita sedang dihadapkan disituasi ingin mendapatkan konsumsi RAM dan CPU untuk proses Nodejs maka kita juga dapat melakukannnya dengan menggunakan htop ditambahkan perintah linux untuk melakukan pencarian dihasil output dari suatu perintah di linux yakni GREP. Perhatikan contoh dibawah ini untuk mendapatkan proses “apache”

htop | grep "apache"

maka ketika perintah diatas dijalankan akan menghasilkan

yang diberikan highlight warna merah adalah proses yang sesuai dengan nilai yang kita masukan pada fungsi GREP. isikan nilai pada grep dengan nama proses yang ingin anda cari.

 

Cara mengecek kondisi kesehatan (health) server apache dan mysql pada linux

Mengelola server (apache & mysql) secara independen untuk menghemat budget(managed infratructure membutuhkan biaya lebih) membutuhkan penjadwalan yang ketat. Pada pembaahsan ini technology stack yang digunakan pada infrastruktur yaitu

  1. Apache sebagai web server
  2. php berjalan sebagai module di apache (web server)
  3. MySQL
  4. Ubuntu server LTS

ketiga software diatas di jalankan tanpa menggunakan PaaS (Platform as a service) tetapi menggunakan IaaS (infrastruktur as a service) yang mana berjalan diatas VM (Virtual machine).

proses pemeliharaan apache dan mysql harus dilakukan secara terjadwal untuk selalu menjaga aplikasi dalam kondisi prima

Sehingga, proses pemeliharaan mulai dari patching, security check dan health bukanlah merupakan tanggung jawab penyedia infrastruktur. Untuk dapat mengelola apache dan mysql berikut ini adalah langkah-langkah yang perlu dilakukan berkala.

TLDR – Ringkasan dan cek list

berikut ini adalah cek list yang perlu dilakukan saat melakukan cek kondisi kesehatan (health) mysql dan apache

MYSQL cek kesehatan check-list

No Kategori Task
1 mysql cek ketersediaan mysql (availability)
2 mysql cek slow query yang ada pada mysql
3 mysql cek jumlah koneksi yang gagal ke database (security check)
4 mysql cek apakah deadlock terjadi pada mysql
5 mysql cek konfigurasi apakah telah sesuai dengan traffic website (availability)

Apache cek kesehatan check-list

No Kategori Task
1 apache cek ketersediaan apache (availability)

Cara melakukan cek kondisi mysql pada linux ubuntu

1.Melakukan cek ketersediaan service mysql (availability)

Jika service mysql tidak berjalan maka aplikasi tidak akan mendapatkan supply data dari database yang menyebabkan user tidak dapat mengakses aplikasi dan terjadi database connection error.

berikut ini adalah perintah untuk melihat status ketersediaan mysql (availability).

 mysqladmin -h localhost -u [namadatabase] -p status

localhost dapat diganti menjadi ip lokal ataupun ip public (jika di izinkan diakses melalui public network).

mysql-availability.jpg

jika kondisi ketersediaan mysql(availability) bagus maka indikasinnya adalah

  1. Total uptime yakni  angka yang muncul pada bagian uptime dalam bentuk second yang mana 412K setara dengan 114 jam. Semakin lama aplikasi berjalan maka angka ini seharusnya akan terus naik
  2. Thread , merupakan jumlah thread yang menjalankan service mysql.  Seriing bertambahnya user(concurrent read/mengakses bersamaan) aplikasi jumlah thread ini harus di tingkatkan dengan mengkonfigurasi max_connection pada mysql config.
  3. Slow queries merupakan angka yang menunjukan jumlah slow sql queries. idealnya harus terdapat 0 slow queries. Jika query lambat perlu dilakukan analisa  serta optimasi terhadap query tersebut dan indexing jika diperlukan.
  4. queries per second avg  merupakan angka yang menunjukan jumlah query yang dijalankan tiap detik. Semakin banyak user yang mengakses aplikasi maka semakin banyak pula queries per second.

1.1 Melihat daftar slow query

jika pada proses cek ketersediaan mysql (availability) menunjukan lebih dari 0 slow queires maka langkah selanjutnya adalah melihat daftar query tersebut. Perintah yang dapat digunakan untuk melihat daftar slow query itu adalah

mysqladmin -h localhost -u [username] -p proc stat

slow-query_check.jpg

perintah diatas akan menunjukan pada tabel mana serta proses mana slow query berjalan. Kelemahan dari proses pengecekan slow query dengan perintah diatas adalah tidak dapat melihat langsung full query yang berjalan (harus melakukan pada level kode aplikasi).

Jika ingin mendapatkan full query langsung tanpa melakukan cek terhadap query yang berada di level aplikasi maka perlu mengaktifkan slow query logging tetapi tidak disarankan untuk aplikasi dengan level budget minim karena memakan size storage serta memakan resource server.

2. Cek jumlah koneksi yang gagal ke database

ini adalah security check. Semakin banyak koneksi gagal ke database menunjukan ada aktivias yang tidak di inginkan misalnya percobaan peretasan terhadap database server dengan menggunakan metode bruteforce (mencoba masuk dengan berbagai macam kombinasi username dan password)

perintah yang digunakan untuk melihat jumlah koneksi yang gagal ke database adalah sebagai berikut.

Jalankan perintah diatas pada sql query (masuk ke konsol atau menggunakan mysql client pilihan).

mysql_attach_defend.jpg

hal diatas menunjukan terdapat 25 kali percobaan koneksi ke database yang gagal. Tentunnya jumlah ini masih tergolong kecil sehingga kemungkinan sangat besar bukanlah merupakan percobaan tindakan kejahatan (peretasan).

3.cara melakukan cek apakah terjadi deadlock pada mysql

kondisi deadlock tentunnya tidak jarang terjadi terlebih pada aplikasi yang memiliki high rate access atau jumlah user yang sangat tinggi dan melakukan akses secara bersamaan.

perintah yang digunakan untuk melihat apakah deadlock terjadi pada mysql dapat menggunakan perintah dibawah ini.

SHOW ENGINE INNODB STATUS;

jika kondisi mysql dalam keadaan sehat maka seharusnya tidak terjadi deadlock sama sekali. Apabila terjadi deadlock maka perlu ditingkatkan jumlah koneksi yang diperbolahkan mysql dan pool sizenya melalui mysql config.

mysql_deadlock_check.jpg

4. Cek apakah konfigurasi mysql telah memenuhi traffic user yang mengakses.

langkah ini bertujuan untuk melakukan evaluasi apakah konfigurasi max_connection yang telah didefinisikan pada mysql masih sesuai dengan traffic pengunjung.

Jika pada kenyataanya jumlah traffic pengunjung (max_used_connection/concurrent) lebih besar dibandingkan jumla konfigurasi max_connection maka perlu dilakukan rekonfigurasi ataupun scaleup untuk memenuhi kebutuhan traffic pengunjung.

perintah yang digunakan untuk membandingkan jumlah max_used_connection dan max_connection ini adalah

cek jumlah koneksi yang diperbolahkan / max_connection mysql

SHOW GLOBAL VARIABLES LIKE 'max_connections';

cek jumlah user yang secara bersamaan mengakses mysql / max_used_connection mysql

SHOW GLOBAL STATUS LIKE ‘max_used_connections’;

pada hasil test ini , jumlah max_connection masih sama dengan max_used_connection sehingga tidak perlu dilakukan reconfigurasi ataupun scaleup (jika dibutuhkan).

max connection

max_connection.jpg

max_used_connection

max_used_connection.jpg

Cara melakukan cek kondisi apache web server pada linux ubuntu

1.Melakukan cek ketersediaan service apache (availability)

jika ketersediaan apache baik secara uptime maupun responnya rendah maka perlu dilakukan pengecekan lebih lanjut baik secara konfigurasi ataupun ketersediaan resource (scale up).

Untuk dapat melakukan cek ketersediaan apache dapat menggunakan tools systemctl. Jika image server yang digunakan adalah ubuntu server maka systemctl ini telah tersedia secara default.

Untuk memastikan systemctl tersedia cukup tuliskan perintah dibawah ini

sudo dpkg -l | grep systemd

jika systemctl / systemd belum terinstall maka perlu dilakukan installasi systemctl terlebih dahulu

sudo apt-get install systemd

1.1 Melakukan cek ketersediaan service apache dengan apachectl

Secara default apache telah memberikan tools bernama apachectl. Pastikan mod-status apache telah tereanble.

Untuk dapat menjalankan apachectl/apache2ctl systemctl merupakan syarat yang harus dipenuhi / di install.

apachectl-modstatus.jpg

jalankan perintah dibawah ini untuk melihat status availability apache.

apachectl status

atau

apache2ctl

pada konsol akan ditunjukan beberapa variable terkait ketersediaan apache (availability). Pembahasan mendalam mengenai cek ketersediaan (availability) apache akan dibahas pada ulasan lain.

Quick check ketersediaan mysql dan apache

Proses pengecekan juga dapat dilakukan secara singkat dengan melihat proses-proses yang berjalan pada server. Ini dilakukan bukan dalam bentuk kegiatan rutin ataupun terjadwal melainkan random checking yang dapat dilakukan secara spontan.

Perintah yang digunakan adalah sebagai berikut ini

cek apache sedang berjalan pada saat itu

ps -ax | grep "apache"

apache-ps-ax-list.jpg

cek mysql sedang berjalan pada saat itu

ps -ax | grep "mysql"

mysql-ps-ax.jpg

perintah-perintah diatas biasannya menjadi gerbang awal saat proses inventigasi dimulai terutama saat apliaksi down untuk melakukan diagnosis awal.

 

sumber : https://degananda.com/cara-mengecek-kondisi-kesehatan-health-server-apache-dan-mysql-pada-linux-ubuntu/