サーバーリソースを監視するためのTop、Netstat、Duなどのツールの使用方法

導入

すべてのコンピュータシステムは適切な管理とモニタリングの恩恵を受けます。システムの動作状況を注意深く監視することで、問題を発見して迅速に解決するのに役立ちます。

この目的のために作成された多くのコマンドラインユーティリティがあります。このガイドでは、ツールボックスに必要ないくつかの最も役立つアプリケーションを紹介します。

前提条件

このガイドに従うには、Linuxベースのオペレーティングシステムが実行されているコンピュータにアクセスできる必要があります。これは、SSHで接続した仮想プライベートサーバーまたはローカルマシンのいずれかです。このチュートリアルは、Ubuntu 20.04を実行しているLinuxサーバーで検証されましたが、提供された例は任意のLinuxディストリビューションの任意のバージョンを実行しているコンピュータで動作するはずです。

このガイドに従うためにリモートサーバーを使用する予定の場合は、まず当社の初期サーバーセットアップガイドを完了することをお勧めします。これにより、非rootユーザーとsudo権限、およびUFWで構成されたファイアウォールを備えた安全なサーバー環境が構築され、Linuxスキルを構築するために使用できます。

ステップ1 – Linux で実行中のプロセスを表示する方法

サーバーで実行中のすべてのプロセスを見るには、top コマンドを使用します:

  1. top
Output
top - 15:14:40 up 46 min, 1 user, load average: 0.00, 0.01, 0.05 Tasks: 56 total, 1 running, 55 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 1019600k total, 316576k used, 703024k free, 7652k buffers Swap: 0k total, 0k used, 0k free, 258976k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 24188 2120 1300 S 0.0 0.2 0:00.56 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.07 ksoftirqd/0 6 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 7 root RT 0 0 0 0 S 0.0 0.0 0:00.03 watchdog/0 8 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 cpuset 9 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper 10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs

出力の最初の数行には、CPU/メモリの負荷や実行中のタスクの総数などのシステム統計が表示されます。

実行中のプロセスが1つあり、CPUサイクルを活発に使用していないためにスリープ状態と見なされる55個のプロセスがあることがわかります。

表示される出力の残り部分には、実行中のプロセスとそれらの使用統計が表示されます。デフォルトでは、top はこれらをCPU使用率で自動的にソートするため、最もビジーなプロセスを最初に見ることができます。top は、標準のキー組み合わせであるCtrl+Cを使用して停止するまで、シェルで実行し続けます。これは、プロセスが優雅に停止できる場合にkillシグナルを送信します。

より高機能なtop のバージョンであるhtop は、ほとんどのパッケージリポジトリで利用できます。Ubuntu 20.04では、次のようにしてインストールできます:apt

  1. sudo apt install htop

その後、htop コマンドが利用可能になります。

  1. htop
Output
Mem[||||||||||| 49/995MB] Load average: 0.00 0.03 0.05 CPU[ 0.0%] Tasks: 21, 3 thr; 1 running Swp[ 0/0MB] Uptime: 00:58:11 PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command 1259 root 20 0 25660 1880 1368 R 0.0 0.2 0:00.06 htop 1 root 20 0 24188 2120 1300 S 0.0 0.2 0:00.56 /sbin/init 311 root 20 0 17224 636 440 S 0.0 0.1 0:00.07 upstart-udev-brid 314 root 20 0 21592 1280 760 S 0.0 0.1 0:00.06 /sbin/udevd --dae 389 messagebu 20 0 23808 688 444 S 0.0 0.1 0:00.01 dbus-daemon --sys 407 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.02 rsyslogd -c5 408 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.00 rsyslogd -c5 409 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.00 rsyslogd -c5 406 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.04 rsyslogd -c5 553 root 20 0 15180 400 204 S 0.0 0.0 0:00.01 upstart-socket-br

htopは、複数のCPUスレッドの視覚化が向上し、モダンな端末での色のサポートに関する意識が向上し、他の機能としてはより多くのソートオプションがあります。 topとは異なり、デフォルトで常にインストールされているわけではありませんが、置換として考えることができます。 topと同様に、htopを終了するにはCtrl+Cを押します。

次は、htopを効果的に使用するのに役立ついくつかのキーボードショートカットです:

  • M: Sort processes by memory usage
  • P: Sort processes by processor usage
  • ?: ヘルプにアクセス
  • k: Kill current/tagged process
  • F2: htopを設定します。 ここで表示オプションを選択できます。
  • /: プロセスを検索

ヘルプまたは設定を介してアクセスできる他の多くのオプションがあります。これらは、htopの機能を探るための最初の停留所とすべきです。次のステップでは、ネットワーク帯域幅の監視方法を学びます。

ステップ2 – ネットワーク帯域幅の監視方法

ネットワーク接続が過度に使用されているようで、どのアプリケーションが原因かわからない場合、nethogsというプログラムは良い選択肢です。

Ubuntuでは、次のコマンドでnethogsをインストールできます:

  1. sudo apt install nethogs

その後、nethogsコマンドが利用可能になります:

  1. nethogs
Output
NetHogs version 0.8.0 PID USER PROGRAM DEV SENT RECEIVED 3379 root /usr/sbin/sshd eth0 0.485 0.182 KB/sec 820 root sshd: root@pts/0 eth0 0.427 0.052 KB/sec ? root unknown TCP 0.000 0.000 KB/sec TOTAL 0.912 0.233 KB/sec

nethogsは、各アプリケーションにそのネットワークトラフィックを関連付けます。

nethogsを制御するために使用できるコマンドはほとんどありません:

  • M: Change displays between “kb/s”, “kb”, “b”, and “mb”.
  • R: Sort by traffic received.
  • S: Sort by traffic sent.
  • Q: quit

iptraf-ngはネットワークトラフィックを監視する別の方法です。さまざまなインタラクティブな監視インタフェースを提供します。

注意: IPTrafは少なくとも80列×24行の画面サイズを必要とします。

Ubuntuでは、次のコマンドでiptraf-ngをインストールできます:

  1. sudo apt install iptraf-ng

iptraf-ngを実行するには、ルート権限が必要ですので、sudoを先に付ける必要があります:

  1. sudo iptraf-ng

人気のあるコマンドラインインターフェースフレームワークであるncursesを使用したメニューが表示されます。

このメニューで、アクセスしたいインタフェースを選択できます。

たとえば、すべてのネットワークトラフィックの概要を取得するには、最初のメニューを選択してから「全インタフェース」を選択します。次のような画面が表示されます:

ここでは、すべてのネットワークインタフェースで通信しているIPアドレスが表示されます。

これらのIPアドレスをドメインに解決したい場合は、トラフィック画面を終了し、Configureを選択してからReverse DNS lookupsをオンに切り替えます。

TCP/UDP service namesも有効にして、ポート番号の代わりに実行されているサービスの名前を表示できます。

これらのオプションを両方有効にすると、表示が次のようになる場合があります:

netstatコマンドは、ネットワーク情報を収集するための別の多目的ツールです。

netstatはほとんどの現代のシステムにデフォルトでインストールされていますが、サーバーのデフォルトのパッケージリポジトリからダウンロードして自分でインストールすることもできます。Ubuntuを含むほとんどのLinuxシステムでは、netstatを含むパッケージはnet-toolsです。

  1. sudo apt install net-tools

デフォルトでは、netstatコマンド単体でオープンされているソケットのリストが表示されます。

  1. netstat
Output
Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 192.241.187.204:ssh ip223.hichina.com:50324 ESTABLISHED tcp 0 0 192.241.187.204:ssh rrcs-72-43-115-18:50615 ESTABLISHED Active UNIX domain sockets (w/o servers) Proto RefCnt Flags Type State I-Node Path unix 5 [ ] DGRAM 6559 /dev/log unix 3 [ ] STREAM CONNECTED 9386 unix 3 [ ] STREAM CONNECTED 9385 . . .

-aオプションを追加すると、すべてのポート(リッスン中および非リッスン中)がリストされます。

  1. netstat -a
Output
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:ssh *:* LISTEN tcp 0 0 192.241.187.204:ssh rrcs-72-43-115-18:50615 ESTABLISHED tcp6 0 0 [::]:ssh [::]:* LISTEN Active UNIX domain sockets (servers and established) Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 6195 @/com/ubuntu/upstart unix 2 [ ACC ] STREAM LISTENING 7762 /var/run/acpid.socket unix 2 [ ACC ] STREAM LISTENING 6503 /var/run/dbus/system_bus_socket . . .

TCP接続またはUDP接続のみを表示したい場合は、それぞれ-tまたは-uフラグを使用します。

  1. netstat -at
Output
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:ssh *:* LISTEN tcp 0 0 192.241.187.204:ssh rrcs-72-43-115-18:50615 ESTABLISHED tcp6 0 0 [::]:ssh [::]:* LISTEN

統計情報を見るには、「-s」フラグを渡します。

  1. netstat -s
Output
Ip: 13500 total packets received 0 forwarded 0 incoming packets discarded 13500 incoming packets delivered 3078 requests sent out 16 dropped because of missing route Icmp: 41 ICMP messages received 0 input ICMP message failed. ICMP input histogram: echo requests: 1 echo replies: 40 . . .

出力を連続して更新したい場合は、-cフラグを使用できます。netstatには他にも多くのオプションがありますが、その詳細についてはマニュアルページを参照してください。

次のステップでは、ディスク使用状況を監視するいくつかの有用な方法を学びます。

ステップ3 – ディスク使用状況の監視方法

接続されたドライブの残りのディスク容量を簡単に把握するには、dfプログラムを使用できます。

オプションを指定しない場合、その出力は次のようになります。

  1. df
Output
Filesystem 1K-blocks Used Available Use% Mounted on /dev/vda 31383196 1228936 28581396 5% / udev 505152 4 505148 1% /dev tmpfs 203920 204 203716 1% /run none 5120 0 5120 0% /run/lock none 509800 0 509800 0% /run/shm

これはバイト単位のディスク使用状況を出力しますが、読みやすさに欠ける場合があります。

この問題を解決するには、人間が読める形式で出力を指定できます。

  1. df -h
Output
Filesystem Size Used Avail Use% Mounted on /dev/vda 30G 1.2G 28G 5% / udev 494M 4.0K 494M 1% /dev tmpfs 200M 204K 199M 1% /run none 5.0M 0 5.0M 0% /run/lock none 498M 0 498M 0% /run/shm

すべてのファイルシステムで利用可能な総ディスク容量を見たい場合は、--totalオプションを渡すことができます。これにより、下部に要約情報を含む行が追加されます:

  1. df -h --total
Output
Filesystem Size Used Avail Use% Mounted on /dev/vda 30G 1.2G 28G 5% / udev 494M 4.0K 494M 1% /dev tmpfs 200M 204K 199M 1% /run none 5.0M 0 5.0M 0% /run/lock none 498M 0 498M 0% /run/shm total 32G 1.2G 29G 4%

dfは有用な概要を提供できます。別のコマンドであるduはディレクトリ別の詳細を提供します。

duは現在のディレクトリおよびそのサブディレクトリの使用状況を分析します。ほとんど空のホームディレクトリで実行したduのデフォルト出力は次のようになります:

  1. du
Output
4 ./.cache 8 ./.ssh 28 .

再度、人が読める形式の出力を指定するには、-hを渡します:

  1. du -h
Output
4.0K ./.cache 8.0K ./.ssh 28K .

ファイルサイズとディレクトリを見るには、次のように入力します:

  1. du -a
Output
0 ./.cache/motd.legal-displayed 4 ./.cache 4 ./.ssh/authorized_keys 8 ./.ssh 4 ./.profile 4 ./.bashrc 4 ./.bash_history 28 .

下部に合計を表示するには、-cオプションを追加できます:

  1. du -c
Output
4 ./.cache 8 ./.ssh 28 . 28 total

合計のみに興味がある場合は、次を実行できます:

  1. du -s
Output
28 .

duには、ncduという名前の適切なncursesインターフェースもあります。これをインストールできます:

  1. sudo apt install ncdu

これにより、ディスク使用状況がグラフィカルに表示されます:

  1. ncdu
Output
--- /root ---------------------------------------------------------------------- 8.0KiB [##########] /.ssh 4.0KiB [##### ] /.cache 4.0KiB [##### ] .bashrc 4.0KiB [##### ] .profile 4.0KiB [##### ] .bash_history

上下矢印を使用してファイルシステムを進み、任意のディレクトリエントリでEnterキーを押すことで進むことができます。

最後のセクションでは、メモリ使用状況の監視方法を学びます。

ステップ4 – メモリ使用状況の監視方法

現在のシステムのメモリ使用状況を確認するには、freeコマンドを使用します。

オプションを指定せずに使用すると、出力は次のようになります:

  1. free
Output
total used free shared buff/cache available Mem: 1004896 390988 123484 3124 490424 313744 Swap: 0 0 0

より読みやすい形式で表示するには、出力をメガバイト単位で表示するために-mオプションを渡すことができます:

  1. free -m
Output
total used free shared buff/cache available Mem: 981 382 120 3 478 306 Swap: 0 0 0

Mem行には、バッファリングおよびキャッシュに使用されるメモリが含まれており、他の目的に必要に応じて解放されます。Swapは、アクティブなメモリを節約するためにディスク上のswapfileに書き込まれたメモリです。

最後に、vmstatコマンドを使用すると、メモリ、スワップ、ディスクI/O、およびCPU情報など、システムに関するさまざまな情報を出力できます。

メモリ使用状況をさらに把握するために、このコマンドを使用できます:

  1. vmstat
Output
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 0 99340 123712 248296 0 0 0 1 9 3 0 0 100 0

単位を指定してメガバイト単位で表示するには、-Sフラグを使用します:

  1. vmstat -S M
Output
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 0 0 96 120 242 0 0 0 1 9 3 0 0 100 0

メモリ使用状況に関する一般的な統計情報を取得するには、次のように入力します:

  1. vmstat -s -S M
Output
495 M total memory 398 M used memory 252 M active memory 119 M inactive memory 96 M free memory 120 M buffer memory 242 M swap cache 0 M total swap 0 M used swap 0 M free swap . . .

個々のシステムプロセスのキャッシュ使用状況に関する情報を取得するには、次のように入力します:

  1. vmstat -m -S M
Output
Cache Num Total Size Pages ext4_groupinfo_4k 195 195 104 39 UDPLITEv6 0 0 768 10 UDPv6 10 10 768 10 tw_sock_TCPv6 0 0 256 16 TCPv6 11 11 1408 11 kcopyd_job 0 0 2344 13 dm_uevent 0 0 2464 13 bsg_cmd 0 0 288 14 . . .

これにより、キャッシュに保存されている情報の詳細が表示されます。

結論

これらのツールを使用することで、コマンドラインからサーバーをモニタリングできるようになるはずです。異なる目的に使用される多くの他のモニタリングユーティリティがありますが、これらは良い出発点です。

次に、ps、kill、およびniceを使用したLinuxプロセス管理について学ぶことができます。

Source:
https://www.digitalocean.com/community/tutorials/how-to-use-top-netstat-du-other-tools-to-monitor-server-resources