Cara Memantau Penggunaan Sistem, Pemadaman, dan Memecahkan Masalah Server Linux - Bagian 9


Meskipun Linux sangat dapat diandalkan, administrator sistem yang bijaksana harus menemukan cara untuk mengawasi perilaku dan pemanfaatan sistem setiap saat. Memastikan waktu aktif mendekati 100% dan ketersediaan sumber daya merupakan kebutuhan penting di banyak lingkungan. Memeriksa status sistem di masa lalu dan saat ini akan memungkinkan kita memperkirakan dan kemungkinan besar mencegah kemungkinan masalah.

Memperkenalkan Program Sertifikasi Linux Foundation

Pada artikel ini kami akan menyajikan daftar beberapa alat yang tersedia di sebagian besar distribusi upstream untuk memeriksa status sistem, menganalisis pemadaman, dan memecahkan masalah yang sedang berlangsung. Secara khusus, dari sekian banyak data yang tersedia, kami akan fokus pada CPU, penggunaan ruang penyimpanan dan memori, manajemen proses dasar, dan analisis log.

Pemanfaatan Ruang Penyimpanan

Ada 2 perintah terkenal di Linux yang digunakan untuk memeriksa penggunaan ruang penyimpanan: df dan du.

Yang pertama, df (yang merupakan singkatan dari disk free), biasanya digunakan untuk melaporkan penggunaan ruang disk secara keseluruhan berdasarkan sistem file.

Contoh 1: Melaporkan penggunaan ruang disk dalam byte dan format yang dapat dibaca manusia

Tanpa opsi, df melaporkan penggunaan ruang disk dalam byte. Dengan tanda -h maka informasi yang sama akan ditampilkan dengan menggunakan MB atau GB. Perhatikan bahwa laporan ini juga mencakup ukuran total setiap sistem file (dalam blok 1-K), ruang kosong dan tersedia, serta titik pemasangan setiap perangkat penyimpanan.

df
df -h

Hal ini tentu saja bagus – namun ada batasan lain yang dapat membuat sistem file tidak dapat digunakan, yaitu kehabisan inode. Semua file dalam sistem file dipetakan ke inode yang berisi metadatanya.

Contoh 2: Memeriksa penggunaan inode oleh sistem file dalam format yang dapat dibaca manusia dengan
df -hTi

Anda dapat melihat jumlah inode yang digunakan dan tersedia:

Berdasarkan gambar di atas, terdapat 146 inode yang digunakan (1%) di /home, yang berarti Anda masih dapat membuat 226 ribu file dalam sistem file tersebut.

Contoh 3: Mencari dan/atau menghapus file dan direktori kosong

Perhatikan bahwa Anda bisa kehabisan ruang penyimpanan jauh sebelum kehabisan inode, dan sebaliknya. Oleh karena itu, Anda perlu memantau tidak hanya pemanfaatan ruang penyimpanan tetapi juga jumlah inode yang digunakan oleh sistem file.

Gunakan perintah berikut untuk menemukan file atau direktori kosong (yang menempati 0B) yang menggunakan inode tanpa alasan:

find  /home -type f -empty
find  /home -type d -empty

Selain itu, Anda juga dapat menambahkan tanda -delete di akhir setiap perintah jika Anda juga ingin menghapus file dan direktori kosong tersebut:

find  /home -type f -empty --delete
find  /home -type f -empty

Prosedur sebelumnya menghapus 4 file. Mari kita periksa kembali jumlah node yang digunakan/tersedia di/home:

df -hTi | grep home

Seperti yang Anda lihat, ada 142 inode yang digunakan saat ini (4 lebih sedikit dari sebelumnya).

Contoh 4: Memeriksa penggunaan disk berdasarkan direktori

Jika penggunaan sistem file tertentu di atas persentase yang telah ditentukan, Anda dapat menggunakan du (kependekan dari penggunaan disk) untuk mengetahui file apa saja yang paling banyak menempati ruang.

Contoh diberikan untuk /var, yang seperti Anda lihat pada gambar pertama di atas, digunakan sebesar 67%.

du -sch /var/*

Catatan: Anda dapat beralih ke salah satu subdirektori di atas untuk mengetahui secara pasti apa yang ada di dalamnya dan berapa banyak yang ditempati setiap item. Anda kemudian dapat menggunakan informasi tersebut untuk menghapus beberapa file jika tidak diperlukan atau memperluas ukuran volume logis jika perlu.

Baca Juga

  1. 12 Perintah “df” yang Berguna untuk Memeriksa Ruang Disk
  2. 10 Perintah “du” yang Berguna untuk Menemukan Penggunaan Disk pada File dan Direktori

Memori dan Pemanfaatan CPU

Alat klasik di Linux yang digunakan untuk melakukan pemeriksaan keseluruhan penggunaan CPU/memori dan manajemen proses adalah perintah teratas. Selain itu, bagian atas menampilkan tampilan real-time dari sistem yang sedang berjalan. Ada alat lain yang dapat digunakan untuk tujuan yang sama, seperti htop, tapi saya memilih yang teratas karena sudah diinstal langsung di distribusi Linux mana pun.

Contoh 5: Menampilkan status langsung sistem Anda dengan top

Untuk memulai dari atas, cukup ketik perintah berikut di baris perintah Anda, dan tekan Enter.

top

Mari kita periksa keluaran teratas yang umum:

Pada baris 1 sampai 5 informasi berikut ditampilkan:

1. Waktu saat ini (20:41:32) dan waktu aktif (7 jam 41 menit). Hanya satu pengguna yang masuk ke sistem, dan beban rata-rata masing-masing selama 1, 5, dan 15 menit terakhir. 0,00, 0,01, dan 0,05 menunjukkan bahwa selama interval waktu tersebut, sistem menganggur selama 0% (0,00: tidak ada proses yang menunggu CPU), kemudian kelebihan beban sebesar 1% (0,01: rata-rata 0,01 proses sedang menunggu CPU) dan 5% (0,05). Jika kurang dari 0 dan semakin kecil angkanya (0,65, misalnya), sistem menganggur sebesar 35% selama 1, 5, atau 15 menit terakhir, tergantung di mana 0,65 muncul.

2. Saat ini ada 121 proses yang berjalan (Anda dapat melihat daftar lengkapnya di 6). Hanya 1 dari mereka yang berjalan (dalam hal ini teratas, seperti yang Anda lihat di kolom %CPU) dan 120 sisanya menunggu di latar belakang tetapi sedang “tidur” dan akan tetap dalam keadaan itu sampai kita memanggil mereka. Bagaimana? Anda dapat memverifikasi ini dengan membuka prompt mysql dan menjalankan beberapa pertanyaan. Anda akan melihat bagaimana jumlah proses yang berjalan meningkat.

Alternatifnya, Anda dapat membuka browser web dan menavigasi ke halaman tertentu yang dilayani oleh Apache dan Anda akan mendapatkan hasil yang sama. Tentu saja, contoh-contoh ini mengasumsikan bahwa kedua layanan diinstal di server Anda.

3. us (waktu menjalankan proses pengguna dengan prioritas yang tidak diubah), sy (waktu menjalankan proses kernel), ni (waktu menjalankan proses pengguna dengan prioritas diubah), wa (waktu menunggu penyelesaian I/O), hi (waktu yang dihabiskan untuk melayani interupsi perangkat keras), si (waktu yang dihabiskan untuk melayani interupsi perangkat lunak), st (waktu yang dicuri dari vm saat ini oleh hypervisor – hanya di lingkungan tervirtualisasi).

4. Penggunaan memori fisik.

5. Tukar penggunaan ruang.

Contoh 6: Memeriksa penggunaan memori fisik

Untuk memeriksa memori RAM dan penggunaan swap Anda juga dapat menggunakan perintah free.

free

Tentu saja Anda juga dapat menggunakan tombol -m (MB) atau -g (GB) untuk menampilkan informasi yang sama dalam bentuk yang dapat dibaca manusia:

free -m

Apa pun pilihannya, Anda perlu menyadari fakta bahwa kernel mencadangkan memori sebanyak mungkin dan menyediakannya untuk proses ketika mereka memintanya. Khususnya, baris “-/+ buffers/cache” menunjukkan nilai sebenarnya setelah cache I/O ini diperhitungkan.

Dengan kata lain, jumlah memori yang digunakan oleh proses dan jumlah yang tersedia untuk proses lain (dalam hal ini, masing-masing 232 MB digunakan dan 270 MB tersedia). Ketika proses memerlukan memori ini, kernel secara otomatis akan mengurangi ukuran cache I/O.

Baca Juga: 10 Perintah “gratis” yang Berguna untuk Memeriksa Penggunaan Memori Linux

Melihat Lebih Dekat Prosesnya

Pada waktu tertentu, ada banyak proses yang berjalan di sistem Linux kita. Ada dua alat yang akan kita gunakan untuk memantau proses secara dekat: ps dan pstree.

Contoh 7: Menampilkan seluruh daftar proses di sistem Anda dengan ps (format standar lengkap)

Dengan menggunakan opsi -e dan -f yang digabungkan menjadi satu (-ef), Anda dapat membuat daftar semua proses yang sedang berjalan di sistem Anda. Anda dapat menyalurkan keluaran ini ke alat lain, seperti grep (seperti yang dijelaskan di Bagian 1 seri LFCS) untuk mempersempit keluaran ke proses yang Anda inginkan:

ps -ef | grep -i squid | grep -v grep

Daftar proses di atas menunjukkan informasi berikut:

pemilik proses, PID, PID Induk (proses induk), pemanfaatan prosesor, waktu dimulainya perintah, tty (tanda ? menunjukkan bahwa itu adalah daemon), waktu CPU yang terakumulasi, dan perintah yang terkait dengan proses tersebut.

Contoh 8: Menyesuaikan dan mengurutkan keluaran ps

Namun, mungkin Anda tidak memerlukan semua informasi tersebut, dan ingin menunjukkan pemilik proses, perintah yang memulainya, PID dan PPID-nya, serta persentase memori yang sedang digunakan – dalam urutan tersebut, dan urutkan berdasarkan penggunaan memori dalam urutan menurun (perhatikan bahwa ps secara default diurutkan berdasarkan PID).

ps -eo user,comm,pid,ppid,%mem --sort -%mem

Dimana tanda minus di depan %mem menunjukkan pengurutan dalam urutan menurun.

Jika karena alasan tertentu suatu proses mulai mengambil terlalu banyak sumber daya sistem dan kemungkinan membahayakan fungsionalitas sistem secara keseluruhan, Anda sebaiknya menghentikan atau menjeda eksekusinya dengan meneruskan salah satu sinyal berikut menggunakan program kill ke proses tersebut. Alasan lain mengapa Anda mempertimbangkan untuk melakukan hal ini adalah ketika Anda telah memulai proses di latar depan tetapi ingin menjedanya dan melanjutkannya di latar belakang.

Signal name Signal number Description
 SIGTERM 15  Kill the process gracefully.
 SIGINT 2  This is the signal that is sent when we press Ctrl + C. It aims to interrupt the process, but the process may ignore it.
 SIGKILL 9  This signal also interrupts the process but it does so unconditionally (use with care!) since a process cannot ignore it.
 SIGHUP 1  Short for “Hang UP”, this signals instructs daemons to reread its configuration file without actually stopping the process.
 SIGTSTP 20  Pause execution and wait ready to continue. This is the signal that is sent when we type the Ctrl + Z key combination.
 SIGSTOP 19  The process is paused and doesn’t get any more attention from the CPU cycles until it is restarted.
 SIGCONT 18  This signal tells the process to resume execution after having received either SIGTSTP or SIGSTOP. This is the signal that is sent by the shell when we use the fg or bg commands.
Contoh 9: Menjeda eksekusi proses yang sedang berjalan dan melanjutkannya di latar belakang

Ketika eksekusi normal suatu proses tertentu menyiratkan bahwa tidak ada keluaran yang dikirim ke layar saat sedang berjalan, Anda mungkin ingin memulainya di latar belakang (menambahkan ampersand di akhir perintah).

process_name &

atau,
Setelah mulai berjalan di latar depan, jeda dan kirimkan ke latar belakang

Ctrl + Z
kill -18 PID

Contoh 10: Membunuh dengan paksa suatu proses yang “menjadi liar”

Harap dicatat bahwa setiap distribusi menyediakan alat untuk menghentikan/memulai/memulai ulang/memuat ulang layanan umum dengan baik, seperti layanan di sistem berbasis SysV atau systemctl di sistem berbasis systemd.

Jika suatu proses tidak merespons utilitas tersebut, Anda dapat mematikannya secara paksa dengan mengirimkan sinyal SIGKILL ke proses tersebut.

ps -ef | grep apache
kill -9 3821

Jadi.. Apa yang Terjadi/Sedang Terjadi?

Ketika terjadi gangguan apa pun pada sistem (baik itu pemadaman listrik, kegagalan perangkat keras, gangguan proses yang terencana atau tidak terencana, atau kelainan apa pun), log masuk /var/log adalah teman terbaik Anda untuk menentukan apa yang terjadi atau apa yang menyebabkan masalah yang Anda hadapi.

cd /var/log

Beberapa item di /var/log adalah file teks biasa, yang lain adalah direktori, dan yang lainnya adalah file terkompresi dari log yang diputar (historis). Anda mungkin ingin memeriksa yang memiliki kata error di namanya, tetapi memeriksa sisanya juga bisa berguna.

Contoh 11: Memeriksa log untuk menemukan kesalahan dalam proses

Bayangkan skenario ini. Klien LAN Anda tidak dapat mencetak ke printer jaringan. Langkah pertama untuk memecahkan masalah ini adalah pergi ke direktori /var/log/cups dan lihat apa yang ada di sana.

Anda dapat menggunakan perintah tail untuk menampilkan 10 baris terakhir file error_log, atau tail -f error_log untuk melihat log secara real-time.

cd /var/log/cups
ls
tail error_log

Tangkapan layar di atas memberikan beberapa informasi berguna untuk memahami apa yang menyebabkan masalah Anda. Perhatikan bahwa mengikuti langkah-langkah atau memperbaiki proses yang tidak berfungsi mungkin masih belum menyelesaikan masalah secara keseluruhan, namun jika Anda sudah terbiasa sejak awal untuk memeriksa log setiap kali masalah muncul (baik masalah lokal atau jaringan) Anda pasti akan berada di jalur yang benar.

Contoh 12: Memeriksa log untuk kegagalan perangkat keras

Meskipun kegagalan perangkat keras mungkin sulit untuk dipecahkan, Anda harus memeriksa dmesg dan log pesan serta mencari kata-kata terkait dengan bagian perangkat keras yang dianggap rusak.

Gambar di bawah ini diambil dari /var/log/messages setelah mencari kata error dengan menggunakan perintah berikut:

less /var/log/messages | grep -i error

Kita dapat melihat bahwa kita mengalami masalah dengan dua perangkat penyimpanan: /dev/sdb dan /dev/sdc, yang selanjutnya menyebabkan masalah dengan array RAID.

Kesimpulan

Dalam artikel ini kami telah menjelajahi beberapa alat yang dapat membantu Anda untuk selalu mengetahui status sistem Anda secara keseluruhan. Selain itu, Anda perlu memastikan bahwa sistem operasi dan paket yang Anda instal diperbarui ke versi stabil terbaru. Dan jangan pernah lupa memeriksa log! Kemudian Anda akan diarahkan ke arah yang benar untuk menemukan solusi pasti atas masalah apa pun.

Jangan ragu untuk meninggalkan komentar, saran, atau pertanyaan Anda -jika ada- menggunakan formulir di bawah ini.