lifelong learner — urip iku urup, currently working on accenture.

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

0
Degananda.com -

cek-kondisi-mysql-apache-linux-ubuntu

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 queriesJika 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.