Narzędzia diagnostyczne

Administrator systemów komputerowych jest odpowiedzialny za śledzenie działania systemu operacyjnego, wydajności poszczególnych jego podsystemów, wykrywanie i usuwanie wąskich gardeł w odniesieniu do pracy podsystemu dyskowego, sieciowego, CPU. Administrator ma do dyspozycji szereg rozmaitych narzędzi pozwalających na śledzenie pracy poszczególnych podsystemów. Do najpularniejszych, gdyż najbardziej użytecznych należą top|htop, vmstat, iostat, mpstat, sar, slabtop.

top

Wśród narzędzi diagnostycznych komenda top wiedzie zdecydowanie prym, gdyż w zwartej formie dostarcza ogromnej liczby informacji o pracy różnych podsystemów systemu operacyjnego.

Hot keys

Description

t

Task/Cpu-States toggle

m

Memory/Swap-Usage toggle

1

Single/Separate-Cpu-States toggle

2

NUMA-Nodes/Cpu-Summary toggle

3

Expand-NUMA-Node

H

Threads-mode toggle

S

Cumulative-Time-Mode toggle

i

Idle-Process toggle

u|U

Show-Specific-User-Only

d|s

Change-Delay-Time-interval

n

Set-Maximum-Tasks

A

Alternate-Display-Mode toggle; sorts the display by top consumers of various system resources

f

Fields-Management, enters an interactive configuration screen for top

o

Other-Filtering, enables selection of the ordering within top

r

Issues renice command

k

Issues kill command

b

Bold/Reverse toggle

x

Column-Highlight toggle

y

Row-Highlight toggle

V

Forest-View-Mode toggle

Zob. Przykłady wykorzystania komendy top.

W przypadku serwera, który jest gospodarzem maszyn wirtualnych przydatna może okazać się komenda virt-top.

Zużycie energii przez poszczególne podsystemy systemu komputerowego można śledzić przy pomocy komendy powertop. Podpowiada on także w jaki sposób poprawić konfigurację systemu, aby zmniejszyć zużycie energii. Do śledzenia działanie alokatora płytowego służy slabtop.

vmstat, iostat, mpstat, pidstat, sar

vmstat dostarcza informacji o procesach, pamięci, stronicowaniu, blokowych operacjach wej/wyj, wykorzystaniu CPU.

iostat dostarcza statystyk pracy CPU, wej/wy dla urządzeń i partycji.

Zob. Przykłady wykorzystania komend vmstat i iostat.

mpstat dostarcza informacji związanych z pracą procesora. Zob. Przykłady wykorzystania komendy mpstat.

pidstat służy do monitorowania indywidualnych zadań (tasks), którymi aktualnie zarządza Linux. Zob. Przykłady wykorzystania komendy pidstat.

sar jest komendą, która pozwala nie tylko na interaktywne śledzenie wielu parametrów systemu (cpu, pamięci, dysków, podsystemu sieciowego), ale także na ich gromadzenie i przeglądanie. sar jest częścią składową systat:

  • sar(1) – displays the recorded data.

  • sadc(8) – system activity data collector, which records the data regarding system activity in a binary format.

  • sa1(8) – a BASH script used by sadc in background; called every ten minutes by cron (from /etc/cron.d/sysstat).

  • sa2(8) – a BASH script used for writing the daily reports and called by cron once per day (from /etc/cron.d/sysstat).

  • sadf(1)– displays the recorded data; in contrast with sar provides various formats (CSV, XML and so forth).

W systemie CentOS 7 usługa sysstat jest domyślnie włączona (zob. systemctl status sysstat), a jej konfiguracja jest określona w plikach /etc/sysconfig/sysstat i /etc/cron.d/sysstat.

Oto komendy systemu sysstat i przykłady ich użycia:

  • vmstat

    # vmstat [-w] [-S k|K|mM] [delay [count]]      #
    # vmstat -s [delay [count]]                    #
    # vmstat -a [delay [count]]                    #
    # vmstat -m [delay [count]]                    #
    # vmstat -d [delay [count]]                    #
    # vmstat -D                                    #
    # vmstat -p <dev> [delay [count]]              #
    
  • iostat

    # iostat -c [interval [count]]                 #
    # iostat -d [-N] [interval [count]]            #
    # iostat [-h] [-N] -p ALL [interval [count]]   #
    
  • mpstat

    # mpstat [-u] [interval [count]]               #
    # mpstat -I SUM [interval [count]]             #
    # mpstat -I SUM -P <num>  [interval [count]]   #
    # mpstat -I ALL [interval [count]]             #
    
  • pidstat

    # pidstat [-p ALL] [interval [count]]          #
    # pidstat -C <name> [interval [count]]         #
    # pidstat -C <name> -u [-I] [interval [count]] #
    # pidstat -C <name> -d|r|s [interval [count]]  #
    
  • sar

    # sar [-C] [interval [count]]                  #
    # sar -q [interval [count]]                    #
    # sar -w [interval [count]]                    #
    # sar -W [interval [count]]                    #
    # sar -v [interval [count]]                    #
    # sar -n TCP [interval [count]]                #
    # sar -m ALL|CPU|TEMP [interval [count]]       #
    

Zob. także Przykłady wykorzystania systemu sysstat.

ss (netstat), tcpdump, ngrep

Praktycznie każdy system komputerowy pracuje w jakiejś lokalnej sieci komputerowej, więc administrator musi umieć określić liczbę i stan istniejących połączeń oraz śledzić ruch sieciowy pomiędzy wybranymi hostami (usługami sieciowymi). Do prostego sprawdzenia osiągalności zdalnego hosta używa się komendy ping. Trasę pakietów można próbować odtworzyć przy pomocy komendy traceroute lub tracepath.

Stan gniazd sieciowych i połączeń oraz śledzenie transmisji umożliwiają komendy ss (dawniej netstat) oraz tcpdump. Zob. Przykłady wykorzystania komend ss, tcpdump, ngrep.

Bardzo drobiazgową analizę ruchu sieciowego można przeprowadzić przy pomocy programu wireshark. Natomiast natężenie ruchu na różnych interfejsach i jego charakter można łatwo obserwować przy pomocy programu iptraf.