add new user on vmware vsphere

menambahkan user baru pada vmware vsphere.

untuk alasan keamanan, user perlu di manajemen sedemikian rupa, salah satunya adalah menambahkan user agar tidak menggunakan user administrator.

  1. langkah pertama adalah klik menu, lalu pilih administration

vs2. pilih menu user and grups , lalu pilih domain

vs1

3. tambahkan user sesuai domain, jangan lupa centang bawah. lalu OK

vs3

 

 

 

 

 

 

 

 

Bagikan saja, itu tidak berat

Forgot password ubuntu 20.04 server on Vmware Vsphere

lupa password server, atau tidak diberikan password server oleh pemegang sebelumnya adalah hal yang menyebalkan. jika servernya berbentuk fisik, kamu harus mendatangi data center dimana letak server tersebut berada untuk melakukan reset password.

untungnya, dunia sudah canggih, saat ini hampir 90 % server berbentuk virtual. maka kegiatan reset password dapat dilakukan secara remote.

oh, iya, kegiatan ini adalah rangkaian dari sebuah kegiatan diantaranya reserve engineering sebuah server. oke langsung saja ke cara mereset password ubuntu 20.04 server di vmware vsphere.

  1. login kedalam dashboard vmware, kemudian, edit server virtual yang akan di reset.

reset

2. pada tab vm options, menu boot options, isikan lama delay server saat boot, terserah, saya isi dengan 10 sec.

reset23. kemudian, reboot server

Screenshot (3)_LI4. setelah reboot, akan muncul boot option seperti dibawah ini

reset-root-password-on-ubuntu-20-04-015. ketik “e” tanpa kutip untuk edit file boot . maka akan muncul tampilan seperti ini

reset-root-password-on-ubuntu-20-04-026. perhatikan, dan fokus hanya pada tulisan ro quiet splash $vt_handoff

reset-root-password-on-ubuntu-20-04-037. ganti tulisan tersebut menjadi rw init=/bin/bash

reset-root-password-on-ubuntu-20-04-048. setelah selesai edit, tekan Ctrl+x untuk reboot servernya.

9.server akan reboot dan akan menampilkan seperti dibawah ini

reset-root-password-on-ubuntu-20-04-0510. ketik mount | grep -w / pada console untuk verifikasi letak disk OS ubuntu nya

reset-root-password-on-ubuntu-20-04-0611. jika sudah tepat, ketik passwd pada console untuk merubah password root server

reset-root-password-on-ubuntu-20-04-0712. setelah berhasil, ketik exec /sbin/init untuk reboot server, dan silahkan, server sudah bisa login dengan user root dan password yang baru dibuat.

 

terima kasih.

Bagikan saja, itu tidak berat

How to install Forticlient on linux ubuntu

hai, jadi ceritanya pagi ini saya sedang dimintai tolong untuk setup server disebuah perusahaan swasta di Jakarta.

karena ini perusahaan mengutamakan keamanan, jadilah saya tidak boleh akses server tersebut dari luar jaringan mereka. artinya server hanya boleh diakses lewat jaringan lokal. tentunya mereka sudah menyediakan Virtual Private Network.

VPN mereka disediakan oleh perangkat firewall dengan brand FORTINET, dimana FortiClient sebagai VPN clientnya.

karena saya menggunakan Linux, maka saya mengunduh aplikasi Forticlient for Linux. tempat download dan cara instalasinya juga mudah, semua saya dapatkan dari website officialnya langsung yang beralamat di https://www.fortinet.com/support/product-downloads/linux .

setelah saya install dan membuka aplikasinya, jreng jreng, saya gagal connect ke gateway mereka.

forticlient GUI

padahal IP nya sudah saya masukkan dengan tepat.

tidak putus asa sampai disana, ( kan gak mungkin ya saya ngomel-ngomel ke client kalau saya gagal connect ke VPN mereka lewat linux padahal lewat OS lain aman-aman saja ). jadilah saya menggunakan cara lama, cara classic, cara old school, cara gelap, lah pokoknya cara dimana orang lain tidak mau cara ini. wkwkwkwk

saya instalalasi dan konfigurasi VPN connect via Command Line, ( entahlah, saya masih percaya kalau GUI itu semacam kutukan di Linux )

perintahnya adalah

sudo apt install openfortivpn
sudo vi /etc/openfortivpn/config

Screenshot_66

masukkan info diatas sesuai dengan user dari VPN kita. lalu save, dan jalankan dengan perintah

ant@linux:~$ sudo openfortivpn -c /etc/openfortivpn/config
[sudo] password for ant: 
INFO: Connected to gateway.
INFO: Authenticated.
INFO: Remote gateway has allocated a VPN.
INFO: Got addresses: [xxx.xxx.xxx.xxx], ns [0.0.0.0, 0.0.0.0]
INFO: Got addresses: [xxx.xxx.xxx.xxx], ns [0.0.0.0, 0.0.0.0]
INFO: Interface ppp0 is UP.
INFO: Setting new routes...
INFO: Adding VPN nameservers...
INFO: Tunnel is up and running.

nah, kalau ada error trusted-cert, tinggal masukin aja yang sesuai di error.

 

setelah muncul info Tunnel is up and running, maka jaringan kamu sudah tergabung ke jaringan Private mereka. tinggal bekerja deh. selamat mencoba.

 

butuh dukungan untuk desain infrastruktur, konfigurasi dan throubleshooting Server ? silahkan kontak kami melalui surel riyanto1337@gmail.com

 

Bagikan saja, itu tidak berat

konfigurasi mysql database master-slave untuk replikasi searah

ide ini sudah muncul sedari lama, namun saya baru bisa mengeksekusi akhir-akhir ini. awal munculnya ide ini karena ada kebutuhan dan permasalahan yang dihadapi oleh client dimana saya sebagai konsultannya.

awal permasalahannya adalah client tidak memiliki sistem backup sama sekali. untuk tindakan urgensi, saat itu saya membuatkan system backup yang berjalan setiap jam tertentu. namun, system backupnya hanya berbentuk dump dengan file ekstensi .sql. langkah ini saya tawarkan karena kebutuhan mendesak dan harus segera dieksekusi untuk melindungi data dari kegagalan fungsi sebuah system.

system backup yang berbentuk file hasil dump tersebut saya kirim dari server production ke server backup dengan tujuan jika ada kegagalan fungsi pada server production, mereka masih memiliki data hasil backup terjadwal.

sejauh ini, metode diatas sangat bermanfaat, terbukti beberapa kali server production mengalami gagal fungsi, antara lain: disk crash, network fail, system error dll, untuk mengembalikan system agar berjalan kembali, tentunya di restore dari file hasil backup tersebut.

namun, permasalahan berikutnya pasti akan muncul. tentunya ini berdasarkan tuntutan ya, jika client tidak nuntut, harusnya masih nyaman-nyaman saja dengan metode diatas. yang ada dalam benak saya beberapa waktu lalu, bagaimana jika client menuntut untuk data backup itu realtime,? artinya, jika data di input, misalnya huruf A pada server production, data huruf A tersebut juga langsung berada pada server backup secara realtime? tentunya metode backup terjadwal bukan lagi jawaban atas masalah ini.

mysql database master-slave adalah solusinya. dengan konfigurasi ini, maka data akan dikirim secara realtime dengan jeda data loss sangat kecil, ya sekian detiklah. ini tergantung dari kecepatan Network antara database master yang mengirim ke database slave, selain network, kecepatan menulis dan membaca pada disk atau yang dalam bahasa IT nya IOPS juga sangat berpengaruh.

untuk melakukan konfigurasi tersebut, gampang-gampang susah, jika anda hoki, mungkin mengikuti tutorial yang bertebaran di internet, bisa langsung implementasi. tapi saran dari saya, sebaiknya anda khatam dulu tentang Server dasar, kemudian khatam database enginer. kemudian memperkaya jam terbang dengan menyelesaikan berbagai persoalan hidup server. dengan begitu, anda akan paham dengan apa yang anda ketik, yang anda lalukan diserver. jadi kemungkinan salah eksekusi sangat tipis. jika anda tidak memahami itu, bisa saja anda salah eksekusi, misalnya menghapus database, atau mengubah privileges dari user server, seperti yang sering saya temui.

Screenshot_18

gambar diatas adalah salah satu perintah fatal yang dilakukan didalam server yang saya temui.

oke, kita langsung saja masuk ya ke teknisnya, sekarang saya memiliki dua server, yang pertama adalah master, dan yang kedua adalah slave. inti dari replikasi ini adalah bagaimana server slave dapat membaca binary log dari server master. maka, konfigurasi awal adalah pada server master

konfigurasi pada server master.

edit file berikut dan masukkan konfigruasi atau sesuaikan

[root@Master ~]# vim /etc/my.cnf
[mysqld]
log-bin=/data/bin/mysql-bin
binlog-format=row
server-id=1

2. membuat direktory binary log

[root@Master ~]# mkdir /data/bin
[root@Master ~]# chown -R mysql:mysql /data/bin

3. restart service mysql

[root@Master ~]# systemctl restart mysql

4. lihat hasil konfigurasi dengan perintah

[root@Master ~]# mysql -e "SHOW MASTER LOGS;"
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000001 |     26753 |
+------------------+-----------+

5. membuat user mysql untuk melakukan replikasi

"GRANT REPLICATION SLAVE ON *.* TO 'repluser'@'IP SERVER SLAVE' IDENTIFIED BY 'DISIPASSWD';"

Konfigurasi pada server slave.

  1. tambahkan atau modifikasi file berikut
[root@Slave ~]# vim /etc/my.cnf
[mysqld]
read-only
server-id=2

2. restart service mysql

[root@Slave ~]# systemctl restart mysql

3. menambahkan konfigurasi pada mysql

MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='IP MASTER', MASTER_USER='repluser', MASTER_PASSWORD='PASSWDYGTADI', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=26753;
MariaDB [(none)]> START SLAVE;
MariaDB [(none)]> SHOW SLAVE STATUS\G

jika konfigurasi berhasil, harusnya akan muncul tampilan seperti dibawah ini.

Screenshot_8

sampai disini, tujuan sudah tercapai, yaitu mysql database replikasi searah secara realtime. disini perlu adanya monitoring dan throubleshooting jika ada error pada system replikasi. selain monitoring dan throubleshooting, diperlukan juga tunning database untuk performa lebih baik.

Saya Riyanto, seorang Sysadmin. familiar dengan linux server dan Open source. jika butuh dukungan, bisa hubungi saya pada surel riyanto1337@gmail.com

Bagikan saja, itu tidak berat

mengatasi masalah blank page index.php pada codeigniter

setelah sekian lamanya mencari tau masalah error blank page pada codeigniter, akhirnya bisa ketahuan dengan menghidupkan error log pada file index.php nya karena error log tidak terbaca pada nginx.

cara nya adalah dengan edit file index.php pada root directory codeigniternya dan merubah production menjadi development.

define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');

kemudian, buka kembali aplikasi melalui browser, maka akan muncul error penyebab index.php nya blank.

A PHP Error was encountered

Severity: Warning

Message: pg_connect(): Unable to connect to PostgreSQL server: FATAL: database "sidesa_neiw" does not exist

Filename: postgre/postgre_driver.php

Line Number: 154

Backtrace:

nah, dari sana kelihatan penyebab error blanknya, yaitu database yang tidak sesuai. dari sana tinggal perbaiki penyebabkan.

 

oke sekian

Bagikan saja, itu tidak berat

Extend disk CentOS Virtual Server pada VMWare Vsphere

menambahkan disk pada virtual server centos logical volume di VMWare Vsphere

tulisan ini sebagai catatan pekerjaan agar tidak lupa dan sebagai Portofolio, kali aja ada yang lirik 😀

  1. harus login dulu ke dashboard Vspere nya.
  2. kemudian, pilih VM yang akan di extend disknya, dan klik kanan, dan pilih edit setting.

Screenshot_737

Screenshot_738

lalu kamu bisa edit jumlah disknya mau jadi berapa. setalh itu , klik Oke.

 

5. lanjut, SSH ke CentOS servernya. ketik fdisk -l untuk mengetahui diskname dan apakah disk sudah tertambah

[root@localhost /]# fdisk -l

Disk /dev/sda: 2199.0 GB, 2199023255552 bytes, 4294967296 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0009a189

 Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 419430399 208665600 8e Linux LVM

Disk /dev/mapper/centos-root: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-swap: 8455 MB, 8455716864 bytes, 16515072 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-home: 151.5 GB, 151523426304 bytes, 295944192 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

oke, sudah tertambah ya jadi 2 TB. lanjut ketik fdisk /dev/sda dan seperti langkah2 dibawah ini

[root@localhost /]# fdisk /dev/sda

WARNING: The size of this disk is 2.2 TB (2199023255552 bytes).
DOS partition table format can not be used on drives for volumes
larger than (2199023255040 bytes) for 512-byte sectors. Use parted(1) and GUID 
partition table format (GPT).

Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p

Disk /dev/sda: 2199.0 GB, 2199023255552 bytes, 4294967296 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0009a189

 Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 419430399 208665600 8e Linux LVM

Command (m for help): n
Partition type:
 p primary (2 primary, 0 extended, 2 free)
 e extended
Select (default p): p
Partition number (3,4, default 3): 3
First sector (419430400-4294967295, default 419430400): 419430400
Last sector, +sectors or +size{K,M,G} (419430400-4294967294, default 4294967294): 4294967294
Partition 3 of type Linux and of size 1,8 TiB is set

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

kamu bisa reboot VM nya, atau ketik partprobe , saya pilih reboot saja biar hackul yakin.

kemudian ketik vgs untuk mengetahui volume groups

[root@localhost ~]# vgs
 VG #PV #LV #SN Attr VSize VFree
 centos 1 3 0 wz--n- <199,00g 4,00m

oke, disitu nama volume groupnya centos

kemudian, ketik lsblk, untuk mengetahui letak dan nama disknya yang baru

[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 2T 0 disk 
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 199G 0 part 
│ ├─centos-root 253:0 0 50G 0 lvm /
│ ├─centos-swap 253:1 0 7,9G 0 lvm [SWAP]
│ └─centos-home 253:2 0 141,1G 0 lvm /home
└─sda3 8:3 0 1,8T 0 part 
sr0 11:0 1 1024M 0 rom

sda3 adalah nama disk yang baru itu. lalu, kita tambahkan disk yang baru itu pada volume group centos dengan perintah :

[root@localhost ~]# vgextend centos /dev/sda3
 Volume group "centos" successfully extended

lanjut, kita lihat dulu, apakah command diatas berhasil, yaitu volume goups sudah tertambah :

[root@localhost ~]# vgdisplay centos | grep Free
 Free PE / Size 473088 / 1,80 TiB

sudah tertambah ya, jadi 1.8 TB. lanjut , kita extend, nah disini bebas, mau extend full, atau beberapa sesuai kebutuhan, dan juga, yang di extend sesuai mount point, ya istilahnya bagi-bagi kuelah. ada beberapa mount point pada volujme group, khususnya centos, ada root,swap, dan home disini saya akan extend yang root saja dengan menambahkan 500GB dari 1.8 TB.

[root@localhost ~]# lvextend -L+500G /dev/centos/root 
 Size of logical volume centos/root changed from 50,00 GiB (12800 extents) to 550,00 GiB (140800 extents).
 Logical volume centos/root successfully resized.

setelah di tambahkan, tinggal proses sync meta data dengan perintah growfs

[root@localhost ~]# xfs_growfs /dev/centos/root
meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=3276800 blks
 = sectsz=512 attr=2, projid32bit=1
 = crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=13107200, imaxpct=25
 = sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=6400, version=2
 = sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 13107200 to 144179200

kemudian lihat, apakah sudah tertambah

[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3,9G 0 3,9G 0% /dev
tmpfs 3,9G 0 3,9G 0% /dev/shm
tmpfs 3,9G 8,8M 3,9G 1% /run
tmpfs 3,9G 0 3,9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 550G 50G 501G 10% /
/dev/sda1 1014M 194M 821M 20% /boot
/dev/mapper/centos-home 142G 109G 33G 77% /home
tmpfs 783M 0 783M 0% /run/user/0

 

Bagikan saja, itu tidak berat

Mitigasi host yang menjadi bot

awalnya saya hanya melakukan rutinitas pengecekan firewall di kantor yang saya tangani.

dari hasil monitoring, ada lalu lintas yang tidak wajar dari salah satu host. kemudian saya mencoba mencari tau lebih jauh.

aktifitas tidak wajar

aktifitas tidak wajar

dari gambar diatas, dapat diketahui bahwa host tersebut berasal dari farmserver, dimana aktifitas outgoing yang tidak normal menuju port tertentu.

mitigasi selanjutnya saya remote SSH server tersebut. hal pertama yang saya cek adalah konsumsi resource

resource penuh

resource penuh

selain resource penuh, ada proses yang tidak wajar berjalan pada server, saya mitigasi lebih jauh terkait proses tersebut dengan melihat lebih rinci dengan perintah :

ps aux | grep netsnd

proses tidak wajar

proses tidak wajar

hasilnya adalah gambar diatas.  ada proses yang menjalankan file tttt yang targetnya random. oke, disini sudah jelas kalau memang aneh. saya lanjutkan migitasinya dengan mencari keberadaan file tttt dan kemudian membaca isi file tersebut,

letak file tttt dan rekan2 nya

letak file tttt dan rekan2 nya

dari hasil pencarian, menemukan letak file tersebut, kemudian saya membaca isi dari file tersebut dan file-file lainnya.

menjalankan nmap

menjalankan nmap

dari sana dapat dibaca, bahwasannya, proses yang tidak wajar tersebut adalah menjalankan perintah nmap pada host random di internet.

proses tersebut akan memakan resource, baik CPU, RAM dan Network.

darisana sudah bisa disimpulkan, bahwa server tersebut sudah menjadi ROBOT yang dikendalikan oleh orang lain diluar sana untuk proses-proses yang dia inginkan.

oiya, selain menjalankan perintah nmap, rupanya server tersebut juga digunakan untuk mining

miner

miner

siapa pelakunya ? bagaimana cara masuknya ? 

diperlukan mitigasi lebih dalam untuk mengetahui pelakunya, sementara ini, server tersebut saya karantina agar tidak berproses sementara waktu, dengan demikian, aplikasi diserver tersebut juga tidak dapat diakses sampai dengan waktu yang belum ditentukan.

terima kasih telah mau membaca. :*

Bagikan saja, itu tidak berat

Mengatasi masalah mailer LPSE

masalah ini pertama muncul saat saya mendapat laporan dari UKPBJ bahwasannya penyedia tidak mendapatkan balasan email, baik pendaftaran maupun reset password

hal yang saya lakukan adalah login ke server, memastikan koneksi ke mailer lkpp terkoneksi, setelah saya cek, rupanya tidak terkoneksi mailernya dari server lpse ke server lkpp.

status connect, tapi tidak respon

status connect, tapi tidak respon

pengujian dengan mengetikkan perintah

telnet mail.lpse.lkpp.go.id 465

kemudian, saya doble check dengan telnet dari laptop local saya. hasilnya

nah ini yang benar

nah ini yang benar

rupanya error terjadi karena server mail lpse lkpp IP nya berubah. cara perbaikan di server lpse nya adalah dengan melakukan edit file hosts, dengan perintah

nano /etc/hosts

sesuaikan seperti ini

sesuaikan seperti ini

jika sudah, jangan lupa save, kemudian lakukan perintah pengujian telnet seperti diatas

telnet mail.lpse.lkpp.go.id 465

dan pastikan, responnya sudah seperti gambar dibawah ini :

nah ini yang benar

nah ini yang benar

jika sudah seperti gambar tsb, berarti sudah berhasil di perbaiki dan silahkan di coba dengan mendaftarkan penyedia,

SARAN : gunakanlah mailer sendiri, karena mialer LKPP saya lihat sudah ngos ngosan.

 

terima kasih.

 

Bagikan saja, itu tidak berat

Script Kill all processes of deleted files that are still open | skrip menghapus semua proses delete file yang berjalan

 

Berawal dari matinya service postgresql pada salah satu server, disebabkan karena partisi pada disk penuh.

penyebab penuhnya kala itu adalah kesalahan konfigurasi pada network yang menyebabkan attack ter-record pada log web server hingga puluhan GB.

solusi cepatnya adalah memperbaikin konfig network, kemudian menghapus file log yang menjadi penyebab partisi penuh.

namun, setelah dihapus, partisi masih terlihat penuh saat di lihta menggunakan perintah :

[root@localhost var]# df -h

Screenshot_430

padahal….

Screenshot_431

oke, kemudian saya melihat list open file yang berjalan.

Screenshot_432

akeh cuk, kalau kill satu persatu, bisa lelah jari eike yang lembut ini.

kira-kira perintahnya begini : kill -9 82363

oke, saya bikin aja dalam bentuk bash script, nantinya bash script ini juga bisa dijalankan di server lain. bikin file dengan ekstensi .sh , terserah. misalnya jancuk.sh, bikin permisinya 777, lalu tambahkan code, begini codenya,

#!/bin/bash

lsof|grep deleted|awk {print $2}|xargs kill -9

simpan, dan buang jalankan.

sebelum kamu copy pasti script diatas, pastikan kamu memahami apa isinya, jangan asal copas, bisa jadi itu script buat delete seluruh folder / mu 🙂

Continue reading

Bagikan saja, itu tidak berat

Analisa Sistem dan Infrastruktur untuk pemecahan masalah ( khusus pemula )

halo semua, seperti biasa, nulis untuk kebutuhan catatan saja bagi saya. atau bisa juga sebagai Portofolio, kali aja artikel saya ini di lirik sama seseorang yang sedang membutuhan jasa saya. hehehe wkwkwk. judulnya itu analisa sistem dan infrastruktur untuk pemecahan masalah.

oiya, artikel ini khusus pemula, untuk yang sudah Pro = Profesional, jangan dibaca. karena saya bisa diketawain. wkwkwkwkw begitu. karena ini analisa abal-abal alias sembarangan. saya sendiri baru pertama kali melakukan analisa se kompleks ini. permasalah ini sudah beberapa bulan terjadi, dan saya baru sempat nulisnya sekarang.

berawal dari laporan client, bahwa aplikasinya lambat di akses. errornya itu lo yang bikin menarik. :

error tcp

error tcp

dari error diatas, rata-rata mahluk hidup di muka bumi ini pasti menduga ada masalah dengan jaringan, lalu mereka akan berasumsi bahwa bandwith di servernya bermasalah. karena mereka buka yutub aman kok, dan web-web lain aman. bandwith servernya nih pasti. gitchu~~~

btw, wait… eh, itu di akses jam 11 malam loh, (lihat pojok kiri atas). harusnya, jam segitu bandwith server gak tinggi. oke deh, untuk memanstikan, saya terpaksa hubungi pihak provider, apakah benar, pada jam segitu bandwith mentok. dan jawabannya, tidak. mentoknya kalo siang wkwkwkw.

oke, kita bahas yang benerannya, error tersebut terjadi karena ada lost koneksi dari client (HP) ke server aplikasi. penyebabnya ? bisa jaringan di client, jaringan di server, query, bandwith, daaaaaaaann server yang terlalu sibuk, gak tau deh ngapain dan lain-lain, banyak deh. oke, kita eliminasi masalah, ini yang penting, bisa eliminasi. seperti indonesian idol aja ya. wkwkkw

A. eliminasi permasalahan

  1. internet client bermasalah? tidak mungkin. karena doi bisa buka yutub dan web web lain
  2. trafik network server bermasalah, ? tidak mungkin juga. karena itu diakses jam 11 malam, yang begitu di konfirmasi ke pihak provider juga aman.
  3. logic dari aplikasi, ? bisa jadi. mari kita cek untuk memastikan.
  4. utilitas server bermasalah ? bisa jadi, mari kita cek untuk memastikan.

B. cek utilisasi server

kemudian, saya akses server. hal pertama yang dilakukan adalah ketik htop . wkwkw, ini perintah paling lazim dilakukan untuk liat kondisi server.

dan ternyata, benar… resourcenya CPU nya tinggi banget. nah, ada apa ini ? wah wah.. kok bisa. ini yang bikin error disisi usernya

mentok cuk

mentok cuk

wealah, kok bisa ya CPU 16 core mentok. ini server ngapain ya ? seperti sedang dipakai mining Bitcoin ajah, wkwkkw. sek. kok ya jadi kepikiran ya mining Bitcoin pake server, lumayan juga buat nambah asupan gizi dimasa pandemi gini, wkwkwkw. wes wes sadar.

agak aneh bagi saya, dan bagi teman-teman yang saya tanyai. apalagi setelah melihat dari fungsi aplikasi, kegunaan, jumlah user akses, dan logicnya. 16 core VCPU harusnya udah lebih dari cukup.

nah, bagi orang yang panikan, biasanya langsung buru-buru untuk menjustifikasi masalah pada cpu yang penuh, dan harus di tambah, tidak main-main, 4 kali lipat sekaligus. wew, emangnya mau bikin Data Center Bos pakai 64 core ??? 😀 lagian, belum tentu kan masalahnya teratasi ????. tenang, mari kita cari tau masalahnya lebih dalam.

C. cek aplikasi yang memakan resource

ada dua aplikasi yang tertinggi memakan resource dari server tersebut, yang pertama database, yang kedua web server. saya melakukan penangkapan slow query log pada kedua aplikasi tersebut. yang pertama backend web server hasilnya :

Screenshot_2

benar, aplikasi tersebut menggunakan engine php untuk menjalankannya. perlu diingat, php itu bukan akronim dari Pemberi Harapan Palsu , ya.

dari error php tersebut mengarah ke database.

Screenshot_1

benar, satu query di eksekusi sampai dengan 15 -20 detik, panteslah error disisi clientnya TCP error.karena server gagal melayani permintaan dari client.

sampai disini, sysadmin harus berkomunikasi dengan Programmer dan Database Engineer. harus ada hubungan yang harmonis antara ketiga elemen tersebut.

hubungan ini tidak akan terjadi jika sebuah project hanya di handle oleh satu orang saja. biasa di sebut Full Stack Developer. dia programmernya, dia database enginernya, dia juga sysadminnya. bisa mabok darat doi. wkwkwkw

sysadmin menanyakan kepada Database engineer, apakah query pada aplikasi sudah di sederhanakan secara maksimal. jika jawabannya sudah, namun masih terdapat error slow query log. maka harus mencari penyebab lainnya.

D. pengecekan di sisi perangkat.

pengecekan dilanjutkan disisi perangkat. yang berhubungan dengan itu adalah perangkat Input Output. ada dua, NIC dan Disk. saya cek NIC terlebih dahulu. setelah di cek, NIC dalam kondisi baik. NIC dengan 10 Gbps dapat dilewati dengan mulus oleh data-data yang di transfer.

kemudian say cek Disk. untuk cek disk, bisa menggunakan hdparm, fdisk, dll, banyak toolsnya, disini saya menggunakan fio. yaitu aplikasi untuk mengecek Read & Write pada Disk. dan, setelah di cek ini hasilnya :

iops

iops

FYI, server ini masih menggunakan HDD , IOPS segitu untuk digunakan aplikasi yang trafik dan Read Write datanya tinggi, sangat jelek, bahkan bisa dikatakan jeblok. lihat saja Readnya, hanya 38.

beberapa orang yang pasrah dengan keadaan, maksudnya ya hanya punya server itu dan gak mungkin upgrade, maka akan mengakali dengan memecahnya menjadi banyak bagian aplikasi pada server.

untuk aplikasi, bisa menggunakan teknologi kekinian yang biasa di kenal Microservices. bisa di baca disini : https://medium.com/codelabs-unikom/microservices-apaan-tuh-b9f5d56e8848

untuk database, bisa upgrade ke yang lebih mumpuni untuk pengolahan data besar, Postgresql, atau Monggo DB lebih sangat bagus. setelah itu di cluster. Read dan Write database di pisah, menggunakan Proxy. pasti akan jadi pekerjaan berat nan keren. ya gimana lagi, adanya server itu. wkwkwkw

solusi yang kedua, upgrade SSD, maka masalah IOPS beres. begini penampakan IOPS yang menggunakan SSD

iops2

jauh banget kan ya ? hehehe

oke. lanjut.

pada kasus ini, server sudah upgrade menggunakan SSD, dan ternyata, aplikasi sudah beres, aman dan kenceng.

coba deh di lihat CPU nya, pasti tidak load mentok lagi. karena query yang di Read dan Write di Dsik tidak antri, tidak lama lagi waktunya, otomatis, CPU juga tidak bekerja keras lagi. dan loadnya menurun.

sampai disini saya tidak cek server lagi dari sisi sistem Operasi, karena sudah di handle oleh sysadminnya. saya hanya menyediakan SSD.

jadi, tidak perlu upgrade CPU kan ? bayangkan saja jika harus upgrade CPU, larang regone Rekkkkkk. dan kerjaannya ribet Rekkkk. kudu backup data, matiin server, bongkar, halah, mumet. semetara aplikasi diburu kudu running dan yang lebih kacau, bisa jadi setelah upgrade CPU masalah tidak teratasi.

Mal Praktek Rekkkk jenenge neng dunia kedokteran. 😀

yoweslah, sekian aja, yang penting client udah tersenyum lebar karena aplikasinya udah aman. disitu saya merasa dipuasin oleh client . walaupun clientnya LANANGAN.

Bagikan saja, itu tidak berat