dstatは、CPU使用率、メモリ使用量、ディスクI/O、ネットワーク帯域など、様々なシステム指標を一目で確認できるコマンドラインツールです。
注目すべきは、--topプラグインを活用するとリアルタイムでのシステムの状態、障害が発生した際に迅速な対応を「プロセス単位」でかつ「負荷が高いもの」を中心に確認することが可能になります。
今から--topプラグインを活用した4つのコマンドを中心にネットワーク帯域調査・出力結果のファイル保存方法を合わせた、6つのdstatコマンドを紹介します。
今回、紹介する6つのdstatコマンドを覚えておけば、サーバのレスポンス・ネットワーク帯域の障害が発生したときに事足ります。
※dstatが利用できない場合はこちらを確認ください。
厳選6つのdstatコマンド表
| コマンド | 説明 |
| dstat -ta --top-cpu-adv | システム時間とCPU使用率の詳細な分析を提供し、CPUを最も多く使用しているプロセスを表示します。 |
| dstat -ta --top-io --top-bio | システム時間、最も多くのディスクI/OおよびブロックI/Oを行っているプロセスを表示します。 |
| dstat -t -gs --mem --vm --ipc --top-mem | システム時間、一般統計、メモリ使用状況、仮想メモリ、IPC統計、そしてメモリ使用量が最も高いプロセスを表示します。 |
| dstat -tdng --file --lock --top-io --top-bio | システム時間、ディスクおよびネットワークのグループ統計、ファイルおよびロック統計、入出力が最も多いプロセス、ブロックI/Oが最も多いプロセスを表示します。 |
| dstat -tn --socket --tcp --udp --unix -N 【enp0s3】 | システム時間、ネットワーク統計、ソケット統計(TCP、UDP、UNIX)、指定されたネットワークインターフェース(enp0s3)のトラフィックを表示します。 |
| dstat --output dstat.csv | dstatの出力をCSVファイル(dstat.csv)に保存します。 |
dstatのプラグインとオプションは自由に組み合わせて自分が表示させたい項目を出力できます。
例
dstat -ta --top-io --top-bio -N enp0s3
厳選6つのdstatコマンドの「実行結果」と「出力画像」
「dstat -ta --top-cpu-adv」コマンド
システム時間とCPU使用率の詳細な分析を提供し、CPUを最も多く使用しているプロセスを表示します。
dstat -ta --top-cpu-adv
■「yes > /dev/null &」を実行しCPU負荷をかけた状態

■コマンド実行時の各項目の意味
| カテゴリ | 項目 | 意味 |
|---|---|---|
| System | time | 現在の時刻を表示します。 |
| Total Usage | usr | CPUがユーザーモードで作業するのに使われる時間の割合をパーセントで表示します。 |
| sys | CPUがシステムモードで作業するのに使われる時間の割合をパーセントで表示します。 | |
| idl | CPUがアイドル状態の時間の割合をパーセントで表示します。 | |
| wai | CPUがI/O操作の完了を待っている時間の割合をパーセントで表示します。 | |
| stl | CPUが他の仮想マシンによって使用された時間の割合(「盗まれた時間」)をパーセントで表示します。 | |
| Disk/Total | read | ディスクからの総読み取り量をバイトで表示します。 |
| writ | ディスクへの総書き込み量をバイトで表示します。 | |
| Net/Total | recv | ネットワークを通じて受信した総データ量をバイトで表示します。 |
| send | ネットワークを通じて送信した総データ量をバイトで表示します。 | |
| Paging | in | ページングによるメモリへのデータ読み込み量(ページイン)を表示します。 |
| out | ページングによるメモリからのデータ書き出し量(ページアウト)を表示します。 | |
| System | int | システム全体の割り込み回数を表示します。 |
| csw | システム全体のコンテキストスイッチの回数を表示します。 | |
| Most Expensive CPU Process | process | 最も多くのCPUリソースを消費しているプロセスの名前を表示します。 |
| pid | 上記プロセスのプロセスIDを表示します。 | |
| cpu | 上記プロセスが消費しているCPUの割合をパーセントで表示します。 |
「dstat -ta --top-io --top-bio」コマンド
システム時間、最も多くのディスクI/OおよびブロックI/Oを行っているプロセスを表示します。
dstat -ta --top-io --top-bio
■「scp」を実行してサーバへファイルコピーしてDiskのI/Oに負荷をかけた状態

■コマンド実行時の各項目の意味
| カテゴリ | 項目 | 意味 |
|---|---|---|
| System | time | 現在の時刻を表示します。 |
| Total Usage | usr | CPUがユーザーモードで作業するのに使われる時間の割合をパーセントで表示します。 |
| sys | CPUがシステムモードで作業するのに使われる時間の割合をパーセントで表示します。 | |
| idl | CPUがアイドル状態の時間の割合をパーセントで表示します。 | |
| wai | CPUがI/O操作の完了を待っている時間の割合をパーセントで表示します。 | |
| stl | CPUが他の仮想マシンによって使用された時間の割合(「盗まれた時間」)をパーセントで表示します。 | |
| Disk/Total | read | ディスクからの総読み取り量をバイトで表示します。 |
| writ | ディスクへの総書き込み量をバイトで表示します。 | |
| Net/Total | recv | ネットワークを通じて受信した総データ量をバイトで表示します。 |
| send | ネットワークを通じて送信した総データ量をバイトで表示します。 | |
| Paging | in | ページングによるメモリへのデータ読み込み量(ページイン)を表示します。 |
| out | ページングによるメモリからのデータ書き出し量(ページアウト)を表示します。 | |
| System | int | システム全体の割り込み回数を表示します。 |
| csw | システム全体のコンテキストスイッチの回数を表示します。 | |
| Most Expensive | I/O process | 最も多くのディスクI/Oリソースを使用しているプロセスの名前と詳細を表示します。 |
| block I/O process | 最も多くのブロックI/O操作を行っているプロセスの名前と詳細を表示します。 |
「dstat -t -gs --mem --vm --ipc --top-mem」コマンド
システム時間、一般統計、メモリ使用状況、仮想メモリ、IPC統計、そしてメモリ使用量が最も高いプロセスを表示します。
dstat -t -gs --mem --vm --ipc --top-mem
■「stress --vm 2 --timeout 5」を実行してメモリに負荷をかけた状態

■コマンド実行時の各項目の意味
| カテゴリ | 項目 | 意味 |
|---|---|---|
| System | time | 現在の時刻を表示します。 |
| Paging | in | ページングによるメモリへのデータ読み込み量(ページイン)を表示します。 |
| out | ページングによるメモリからのデータ書き出し量(ページアウト)を表示します。 | |
| Total | used | 使用中の総メモリ量を表示します。 |
| free | 空きメモリ量を表示します。 | |
| Memory Usage | used | 物理メモリの使用量を表示します。 |
| free | 物理メモリの空き容量を表示します。 | |
| buf | バッファに使用されているメモリ量を表示します。 | |
| cach | キャッシュに使用されているメモリ量を表示します。 | |
| Virtual Memory | majpf | メジャーページフォルトの回数を表示します。これは、ディスクからデータを読み込む必要がある重大なページフォルトです。 |
| minpf | マイナーページフォルトの回数を表示します。これは、ページがメモリ内に既に存在する場合の軽微なページフォルトです。 | |
| alloc | 割り当てられた仮想メモリ量を表示します。 | |
| free | 未使用の仮想メモリ量を表示します。 | |
| SysV IPC | msg | システムV IPCメッセージキューに関する情報を表示します。 |
| sem | システムV IPCセマフォに関する情報を表示します。 | |
| shm | システムV IPC共有メモリに関する情報を表示します。 | |
| Most Expensive | memory process | 最も多くのメモリを使用しているプロセスの名前を表示します。 |
「dstat -tdng --file --lock --top-io --top-bio」コマンド
システム時間、ディスクおよびネットワークのグループ統計、ファイルおよびロック統計、入出力が最も多いプロセス、ブロックI/Oが最も多いプロセスを表示します。
dstat -tdng --file --lock --top-io --top-bio
■「stress --cpu 2 --io 1 --vm 2 --vm-bytes 512M --hdd 2 --hdd-bytes 1G --timeout 10」を実行してCPU/メモリ/Disk I/Oに負荷をかけた状態

■コマンド実行時の各項目の意味
| カテゴリ | 項目 | 意味 |
|---|---|---|
| System | time | 現在の時刻を表示します。 |
| Disk/Total | read | ディスクからの総読み取り量をバイトで表示します。 |
| writ | ディスクへの総書き込み量をバイトで表示します。 | |
| Net/Total | recv | ネットワークを通じて受信した総データ量をバイトで表示します。 |
| send | ネットワークを通じて送信した総データ量をバイトで表示します。 | |
| Paging | in | ページングによるメモリへのデータ読み込み量(ページイン)を表示します。 |
| out | ページングによるメモリからのデータ書き出し量(ページアウト)を表示します。 | |
| Filesystem | files | ファイルシステムに現在開かれているファイルの総数を表示します。 |
| inodes | ファイルシステムに現在使用中のinodeの総数を表示します。 | |
| File Locks | pos | ポジティブなファイルロックの数を表示します(ロックされているファイル)。 |
| lck | ファイルロック待ちのプロセスの数を表示します。 | |
| rea | 読み取りロックが適用されているファイルの数を表示します。 | |
| wri | 書き込みロックが適用されているファイルの数を表示します。 | |
| Most Expensive | I/O process | 最も多くのディスクI/Oリソースを使用しているプロセスの名前と詳細を表示します。 |
| block I/O process | 最も多くのブロックI/O操作を行っているプロセスの名前と詳細を表示します。 |
「dstat -tn --socket --tcp --udp --unix -N 【インターフェース名】」コマンド
システム時間、ネットワーク統計、ソケット統計(TCP、UDP、UNIX)、指定されたネットワークインターフェース(enp0s3)のトラフィックを表示します
dstat -tn --socket --tcp --udp --unix -N enp0s3
■「SCP」を実行してサーバへファイルコピーしてNW負荷をかけた状態

■コマンド実行時の各項目の意味
| カテゴリ | 項目 | 意味 |
|---|---|---|
| System | time | 現在の時刻を表示します。 |
| Net/enp0s3 | recv | 指定されたネットワークインターフェース(enp0s3)で受信した総データ量をバイトで表示します。 |
| send | 指定されたネットワークインターフェースで送信した総データ量をバイトで表示します。 | |
| Sockets | tot | システム上の全てのソケットの合計数を表示します。 |
| tcp | TCPソケットの数を表示します。 | |
| udp | UDPソケットの数を表示します。 | |
| raw | RAWソケットの数を表示します。 | |
| frg | フラグメント化されたソケットの数を表示します。 | |
| TCP Sockets | lis | TCPでリスニング(待機)状態のソケットの数を表示します。 |
| act | TCPでアクティブ(接続されている)ソケットの数を表示します。 | |
| syn | SYN状態にあるTCPソケットの数を表示します(接続を確立しようとしている状態)。 | |
| tim | TIME_WAIT状態のTCPソケットの数を表示します(接続が終了した後、一定期間待機している状態)。 | |
| clo | CLOSE状態のTCPソケットの数を表示します(接続が閉じられた状態)。 | |
| UDP | lis | UDPでリスニング状態のソケットの数を表示します。 |
| act | UDPでアクティブなソケットの数を表示します。 | |
| UNIX | dgm | UNIXドメインのデータグラムソケットの数を表示します。 |
| str | UNIXドメインのストリームソケットの数を表示します。 | |
| lis | UNIXドメインでリスニング状態のソケットの数を表示します。 | |
| act | UNIXドメインでアクティブなソケットの数を表示します。 |
「dstat --ta --top-cpu --output dstat.csv」コマンド
dstatの出力をCSVファイル(dstat.csv)に保存します。
dstat --ta --top-cpu --output dstat.csv
■「dstat」コマンドを実行して標準出力されるデータをcsvファイルに保存した状態



コメント