- Jika Anda baru mulai memasang alat diagnosis setelah gangguan performa terjadi, waktu akan habis untuk persiapan alih-alih pemulihan, jadi alat manajemen krisis perlu dimasukkan terlebih dahulu ke image server Linux
- Daftar yang disarankan mencakup procps, util-linux, sysstat, iproute2, tcpdump, perf, bcc/bpftrace, trace-cmd, ethtool, dan lainnya; ini adalah paket minimum untuk segera memeriksa CPU, disk, jaringan, dan penelusuran kernel
- bcc dan bpftrace memiliki banyak alat yang tumpang tindih, tetapi bcc kaya opsi CLI sementara bpftrace mudah diedit di lapangan; saat dijalankan, keduanya mengeluarkan bytecode BPF yang sama
- Instalasi saat gangguan dapat menyebabkan kehilangan puluhan menit karena variabel seperti SSH yang lambat, konfigurasi apt yang rusak, repositori yang diblokir, firewall, filesystem immutable, dan error izin
- Biayanya terutama berupa kapasitas disk dan waktu distribusi image, tetapi sebagian besar paket yang disarankan berukuran kecil; jika disertakan secara default dalam distro Linux enterprise, respons terhadap gangguan performa dapat dimulai lebih cepat
Alat minimum yang perlu disiapkan sebelum gangguan
- Ketika gangguan performa terjadi, waktu untuk memasang alat yang dibutuhkan guna mendiagnosis penyebabnya sendiri menjadi kerugian, jadi lebih aman memasang alat manajemen krisis secara default di server Linux
- Daftar ini didasarkan pada tabel “Linux Crisis Tools” dari Systems Performance 2nd Edition
- Alat yang direkomendasikan berdasarkan paket Ubuntu adalah sebagai berikut
procps:ps,vmstat,uptime,top- Memeriksa statistik dasar
util-linux:dmesg,lsblk,lscpu- Memeriksa log sistem dan informasi perangkat
sysstat:iostat,mpstat,pidstat,sar- Memeriksa statistik perangkat dan sistem
iproute2:ip,ss,nstat,tc- Alat jaringan yang disukai
numactl:numastat- Memeriksa statistik NUMA
tcpdump:tcpdump- Sniffing jaringan
linux-tools-common,linux-tools-$(uname -r):perf,turbostat- Memeriksa profiler dan statistik PMU
bpfcc-toolsatau bcc:opensnoop,execsnoop,runqlat,softirqs,hardirqs,ext4slower,ext4dist,biotop,biosnoop,biolatency,tcptop,tcplife,trace,argdist,funccount,profile, dan lainnya- Alat eBPF yang sudah dibuat sebelumnya
bpftrace:bpftrace, versi dasar dariopensnoop,execsnoop,runqlat,biosnoop, dan lainnya- Scripting eBPF
trace-cmd:trace-cmd- CLI Ftrace
nicstat:nicstat- Statistik perangkat jaringan
ethtool:ethtool- Informasi perangkat jaringan
tiptop:tiptop- PMU/PMC top
cpuid:cpuid- Detail CPU
msr-tools:rdmsr,wrmsr- Pemeriksaan detail CPU
Cara melihat bcc dan bpftrace bersama-sama
- bcc dan bpftrace memiliki banyak alat yang tumpang tindih, tetapi titik penggunaannya yang nyaman berbeda
- Alat bcc memiliki lebih banyak fitur seperti opsi CLI, sehingga nyaman digunakan seperti alat yang sudah jadi
- Alat bpftrace dapat langsung diedit di lapangan, sehingga mudah disesuaikan dengan situasi
- Ini tidak berarti salah satunya lebih cepat
- Kedua alat mengeluarkan bytecode BPF yang sama
- Saat berjalan, keduanya sama cepatnya
- bcc sedang berevolusi ke arah memindahkan alat berbasis Python ke libbpf C
- Menggunakan CO-RE dan BTF
- Paketnya belum dikerjakan ulang
- Ke depannya,
bpfcc-toolsseharusnya digantikan oleh paketlibbpf-toolsyang lebih kecil dan hanya berisi binary alat
Alat tambahan yang dibutuhkan tergantung jenis server
- Daftar di atas hanyalah daftar minimum
- Jika server memiliki akselerator, alat untuk menganalisis perangkat tersebut juga harus disertakan
- Server Intel GPU:
intel-gpu-tools - Server NVIDIA:
nvidia-smi
- Server Intel GPU:
- Alat debugging seperti
gdbjuga dapat dipasang terlebih dahulu jika ingin langsung menggunakannya saat krisis - Alat analisis penting tidak sering berubah, jadi daftar ini mungkin cukup diperbarui beberapa tahun sekali
Biaya nyata dari instalasi default
- Kekurangan yang paling pertama terlihat saat menambahkan paket adalah penggunaan disk
- Pada instance cloud, penambahan beberapa MB saja pada image server default dapat menambah waktu deployment instance beberapa detik atau sepersekian detik
- Sebagian besar paket yang direkomendasikan berukuran kecil, dan bcc juga direncanakan menjadi lebih kecil, sehingga biaya kapasitas dan waktu seharusnya tidak besar
- debuginfo totalnya mencapai sekitar 1GB, sehingga memang pernah ada kekhawatiran kapasitas yang menghalangi penyertaannya secara default
Alur saat instalasi terhambat di tengah gangguan
- Jika Anda mencoba memasang alat setelah gangguan terjadi, waktu bisa tersedot untuk menyelesaikan masalah instalasi alih-alih diagnosis
- Contoh alurnya sebagai berikut
- 4:00pm: Situs perusahaan down atau terlalu lambat untuk digunakan
- 4:01pm: Dashboard monitoring menunjukkan grup server backend tidak normal, dan I/O disk yang tinggi dicurigai
- 4:02pm: Mencoba mengakses server melalui SSH, tetapi login sangat lambat
- 4:03pm: Mencoba menjalankan
iostat -xz 1, tetapiiostattidak ada, dan muncul panduan untuk memasangsysstat - 4:07pm: Instalasi paket gagal karena tidak dapat me-resolve repositori, dan masalah konfigurasi
/etc/aptterungkap - 4:10pm: Harus menjalankan
apt-get updatedengan konfigurasi yang sudah diperbaiki, tetapi prosesnya sangat lambat - 4:13pm: Terjadi timeout koneksi, sehingga koneksi repositori atau masalah performa dicurigai
- 4:17pm: Tim keamanan jaringan mengonfirmasi adanya trafik tak terduga dan bahwa permintaan apt outbound HTTP/HTTPS/FTP telah diblokir
- 4:20pm: Setelah firewall dinonaktifkan,
apt-get updateberhasil, tetapi saat instalasi muncul error izin - 4:24pm: Tim keamanan platform menjelaskan bahwa itu adalah sistem immutable yang memblokir penulisan ke sebagian filesystem, termasuk area binary executable
- 4:27pm: Tim SRE mengumumkan gangguan besar dan manajemen meminta pembaruan status serta ETA pemulihan, tetapi diagnosis sebenarnya hampir belum berjalan
- 4:30pm: Mencoba pengganti
iostatyang kasar dengancat /proc/diskstats, tetapi harus membaca dokumentasi Linux dan hanya mengonfirmasi fakta yang sudah diketahui bahwa disk sedang sibuk - 4:55pm: Image server baru dengan filesystem yang dapat ditulis sudah naik dan
sysstatdapat dipasang, tetapi situs kembali berjalan hanya karena server direstart; penyebabnya belum diperbaiki - 12:50am: Contoh berlanjut dengan situasi situs diretas akibat firewall dan keamanan filesystem dibiarkan mati
- Kejadian 12:50am bukan pengalaman nyata, tetapi sisanya adalah contoh berdasarkan pengalaman nyata
- Di tempat kerja sebelumnya, sekitar menit ke-15, ada kasus “traffic team” mulai melakukan failover region cloud, dan saat instalasi
iostatselesai, sistem target bisa saja sudah berada dalam keadaan idle
Alasan memasukkannya ke image default
- Skenario di atas menunjukkan betapa rapuhnya pendekatan memasang alat belakangan saat gangguan produksi sedang berlangsung
- Beberapa perusahaan sudah menggunakan image server kustom yang dibuat tim OS dengan menyertakan alat yang diperlukan
- Namun masih banyak situs yang menjalankan versi Linux default apa adanya, dan dalam kasus seperti ini kebutuhan tersebut baru disadari setelah mengalami gangguan
- Jika distro Linux enterprise menyertakan alat manajemen krisis ini secara default, perusahaan besar maupun kecil dapat langsung memulai diagnosis saat gangguan performa terjadi
1 komentar
Pendapat Hacker News
Daftar ini berguna. Dalam situasi ketika server itu sendiri sudah kacau, seperti kegagalan interpretasi repositori
apt, cloud sering kali cocokDaripada terus berkutat mencoba memperbaikinya, jika mesin dimatikan atau dikeluarkan dari pool lalu mesin baru dinyalakan, mesin dan aplikasi baru akan naik dengan bersih dan insiden selesai. Mesin bermasalah bisa diselidiki terpisah di luar hot path
Ini menjadi versi perangkat lunak dari “orang yang hanya mengganti komponen” di dunia fisik
Tidak semua server dikontainerisasi, tetapi cukup banyak yang berupa kontainer, dan itu punya kesulitannya sendiri
Alat debugging di dalam image Docker sering ditandai oleh pemindai keamanan otomatis sebagai “alat tidak perlu yang membantu penyerang mengamati dan mengubah perilaku sistem”. Ada kekhawatiran yang valid seperti
gdb, tetapi banyak juga yang tidakKarena itu, sebagian alat diletakkan di volume terpisah, sebisa mungkin sebagai binary statis, atau dikompilasi dan diinstal dengan path mount sebagai prefix instalasi. Jika perlu debugging, kami meminta tim operasi untuk melakukan mount sementara secara read-only
Selain itu, jika suatu alat debug mengharuskan fitur kernel tertentu diaktifkan, sering muncul pertanyaan dan kekhawatiran tentang dampaknya terhadap kontainer lain di host yang sama
Saya tidak begitu tahu skenario di mana kebijakan ini masuk akal selain “organisasi menggunakan pemindai keamanan dengan keliru”
Untuk memakai debugger, biasanya diperlukan banyak hal seperti izin
SYS_PTRACE, pengguna 0, dan flag seperti--privileged, jadi biasanya lebih baik menjalankan kontainer keduaDengan cara ini, kontainer produksi tidak perlu direstart, sehingga kemungkinan kehilangan bukti untuk reproduksi juga berkurang
Namun, tidak mudah mengingat prosedur ini dalam situasi insiden, jadi harus dicoba sebelumnya dan ditulis langkah demi langkah di runbook
Terkait hal itu, sejak FreeBSD 5.2, yaitu tahun 2004, semua sistem FreeBSD memiliki
/rescue/*Satu binary ber-link statis yang menggabungkan sekitar 150 alat inti di-hardlink dengan nama-nama biasa, dan ukurannya sekitar 17MB
https://man.freebsd.org/cgi/man.cgi?rescue
https://github.com/freebsd/freebsd-src/blob/main/rescue/resc...
Saat berada di Netflix, Brendan dan timnya memungkinkan pemasangan alat debugging seperti
bpftrace,bcc, danperfyang berfungsi normal di berbagai tempatAlat-alat itu menyelamatkan nyawa saya berkali-kali
Saya terkejut
stracetidak ada di daftar itu. Biasanya itu salah satu alat pertama yang saya ambilTerutama ketika program mengembalikan pesan error yang tidak berguna atau keliru,
stracebenar-benar bergunastraceboleh saja sebagai upaya terakhir, tetapi alternatif yang aman untuk produksi adalahperf tracedan alat tracing BPFhttps://www.brendangregg.com/blog/2014-05-11/strace-wow-much...
fuserdanlsofjuga bergunahttps://man7.org/linux/man-pages/man1/fuser.1.html
https://en.m.wikipedia.org/wiki/Lsof
Dalam wawancara untuk peran semacam SRE, alat-alat seperti ini selalu dibahas
Intinya bukan seberapa banyak kandidat menghafal perintah tertentu; kalau mereka memperkenalkan alat baru memang mengesankan, tetapi yang dilihat adalah apa yang mungkin dilakukan, alat apa saja yang ada, dan bagaimana menggunakannya
Yang penting adalah punya intuisi bahwa kita bisa menangkap dan menganalisis traffic jaringan, system call, profil eksekusi, serta memeriksa kondisi sistem operasi dan hardware
Jika dalam situasi krisis seperti ini pemasangan alat tidak memungkinkan, berbagai utilitas bisa dijalankan dengan Docker
Misalnya membangun kontainer dalam satu baris, menempelkannya ke jaringan host untuk menjalankan alat sejenis
netstat, atau me-mount/procdan menjalankan alat sistem sepertiiostat,sar,vmstat,mpstat,pidstatdengan--privileged,--net host,--pid hostTentu
yum installlebih baik, tetapi jika Docker bisa dipakai dan pemetaan yang diperlukan bisa ditangani, ini bisa menjadi alternatif. Pada konfigurasi rootless atau Podman, kemungkinan besar tidak akan berjalan baikapttidak bisa mengunduh dan memasang paket, tetapi Docker bisa menarik kontainer baru?Apakah mungkin kasusnya library
aptrusak atau semacamnya?busyboxmemuat lebih banyak alat seperti iniFile berukuran sekitar 1MB yang bisa diunggah ke server dan langsung dijalankan akan sangat membantu
Apakah semua orang mendapat akses root? Saya harus membuat tiket administrator sistem untuk melakukan apa pun
Ada baiknya menghafal nama petugas keamanan, orang-orang berjaket kaku yang memberi akses masuk gedung, dan menyiapkan kartu Starbucks
Bersikap sopan kepada petugas kebersihan dan menghafal nama mereka juga membuat meja saya bersih. Kadang-kadang tinggal sampai larut untuk mengenal orang-orang ini juga ada nilainya
Ada baiknya juga berteman dengan tim akuntansi. Jika minum kopi, makan siang, berbicara tentang hal selain pekerjaan, dan menunjukkan minat, orang-orang yang tepat akan memberi tahu ketika PHK datang atau dana perusahaan mulai cair
Bersikap baik juga kepada IT, yaitu orang-orang yang membagikan laptop dan mengelola email. Anda akan melihat seberapa cepat mereka mencabut alat keamanan omong kosong dari komputer Anda, dan seberapa jauh Anda maju dalam antrean upgrade
Yang paling penting adalah administrator sistem. Bukan hanya karena root, tetapi karena administrator sistem yang baik bisa coding namun tidak pernah mengatakannya keras-keras. Admin yang baik akan memberi tahu di sudut gelap mana ada mayat, dan apakah itu satu lemari atau kuburan massal. Jika Anda belajar membangun sesuai platform mereka, Anda akan mendapat jauh lebih banyak keleluasaan. Jika mereka meminta bantuan, turutilah
Tulisan ini ditujukan kepada orang-orang yang menjalankan aplikasi di atas infrastruktur yang disediakan IT. Jika harus berinteraksi seperti contoh itu, itu bukan masalah teknis, melainkan kegagalan organisasi
Kami punya jalur komunikasi yang sangat jelas dan dapat dipercaya, dan orang bergerak bersama pengembangan, operasi, keamanan, serta compliance lewat telepon, bukan chat—atau sekarang mungkin di tempat seperti Teams
Dalam praktiknya, setiap tim setidaknya punya kontak penghubung, dan biasanya developer menjalankan aplikasi di atas resource yang disediakan tim operasi. Compliance menyetujui konfigurasi, dan keandalan layanan adalah pekerjaan pengembangan. Jika DevOps dilakukan dalam arti seperti ini, banyak masalah hilang
Saya tidak melihat
nmap,netstat,nc. Alat-alat ini juga menyelamatkan saya berkali-kaliKalau menambahkan satu saja, itu adalah
nmapMasalah koneksi jaringan tidak selalu tampak jelas di beberapa aplikasi
screen,tmux,byobu,pv,rsync, dan tentu sajavimjuga diperlukan