Rabu, 21 Februari 2024

Menguji Kecepatan Koneksi Antara Server dan Client dengan iPerf3

Halo Guys.. Pernah kalian melakukan Uji Kecepatan Koneksi ?
Bicara mengenai Uji kecepatan koneksi biasanya kita identik dengan menggunakan speedtest yang terkenal di media-media online.  Seperti: Fast.com, Speedtest by Ookla, LibreSpeed, dan lain-lainya

Tapi WebApps di tersebut rasanya hanya untuk mengetest kecepatan dari internet yg kita miliki. Sudah pasti bottle neck nya di gateway ISP yang kita gunakan, tidak mungkin hasil speedtest nya melebihi dari status berlangganan yg kita beli.

Ok, sekarang bagaiman kalau contoh kasus nya kita harus melakukan uji koneksi antara Server dengan Client ?
Solusi yang biasa kita temui seperti melakukan koneksi Peer-to-Peer pakai suatu services seperti SCP, FTP, atau services lainya lalu test mengirim data. Tapi menurutku itu cukup ribet & dan kurat readable laporan nya.


Untung nya ada aplikasi "iperf3" - https://github.com/esnet/iperf

Iperf3 adalah tools untuk mengukur bandwidth dan kecepatan suatu jaringan.
Iperf3 mendukung TCP, UDP, SCTP dan bisa berjalan pada banyak platforms seperti windows, Linux, Android, Mac, dan lainya. Tools ini juga dapat melakukan pengujian koneksi untuk IPv4 & IPv6 bahkan tools ini juga dapat melakukan pengukuran hingga throughput maksimum / "extreme best case".

Cara penggunaan dari tools Iperf3 ini juga cukup mudah, kita cukup install tools ini pada kedua server( Server & Client ) yang akan melakukan test koneksi.

For sample command line usage:
https://fasterdata.es.net/performance-testing/network-troubleshooting-tools/iperf/


Pada Sisi Server :
Kita cukup menjalankan command berikut :

$  iperf3 -s
Gunakan option " -s " untuk menjalankan tools ini sebagai mode server.


Pada Sisi Client :
Kita cukup menjalankan command berikut :

$  iperf3 -c [Alamat-Server]
Gunakan option " -c " untuk menjalankan tools ini sebagai mode client, lalu masukan alamat dari server iperf3.

Setelah menjalankan command di atas pada sisi client, biarkan aplikasi berjalan sampai selesai melakukan pengujian seperti gambar berikut. 

Pengujian koneksi ini bisa jadikan kegiatan untuk validasi metrics dari Prometheus pada Grafana Dashboard, yang kebetulan sekarang saya sedang bermain Grafana.


Melalkukan Test Download/Received dengan rate 100Mb/s, menggunakan command :
$  iperf3 -c [Alamat-Server] -i 1 -t 120 -b 120M


Melalkukan Test Upload/Transmit dengan rate 100Mb/s, menggunakan command :
$  iperf3 -c [Alamat-Server] -i 1 -t 120 -b 120M -R
** penambah command -R untuk reverse package nya


Oiya.. pada sisi server juga kita dapat mengaktifkan autentikasi. Bagaimana tools ini cukup membantu kah ?

Semoga Bermanfaat. 

Share:

Kamis, 12 Oktober 2023

Multi Threaded Port Scanner With Bash

Halo Guys.. Pernah kah kalian melakukan cek status port dari server kalian, satu persatu dari masing-masing server / IP Address nya?

Seperti yang kalian ketahui menjadi SysAdmin bukan hanya tentang membuat & manage infrastruktur yang kita buat, Tapi juga harus memastikan semuanya dari ujung ke ujung harus berjalan dengan baik. 

Contohnya hal yang pernah ta alami, Server aplikasi yang kita yakinin berjalan baik. Tapi ternyata IP-Address & Port masih terblokir firewall oleh team Network. Lalu bagaimana cara kita memastikan semua port yang kita pakai sudah open semua dengan output data yang mudah disajikan ?

Untuk mengecek status port, kita pasti sering dengar tools port scanner yang cukup terkenal seperti nmap, atau bahkan menggunakan cara old-schoo dengan telnet.

Contoh Pengunaan NMAP :

$ nmap 10.10.10.12 -p22,80,9090   #(Single IP, Multi Port)

$ nmap 10.10.10.11 10.10.10.11 10.10.10.13 -p22,80,443   #(Multi IP, Not Specified Port Per IP)

Contoh Telnet :

$ telnet 10.10.10.15 80  # (Can't Multi Port)

Tapi tools di atas rasanya masih kurang, kita ingin yang mudah dibaca & simple. Terinspirasi dari Bash script pada postingan sebelumnya mengenai multi ping, 

https://blog.ridwan.tech/2023/03/ping-multiple-host-with-one-command.html

--

Pada tulisan sebelumnya hanya bisa cek ping (ICMP), tidak bisa spesifik port. Dan sekarang kita akan buat script untuk solusi permasalahan kita di atas. Tampilan output nya seperti ini :


Terlihat lebih bagus kan output nya ?

Ok, berikut bash-script nya :

Lalu siapkan masukan daftar IP dan Port kalian ke dalam text file yang nantinya akan dibaca oleh bash-script, seperti berikut format nya :

Ok Next, sebelum running, pastikan kalian memberikan permission executable pada script tersebut :

$ sudo chmod +x bash-script

lalu jalankan dengan script tersebut dengan command berikut :

$ ./bash-script [file]

Jangan sampai lupa load text file yang berisi dari alamat dan port nya ya.

Bagaimana menarik kah, baiklah semoga bermanfaat :)

Share:

Rabu, 20 September 2023

Offline Upgrade RHEL Version (Red Hat Enterprise Linux)

Halo Guys.. Sebagai Tukang Server A.K.A System Administrator melakukan upgrade version dari Software, Aplikasi, ataupun Operating System yang ada pada server merupakan bagian dari kerjaan pastinya. Pada umumnya untuk update versi kita hanya perlu jaringan internet(online) lalu klik update, atau dengan jalankan command update.

Tapi percayalah fakta di lapangannya tidak semudah itu.. Terutama pada server production, ada beberapa server yang dibatasi koneksivitas-nya (Tampa internet, hanya dapat komunikasi ke beberapa IP saja). Artinya untuk proses upgrade ini harus full offline.

Ok jadi pada tulisan kali ini, kita akan bahas cara upgarade secara full offline.

--
Skenario :
  • Upgrade RHEL 7 (Maipo) to RHEL 8 (Ootpa)
  • Akses Root
--
(RHEL 7 - Before Instalation)

Let's Roll !

1. Persiapan Library & Package files yang dibutuhkan untuk instalasi, kalian bisa download terlebih dahulu pada laptop kalian.
    1.1 Download Library & Packages yang dibutuhkan :
leapp-upgrade-el7toel8
audit
audit-libs
audit-libs-python                     
checkpolicy               
dnf
dnf-data
json-glib                                            
leapp                                     
leapp-deps
leapp-upgrade-el7toel8-deps
libcgroup
libcomps
libdnf
libmodulemd
librepo
libreport-filesystem
librhsm
libsemanage-python
libsolv
libyaml
pciutils
policycoreutils
policycoreutils-python
python-IPy
python-chardet
python-enum34
python-requests
python-urllib3
python2-dnf
python2-hawkey
python2-leapp
python2-libcomps
python2-libdnf
setools-libs

Download files tersebut pada halaman berikut :

(Download Page - Gunakan Fungsi Search)

    1.2 Files ISO RHEL :
Download files tersebut pada halaman berikut : https://access.redhat.com/downloads/content/rhel
Pilih "Red Hat Enterprise Linux Binary DVD"

Pastikan semua file yang sudah siap, lalu kirim menggunakan SCP ke dalam target server yang akan kita upgrade.
(Persiapan Files)
Pada tutorial ini terdapat folder "UpgradeOS" yang berisi folder "Packages" dan "file .ISO RHEL".


2. Install Secara Offline leapp, packages, dan library yang dibutuhkan.
    Masuk ke dalam folder "Packages", lalu masukan command berikut :

# yum localinstall *



3. Preupgrade
seteleh melakukan instalasi di atas, kita dapat menggunakan aplikasi leapp. Sebelum melakukan upgrade, ada baiknya kita melakukan persiapan & checklist dengan menggunakan command berikut :

# leapp preupgrade --no-rhsm --iso /root/UpgradeOS/rhel-8.8-x86_64-dvd.iso

Command ini akan melakukan check-list before upgrade, Karena pasti ada beberapa hal yang berbeda antara RHEL 7 dan RHEL 8 dan kita harus melakukan penyesuaian sebelum upgrade. Seperti contoh di RHEL 7 mengunakan kata "eth0XX" (Ethernet) sedangkan di RHEL 8 mengunakan kata "enp0sXX" (Ethernet Network Peripheral Serial)


Kalau kita lihat keterangan error tersebut, terdapat 2 permasalahan yang harus diperbaiki.
1. Beberapa driver yang terinstall pada RHEL 7 mungkin sudah tidak terpakai pada RHEL 8. Solusinya harus di remove menggunakan command berikut :

# rmmod floppy # rmmod pata_acpi

Dan mungkin perlu rename nama interface seperti yang ta bilang di atas, pada file berikut :
/etc/udev/rules.d/70-persistent-net.rules
/etc/sysconfig/network-scripts/ifcfg-eth0
2. Butuh dokumen config berupa answer file. Solusinya bisa buat file tersebut dengan command berikut :
# leapp answer --section remove_pam_pkcs11_module_check.confirm=True
# leapp answer --section authselect_check.confirm=True

lalu ulangi command "leapp preupgrade", sampai kalian tidak menemukan error seperti gambar berikut :

(No Error Found, ready to Upgrade)

4. Ready to Upgrade
Jika kalian sudah yakin tidak ada error lagi, bisa lanjutkan ke command berikut :

# leapp upgrade --no-rhsm --iso /root/UpgradeOS/rhel-8.8-x86_64-dvd.iso

Jika berhasil kalian hanya tinggal reboot server, lihat gambar berikut :

(Ok, Selesai)

Sebenarnya untuk melakukan upgrade ini secara teori dari dokumentasi nya "Red Hat Technical Support" cukup menggunakan aplikasi "leapp" lalu load file .iso RHEL dari aplikasi leapp tersebut.

(RHEL 8 - After Instalation)

Tapi, Pada document tersebut kurang details, Seperti tidak ada tutorial cara install "leapp" dan library nya secara offline, patch leapp problem preupgrade, dlll 🤣. Tutorial ini tidak banyak ta temuin di internet khususnya yang bahasa indonesia. dan Semoga bermanfaat !

Share:

Jumat, 31 Maret 2023

Multi Threaded Ping with Bash

Ok, setelah posting'an sebelumnya ta bahas tentang bash mengenai tutorial execute single command langsung ke beberapa server, kalian bisa lihat dsini

https://blog.ridwan.tech/2023/01/simply-linux-command-for-manage-server.html

Sekarang, saya ingin bikin lagi tutorial untuk ping ke semua server/host/node hanya dengan menggunakan satu command. hal ini berguna banget untuk kita sebagai SysAdmin agar bisa melakukan pengecekan status server apakah online/down dengan cepat.

Yes, I know ini cara manual & tradiosional banget, Walaupun teknologi sekarang sudah banyak caranya seperti SNMP, Remote Log, API Push Notif, dan lain-lainnya. Tapi, cara manual ini tetap keren & terpakai sampai sekarang kok.. seperti kata pepatah "Old School Never Dies"


Ok, Cukup basa-basinya.. kita akan membuat 2 buah file, dengan nama bebas sesukanya kalian. 

Berikut, contoh Bash Script nya  

jadi script ini akan membaca file node.txt tersebut, lalu melakukan ping bedasarkan isi dari file node.txt tersebut. Jika ping berhasil status output nya "UP", Begitupun sebaliknya jika down. Kurang lebih seperti itu penjelasannya.

Jika script tersebut dijalankan hasilnya sepert ini

terdapat output dari command date, yang dapat mencetak tanggal aktual, jadi klo untuk dijadikan report juga ok.

Dan kalu ternyata isi dari node.txt kalian berisi sampai ratusan host/server. kalian bisa menambahkan command grep agar melihat hasil spesifik dari yg ingin kita cek.

Cukup sekian, catatan kali ini. Semoga bermanfaat.

See you next !!


Share:

Rabu, 11 Januari 2023

Multi Thread SSH Command for Manage Cluster Server


Ok, kali ini aku ingin sharing terkait pekerjaan ku sebagai “System Administrator”, sudah pasti kerjaan nya bermain dengan server, dan tidak hanya satu server.

**Ilustrasi ruang server, 

Sometimes, aku melakukan configure suatu services/daemon di beberapa server sekaligus, walapun command nya copy-paste,  Tapi tetep memerlukan waktu sebab harus login SSH ke satu-persatu server, melahkan bukan kan ?  Belum lagi saat kita lupa, Sudah sampai di server ke-berapa yang sudah kita config.

Bedasarkan kasus tersebut, aku coba belajar lagi lebih dalam terntang bash, dan menghasilkan hal berikut yang dapat mempersingkat waktu & pekerjaan untuk memanage banyak server, satu command dapat efek semua server :

**check services di semua server

**Check version Java, di semua server

**Check Services SELinux

**Check IP Address semua server

Dan bisa juga untuk copy file menggunakan scp (Secure Copy)  ke semua server sekaligus, dengan satu command saja.

**Copy testfile ke semua server

Satu command, bisa remote semua server sekaligus, Ajaib..kan!

Ok, Bagaimana caranya ?

Kuncinya ada di ssh authorized_keys & file server.txt

ssh authorized_keys di pakai agar login ke server tujuan tampa perlu input password lagi, tutorial nya banyak di google “How to Set Up SSH Passwordless” .

lalu file server.txt, ini berisi alamat server yang digunakan untuk scripting bash symbol i menjadi {i} untuk input alamat server pada command ssh.

** ini contoh isi dari dalam file tersebut.

Ok, kita bahas dikit command nya.

# for i in `cat server.txt`; do ssh root@${i} "Try Linux command"; done

Jad command ini akan membaca isi dari file “server.txt” lalu membaca setiap isi dari alamat IP server pada file tersebut, kemudian melakukan ssh ke user root dengan alamat {i} yang diambil dari dalam file tersebut. Kurang lebih begitu penjelasan nya.

Contoh beberapa command yang sering dipakai oleh banyak orang :

Check status SELinux
# for i in `cat server.txt`; do ssh root@${i} "hostname  && sestatus"; done

Check IP Address
# for i in `cat server.txt`; do ssh root@${i} "hostname  && ip a | grep inet"; done

Installasi Package
# for i in `cat server.txt`; do ssh root@${i} "yum -y install java-1.8.0-openjdk*"; done

Lalu kita juga bisa melakukan scp / copy file ke semua server

# for i in `cat server.txt`; do scp TestFile root@${i}:TestFile; done
# for i in `cat server.txt`; do scp /Folder/TestFile root@${i}:/Folder/TestFile; done


Selebihnya mungkin kalian bisa kembangkan sendiri.. sesuai dengan kebutuhan kalian,

Ok, sekian catatan kali ini. Terima Kasih.

 

Share:

Jumat, 30 Desember 2022