GNU/Linux >> Belajar Linux >  >> Linux

Memecahkan masalah dan memantau kinerja sistem Linux dengan nmon

Monitor Nigel (nmon ) adalah alat pemantauan kinerja sistem yang awalnya dikembangkan oleh IBM untuk sistem operasi AIX dan kemudian di-porting untuk Linux pada beberapa arsitektur CPU.

Manfaat utama nmon adalah memungkinkan Anda untuk memantau berbagai aspek sistem Anda, seperti penggunaan CPU, memori, kesibukan disk, penggunaan jaringan, dan banyak lagi, dalam satu tampilan yang ringkas. Tanpa nmon , Anda harus menggunakan alat pemantauan khusus seperti top untuk proses, iostat untuk disk, dan ifstat untuk jaringan untuk memantau berbagai sumber daya. Masing-masing menyajikan data secara berbeda.

Saya menggunakan nmon untuk pertama kalinya sekitar 10 tahun yang lalu sebagai sysadmin AIX. Dengan menggunakan nmon , saya dapat memecahkan beberapa masalah yang sulit dikenali, termasuk masalah yang awalnya tampak seperti kemacetan jaringan. Dengan memeriksa beberapa sumber daya secara bersamaan menggunakan nmon , saya menemukan itu adalah masalah aplikasi yang disebabkan oleh terlalu banyak membuka file.

Selain memantau sistem Anda secara interaktif, Anda juga dapat menggunakan nmon dalam mode batch untuk mengumpulkan dan menyimpan data kinerja untuk analisis. Untuk informasi lebih lanjut tentang nmon untuk Linux, lihat halaman resmi proyek.

Artikel ini membahas alat pemantauan yang kuat ini. Mulailah dengan menginstalnya.

Instal nmon

nmon tersedia di repositori default dari banyak distribusi Linux. Misalnya, gunakan DNF untuk menginstalnya di Fedora 35:

$ sudo dnf -y install nmon

Untuk Red Hat Enterprise Linux atau CentOS, nmon tersedia di repositori Extra Packages for Enterprise Linux (EPEL).

Untuk menginstal nmon , pertama-tama aktifkan EPEL:

$ sudo dnf -y install \
https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

$ sudo dnf repolist

Kemudian instal nmon menggunakan dnf :

$ sudo dnf -y install nmon

Sekarang Anda telah menginstal nmon , gunakan untuk memantau sistem Anda.

Gunakan nmon secara interaktif

Dengan aplikasi yang terinstal, Anda dapat memantau sistem Anda secara interaktif dengan menjalankan nmon . Anda disajikan dengan layar awal yang berisi informasi sistem dan sedikit menu bantuan, menampilkan tombol mana yang dapat Anda tekan untuk beralih metrik yang berbeda:

$ nmon

┌─16k──[H for help]──Hostname=f35ks01─Refresh= 2secs ─18:04:27────┐
│                                                                 │
│------------------------------                                   │
│ _ __  _ __ ___   ___  _ __    For help type H or ...            │
│| '_ \| '_ ` _ \ / _ \| '_ \    nmon -?  - hint                  │
│| | | | | | | | | (_) | | | |   nmon -h  - full details          │
│|_| |_|_| |_| |_|\___/|_| |_|                                    │
│                               To stop nmon type q to Quit       │
│------------------------------                                   │
│                                                                 │
│Fedora release 35 (Thirty Five) VERSION="35 (Thirty Five)"       │
│Vendor=AuthenticAMD Model=AMD EPYC-Milan Processor               │
│MHz=1911.004 bogomips=3822.00     lscpu:CPU=4 Little Endian      │
│ProcessorChips=4 PhysicalCores=1        Sockets=4 Cores=1 Thrds=1│
│                 VirtualCPUs =4         MHz=0 max=0 min=0        │
│                                                                 │
│Use these keys to toggle statistics on/off:                      │
│  c = CPU         l = CPU Long-term     - = Faster screen updates│
│  C = " WideView  U = Utilisation       + = Slower screen updates│
│  m = Memory      V = Virtual memory    j = File Systems         │
│  d = Disks       n = Network           . = only busy disks/procs│
│  r = Resource    N = NFS               h = more options         │
│  k = Kernel      t = Top-processes     q = Quit                 │
│─────────────────────────────────────────────────────────────────│

Misalnya, menekan C mengaktifkan tampilan penggunaan CPU:

┌─16k──[H for help]──Hostname=f35ks01─Refresh= 2secs ─18:05:58─┐
│ CPU Utilisation ─────────────────────────────────────────────│
│---------------------------+---------------------------------+│
│CPU User%  Sys% Wait%  Idle|0          |25   |50 |75   100|   │
│  1   3.6  17.2   0.0  79.2|Ussssssss>                    |   │
│  2   2.1   6.2   0.0  91.7|Usss    >                     |   │
│  3   0.0   1.1   0.0  98.9| >                            |   │
│  4   6.1  17.2   0.0   0.5|UUUssssssss>                  |   │
│---------------------------+---------------------------------+│
│Avg   3.0  10.3   0.0  86.7|Usssss>                       |   │
│---------------------------+---------------------------------+│
│──────────────────────────────────────────────────────────────│

Menekan N mengaktifkan tampilan jaringan dan secara otomatis menumpuknya di bawah tampilan CPU:

┌─16k──[H for help]──Hostname=f35ks01─Refresh= 2secs ─18:17:01─┐
│ CPU Utilisation ─────────────────────────────────────────────│
│---------------------------+---------------------------------+│
│CPU User%  Sys% Wait%  Idle|0         |25    |50  |75  100|   │
│  1   2.6  10.3   0.0  87.1|Usssss     >                  |   │
│  2   0.0   2.2   0.0  97.8|s           >                 |   │
│  3   6.5  11.0   0.0  82.5|UUUsssss>                     |   │
│  4   0.0   0.5   0.0  99.5|               >              |   │
│---------------------------+---------------------------------+│
│Avg   2.4   5.9   0.0  91.6|Uss     >                     |   │
│---------------------------+---------------------------------+│
│ Network I/O ─────────────────────────────────────────────────│
│I/F Name Recv=KB/s Trans=KB/s p_in p_out in_sz out_sz Peak->..│
│      lo      0.0       0.0       0.0    0.0     0.0    0.0...│
│  enp1s0      0.0       0.0       0.5    0.0    52.0    0.0...│
│  enp7s0    218.6    5923.4    3335.5 9989.68   67.1  607.2...│
│ Network Error Counters ──────────────────────────────────────│
│I/F Name iErrors iDrop iOverrun iFrame oErrors   oDrop oOver..│
│      lo       0       0       0       0       0       0   ...│
│  enp1s0       0   34419       0       0       0       0   ...│
│  enp7s0       0   34419       0       0       0       0   ...│
│──────────────────────────────────────────────────────────────│

Terus tekan tombol lain untuk menumpuk metrik tambahan dalam tampilan yang sama. Misalnya, gunakan D untuk I/O Disk, M untuk Memori, dan T untuk proses Teratas.

Selain menumpuk monitor baru, Anda juga dapat menekan tombol titik atau titik (.) untuk hanya menampilkan CPU dan disk yang sibuk, serta + dan - untuk menambah atau mengurangi waktu refresh layar. Gunakan H untuk menampilkan bantuan.

Karena Anda dapat mengaktifkan dan menonaktifkan monitor dan metrik yang berbeda kapan saja, nmon adalah alat yang sangat fleksibel yang membantu Anda memahami perilaku sistem Anda. Ini juga membantu memecahkan masalah dengan menampilkan metrik yang berbeda secara bersamaan, memberikan pandangan menyeluruh tentang sistem dan meningkatkan kemampuan Anda untuk memahami masalah.

Setelah selesai, tekan Q untuk keluar dan mengakhiri sesi pemantauan.

Kumpulkan data kinerja

Selain memberikan tampilan holistik dan interaktif dari sistem Anda, Anda juga dapat menjalankan nmon dalam mode batch untuk mengumpulkan data kinerja jangka panjang dari sistem Anda untuk analisis posterior.

Fitur ini memungkinkan Anda untuk memahami bagaimana sistem Anda berperilaku selama periode yang lebih lama, selain metrik waktu nyata yang disediakan oleh mode interaktif. Ini adalah fitur canggih yang memungkinkan perencanaan kapasitas dan peluang untuk memecahkan masalah sporadis yang sulit ditangkap secara langsung.

Untuk menjalankan nmon secara batch, gunakan flag -f saat meluncurkan aplikasi. Itu harus menjadi parameter pertama yang disediakan. Secara default, nmon mengumpulkan data setiap lima menit selama satu hari. Anda dapat mengubah nilai default ini dengan menentukan parameter -s untuk interval pengumpulan dan -c untuk jumlah snapshot.

Misalnya, untuk mengaktifkan nmon dalam mode batch, mengumpulkan data setiap menit selama satu jam, termasuk menangkap proses teratas -t , jalankan perintah ini:

$ nmon -f -s60 -c60 -t

Prompt terminal Anda segera kembali, saat aplikasi berjalan di latar belakang saat Anda menjalankan perintah ini. Anda dapat melihatnya berjalan dengan menggunakan ps :

$ ps -ef | grep nmon
ricardo 1849 1 0 12:27 pts/0 00:00:00 nmon -f -s60 -c60 -t

Dalam mode batch, nmon menyimpan data yang dikumpulkan menggunakan format comma-separated value (CSV) dengan ekstensi .nmon di direktori saat ini:

$ ls -l
total 36
-rw-r--r--. 1 ricardo ricardo 36395 Feb 13 12:28 f35ks01_220213_1227.nmon

Karena ini adalah file CSV, Anda dapat memprosesnya menggunakan alat baris perintah manipulasi teks Linux lainnya, atau membukanya menggunakan perangkat lunak spreadsheet untuk analisis lebih lanjut.

$ head f35ks01_220213_1227.nmon
AAA,progname,nmon
AAA,command,nmon -f -s60 -c60 -t
AAA,version,16k
AAA,disks_per_line,150
AAA,max_disks,256,set by -d option
AAA,disks,10,
AAA,host,f35ks01
AAA,user,ricardo
AAA,OS,Linux,5.16.8-200.fc35.x86_64,#1 SMP PREEMPT Tue Feb 8 20:58:59 UTC 2022,x86_64
AAA,runname,f35ks01

Selain metode ini, nmon tim pengembangan menyediakan skrip untuk mengubah data ini menjadi bagan yang dapat Anda visualisasikan menggunakan browser web Anda. Saya akan melihat bagaimana melakukannya selanjutnya.

[ Bukanlah Linux jika tidak ada selusin cara untuk melakukan tugas apa pun. Untuk info tentang berbagai cara menginstal software, download panduan ini untuk menginstal aplikasi di Linux. ]

Buat diagram

CSV adalah format fleksibel yang memungkinkan Anda mengekspor, menganalisis, dan melihat data ini menggunakan berbagai aplikasi seperti perangkat lunak pengolah spreadsheet. nmon pengembang membuat nmonchart untuk membuatnya sedikit lebih mudah. Skrip shell ini mengubah data ini menjadi HTML menggunakan Google Charts JavaScript untuk memvisualisasikan dan berinteraksi dengan data dalam lingkungan grafis.

Untuk menggunakan nmoncart , unduh dari nmon halaman rumah:

$ curl -LO http://sourceforge.net/projects/nmon/files/nmonchart40.tar

Kemudian ekstrak isi paket menggunakan tar :

$ mkdir nmonchart

$ tar xvf nmonchart40.tar -C nmonchart

nmonchart menggunakan kulit Korn (ksh), jadi untuk membuat grafik, instal dulu ksh di sistem Anda menggunakan dnf :

$ sudo dnf install -y ksh

Selanjutnya, konversikan .nmon file yang dibuat saat Anda menjalankan nmon dalam mode batch dengan perintah ini:

$ ./nmonchart/nmonchart f35ks01_220213_1227.nmon 

Script membuat file HTML dengan nama yang sama dengan .nmon sumber mengajukan. Secara opsional, Anda dapat memberikan nama file tujuan sebagai parameter kedua ke nmonchart . Ini contohnya:

$ ls -lg
total 4164
-rw-r--r--. 1 ricardo 113822 Feb 14 18:52 f35ks01_220213_1227.html
-rw-r--r--. 1 ricardo 93436 Feb 13 13:26 f35ks01_220213_1227.nmon
drwx------. 2 ricardo 4096 Aug 28 2020 nmonchart

Bagan sistem Anda sekarang sudah siap. Langkah Anda selanjutnya adalah melihatnya.

[ Dapatkan lembar contekan skrip shell Bash. ]

Visualisasikan bagan performa

nmonchart membuat satu file HTML untuk setiap .nmon file sumber yang Anda berikan dengan pustaka JavaScript charting yang disematkan. Jika Anda memiliki file HTML di mesin lokal Anda, lihat langsung di browser web Anda.

Anda juga dapat menyajikan file-file ini menggunakan server web. Salah satu cara favorit saya untuk melakukan ini adalah dengan menggunakan Nginx dalam wadah Podman, seperti yang saya sarankan dalam 20 perintah Linux satu baris untuk ditambahkan ke kotak alat Anda.

Pertama, buat direktori dan pindahkan file HTML ke sana:

$ mkdir html

$ mv f35ks01_220213_1227.html html/

Kemudian gunakan Podman untuk menyajikan konten dari html direktori menggunakan Nginx pada port 8080:

$ podman run --rm -v ./html:/usr/share/nginx/html:ro,Z -p 8080:80 -d nginx

Jika perlu, buka port 8080 di firewall server Anda untuk mengizinkan lalu lintas:

$ sudo firewall-cmd --add-port 8080/tcp 

Kemudian arahkan browser Anda ke URL http://<YOUR_SERVER_IP_ADDR>:8080/f35ks01_220213_1227.html untuk melihat grafik:

Klik salah satu tombol di bagian atas layar untuk melihat grafik yang sesuai. Grafik bersifat interaktif. Anda dapat memperbesar dan memperkecil untuk melihat data yang lebih terperinci atau mengarahkan mouse ke bagan untuk melihat data terperinci untuk waktu tertentu.

Menutup

nmon adalah aplikasi pemantauan sistem yang fleksibel dan kuat yang membantu Anda lebih memahami sistem Anda dan memecahkan masalah jika terjadi masalah. Kemampuan gabungannya untuk memantau dan mengkonsolidasikan data real-time dari sumber daya sistem yang berbeda dengan pengumpulan dan analisis data kinerja jangka panjang menjadikannya alat yang fantastis untuk dimiliki di sabuk sysadmin Anda.


Linux
  1. Cara Memantau Kinerja Sistem Linux dengan Sysstat

  2. Pantau Server Linux Dengan Prometheus dan Grafana

  3. Cara Menginstal dan Menggunakan Glance untuk Memantau Sistem Linux

  1. Pantau sistem Linux Anda di terminal Anda dengan procps-ng

  2. Tingkatkan kinerja sistem Linux dengan noatime

  3. Pantau dan Analisis Kesehatan Hard Drive dengan Smartctl di Linux

  1. Menggunakan nfsstat dan nfsiostat untuk memecahkan masalah kinerja NFS di Linux

  2. Cara Menggunakan Perintah Shutdown dan Reboot Linux dengan Contoh

  3. Menggunakan iostat untuk memantau kinerja sistem di Linux (Contoh disertakan)