Linuxシステム監視のためのトップ10必須コマンド

CPU、メモリ、ディスク、ネットワークソケット、負荷、および過去のシステムアクティビティを確認するための10のLinux監視コマンドを学びます。

Linuxシステム監視のためのトップ10必須コマンド

Linuxサーバーが遅く感じられたとき、CPU、メモリ、ディスク、ネットワーク、負荷のいずれに問題があるのかを教えてくれるコマンドが必要です。これらのLinux監視コマンドは、「サーバーが遅い」という状態から具体的な次のステップへと導いてくれます。

以下の10のツールは、クイックスナップショット、インタラクティブビュー、および履歴データを提供します。単一の数値だけを信頼するのではなく、これらを組み合わせて使用してください。

1. top - リアルタイムプロセスアクティビティ

topコマンドは、実行中のLinuxシステムの動的でリアルタイムなビューを提供します。システム情報の概要と、Linuxカーネルによって現在管理されているプロセスまたはスレッドのリストを表示します。システムアクティビティのクイックオーバービューを得るために、管理者が最初に使用するツールであることがよくあります。

主要メトリクス:

  • CPU使用率: us (ユーザー), sy (システム), ni (ナイス), id (アイドル), wa (I/O待機), hi (ハードウェアIRQ), si (ソフトウェアIRQ), st (スチール時間)。
  • メモリ使用量: 合計、空き、使用中、バッファ/キャッシュ。
  • スワップ使用量: 合計、空き、使用中。
  • プロセスリスト: PID、ユーザー、PR (優先度)、NI (ナイス値)、VIRT (仮想メモリ)、RES (常駐メモリ)、SHR (共有メモリ)、S (ステータス)、%CPU、%MEM、TIME+、COMMAND。

基本的な使い方:

top

実用的な例:

  • CPU使用率でソート: top中にPを押す。
  • メモリ使用率でソート: top中にMを押す。
  • 特定のユーザープロセスを表示: top中にuを押し、ユーザー名を入力。
  • プロセスを強制終了: top中にkを押し、PIDを入力。

ヒント:

  • 1を押すと、個々のCPUコアの表示を切り替えられます。
  • qを押すとtopを終了します。
  • top -bn1を使用すると、1回のスナップショットを取得できます(スクリプトに便利)。

2. htop - インタラクティブプロセスビューア

htopは、拡張されたインタラクティブでユーザーフレンドリーなプロセスビューアであり、従来のtopコマンドに比べて多くの利点を提供します。より視覚的に魅力的でナビゲートしやすいインターフェースを提供し、プロセスの監視と管理を容易にします。

主な利点:

  • 視覚的なメーター: CPU、メモリ、スワップ使用量がグラフィカルに表示されます。
  • スクロール可能なリスト: 垂直および水平にスクロールして、すべてのプロセスとその完全なコマンドラインを表示できます。
  • 簡単なプロセス管理: PIDを入力しなくても、ファンクションキーを使用して強制終了、ナイス値変更などのアクションを直接実行できます。
  • ツリービュー: プロセスをツリー形式で表示して、親子関係を示すことができます。

基本的な使い方:

# インストールが必要な場合があります:
# sudo apt install htop (Debian/Ubuntu)
# sudo yum install htop (RHEL/CentOS)
htop

実用的な例:

  • プロセスをフィルタリング: F4を押す。
  • プロセスを強制終了: プロセスを選択し、F9を押す。
  • さまざまな列でソート: F6を使用。

ヒント:

  • htopは、優れたユーザーエクスペリエンスのため、インタラクティブな監視に一般的に推奨されます。
  • htopの表示オプション(F2)をカスタマイズして、ワークフローに合わせてください。

3. vmstat - 仮想メモリ統計

vmstatコマンドは、プロセス、メモリ、ページング、ブロックI/O、トラップ、CPUアクティビティに関する情報を報告します。メモリのボトルネックや高いディスクI/Oを特定するための優れたツールです。

主要メトリクス:

  • r: 実行時間を待っているプロセスの数。
  • b: 割り込み不可能なスリープ状態にあるプロセスの数(通常はI/O)。
  • swpd: 使用されている仮想メモリの量。
  • free: アイドルメモリの量。
  • si / so: ディスクからスワップインされたメモリの量 / ディスクにスワップアウトされたメモリの量。
  • bi / bo: ブロックデバイスから受信したブロック数 / ブロックデバイス送信したブロック数。
  • wa: I/O完了を待機するのに費やされた時間。

基本的な使い方:

vmstat 1 5 # 1秒ごとに報告、5回

実用的な例:

  • アクティブ/非アクティブメモリを表示: vmstat -a
  • slabinfoを表示: vmstat -m
  • ディスク統計を表示: vmstat -d

ヒント:

  • si/soの値が高い場合は、メモリ不足と過剰なスワッピングを示していることが多く、パフォーマンスが著しく低下する可能性があります。
  • waの割合が一貫して高い場合は、I/Oボトルネックを示唆しています。

4. iostat - I/O統計

iostatsysstatパッケージの一部であり、デバイス、パーティション、ネットワークファイルシステムのCPU使用率とI/O統計を報告します。ディスクパフォーマンスの問題を理解するために重要です。

主要メトリクス:

  • %user%system%iowait%idle: CPU使用率の内訳。
  • r/s / w/s: 1秒あたりの読み取り/書き込み回数。
  • rkB/s / wkB/s: 1秒あたりに読み取られた/書き込まれたキロバイト数。
  • await: デバイスに発行されたI/O要求が処理されるまでの平均時間(ミリ秒)。
  • %util: デバイスがI/O要求を処理中であった経過時間の割合。

基本的な使い方:

# インストールが必要な場合があります:
# sudo apt install sysstat (Debian/Ubuntu)
# sudo yum install sysstat (RHEL/CentOS)
iostat -xz 1 5 # 拡張統計、1秒ごと、5回

実用的な例:

  • 特定のデバイス監視: iostat -xz /dev/sda 1
  • CPU使用率のみ表示: iostat -c
  • デバイス使用率のみ表示: iostat -d

ヒント:

  • %utilが高く、await時間も長い場合は、そのデバイスにI/Oボトルネックがあることを示していることがよくあります。最新のSSDや仮想化ストレージでは、ディスクが飽和していると判断する前に、アプリケーションのレイテンシで確認してください。
  • rkB/sおよびwkB/sr/sおよびw/sと比較して、平均I/Oサイズを把握します。

5. free - メモリ使用量

freeコマンドは、システム内の空き物理メモリと使用済み物理メモリ、およびスワップ領域の総量、さらにカーネルが使用するバッファとキャッシュを表示します。

主要メトリクス:

  • total: インストールされているメモリの合計。
  • used: 使用されているメモリ(バッファ/キャッシュを含む)。
  • free: 未使用のメモリ。
  • shared: tmpfs(共有メモリセグメント)によって使用されるメモリ。
  • buff/cache: カーネルバッファとページキャッシュによって使用されるメモリ。
  • available: スワップせずに新しいアプリケーションを起動するために利用可能なメモリの推定値。

基本的な使い方:

free -h # 人間が読みやすい出力

実用的な例:

  • メモリをメガバイトで表示: free -m
  • 5秒ごとに継続的に更新: watch -n 5 free -h

ヒント:

  • available列は、新しいプロセスに実際にどれだけのメモリが空いているかを理解するための最も重要なメトリクスです。
  • Linuxは利用可能なメモリをディスクキャッシュに積極的に使用するため、freeの値が低いのは正常であり、多くの場合望ましいことです。

6. df - ディスク容量使用量

dfコマンドは、ファイルシステムで使用されているディスク容量と利用可能なディスク容量を報告します。ストレージ容量を監視し、ディスク満杯のシナリオを防ぐために不可欠です。

主要メトリクス:

  • Filesystem: ファイルシステムの名前。
  • Size: ファイルシステムの合計サイズ。
  • Used: 使用されているディスク容量。
  • Avail: 利用可能なディスク容量。
  • Use%: 使用されているディスク容量の割合。
  • Mounted on: ファイルシステムのマウントポイント。

基本的な使い方:

df -h # 人間が読みやすい出力

実用的な例:

  • inode使用量を表示: df -i(inodeはメタデータ構造です。inodeが不足すると、空き容量があってもファイル作成ができなくなる可能性があります)。
  • 特定のファイルシステムタイプを表示: df -hT -t ext4

ヒント:

  • ファイルシステムが満杯にならないようにUse%を定期的に確認してください。満杯になると、アプリケーションの障害やシステムの不安定性を引き起こす可能性があります。
  • inode使用量が多い場合は、多数の小さなファイルが問題になる可能性があります。

7. du - ファイルとディレクトリのディスク使用量

duコマンドは、ファイル容量の使用量を推定します。dfがファイルシステム全体の使用量をチェックするのに対し、duは特定のファイルやディレクトリのサイズを調べるために使用され、ディスク容量を消費しているものを特定するために重要です。

主要メトリクス:

  • 指定されたファイルまたはディレクトリの合計サイズ。

基本的な使い方:

du -sh /var/log # /var/logディレクトリの要約、人間が読みやすい形式

実用的な例:

  • すべてのサブディレクトリのサイズを表示(1階層深さ): du -h --max-depth=1 /home/user
  • 最大のファイル/ディレクトリを見つける: du -ah /path/to/check | sort -rh | head -n 10

ヒント:

  • dusortheadと組み合わせて、ディスク容量を消費しているものをすばやく特定します。
  • 大きなディレクトリでduを実行するときは、リソースを大量に消費する可能性があるため注意してください。

8. sar - システムアクティビティレポーター

sarsysstatパッケージの強力なツールであり、システムアクティビティ情報を収集、報告、または保存します。topvmstatがリアルタイムのスナップショットを表示するのとは異なり、sarは履歴データの提供に優れており、長期的なパフォーマンス分析やキャパシティプランニングに非常に役立ちます。

主な機能:

  • CPU統計: %user%nice%system%iowait%steal%idle
  • メモリ統計: kbmemfreekbmemusedkbbufferskbcached
  • ディスクI/O: tpsrd_sec/swr_sec/s
  • ネットワーク統計: rxpck/stxpck/srxbyt/stxbyt/s
  • ロードアベレージスワップアクティビティカーネルアクティビティなど。

基本的な使い方:

# CPU使用率を1秒ごとに報告、5回:
sar -u 1 5
# ディスクアクティビティを報告:
sar -d
# メモリ使用率を報告:
sar -r
# ネットワーク統計を報告:
sar -n DEV

実用的な例:

  • 保存されたCPUアクティビティファイルを表示: 多くのDebianベースのシステムでは sar -u -f /var/log/sysstat/saDD、多くのRHELベースのシステムでは /var/log/sa/saDDDDを月の日付に置き換えてください。
  • 今日の収集データをすべて表示: sar -A

ヒント:

  • 履歴分析のためにデータを定期的に収集するように、sysstatパッケージがインストールおよび設定されていることを確認してください。
  • sarは情報量が多くなる可能性があります。調査に関連する特定のフラグ(-u-r-d-n)に焦点を当ててください。

9. ss (ソケット統計) - ネットワーク接続

ssはソケットを調査するためのユーティリティです。これは古いnetstatコマンドよりも高速で効率的な代替手段であり、TCP、UDP、およびその他のソケットタイプに関する、それらの状態、ローカル/リモートアドレス、プロセスIDを含む、より詳細な情報を提供します。

主要メトリクス:

  • 状態: ESTABLISTENTIME-WAITCLOSE-WAITなど。
  • Recv-Q / Send-Q: 受信および送信キューのサイズ。
  • ローカルアドレス:ポート / ピアアドレス:ポート: ローカルおよびリモートのエンドポイント。
  • プロセス名: ソケットに関連付けられたプロセス。

基本的な使い方:

ss -tuln # TCP、UDP、リスニング、数値ポート

実用的な例:

  • すべてのTCP接続を一覧表示: ss -t
  • すべてのUDP接続を一覧表示: ss -u
  • 特定のポートでリスニングしているプロセスを表示: ss -tulnp | grep 80
  • ソケット統計を要約: ss -s

ヒント:

  • TIME-WAITソケットの数が多いことは自動的に悪いわけではありません。ビジーなTCPサービスでは正常な場合があります。問題として扱う前に、ポート枯渇、接続失敗、キュー成長と組み合わせて確認してください。
  • Recv-QSend-Qを監視して、ネットワークバッファリングの問題やアプリケーション処理の遅さの兆候を確認します。

10. uptime - システム稼働時間とロードアベレージ

uptimeコマンドは、システムが実行されている期間、現在の時刻、ログインしているユーザー数、および過去1分、5分、15分のシステムロードアベレージを表示します。

主要メトリクス:

  • 現在時刻: 説明不要。
  • 稼働時間: システムが実行されている期間。
  • ユーザー数: 現在ログインしているユーザー数。
  • ロードアベレージ: 実行可能状態または割り込み不可能状態にあるプロセスの平均数。これには、CPUで実行中のプロセス、CPUを待機中のプロセス、またはディスクI/Oを待機中のプロセスが含まれます。
    • 1分間のロードアベレージ
    • 5分間のロードアベレージ
    • 15分間のロードアベレージ

基本的な使い方:

uptime

実用的な例:

  • サーバーの全体的なビジー状態のクイックヘルスチェックとしてよく使用されます。

ヒント:

  • ロードアベレージをシステムのCPUコア数と比較してください。ロードアベレージがCPUコア数よりも一貫して高い場合は、多くの場合、CPUまたはI/Oのボトルネックを示しています。
  • 時間の経過とともにロードアベレージが増加している場合(例:1分 > 5分 > 15分)、システムのビジー状態が増加していることを示唆しています。

簡単なトラブルシューティングフロー

サーバーが遅い場合は、uptimeで負荷を確認し、topまたはhtopでビジーなプロセスを見つけます。free -hvmstat 1 5でメモリ不足を、iostat -xz 1 5でディスクレイテンシを、ss -tulnpでリスニングサービスまたはバックアップされたソケットを確認します。問題が以前に発生した場合は、sarを使用して問題のある時間帯と通常の時間帯を比較します。

要点は単純です。各コマンドはストーリーの一部を答えます。あなたの仕事は、サービスを再起動したりマシンのサイズを変更したりする前に、CPU、メモリ、ディスク、ネットワークの証拠を並べることです。