Linuxのパフォーマンスを監視するための20のコマンドラインツール


すべてのシステム管理者またはネットワーク管理者がLinuxシステムパフォーマンスの問題を毎日監視およびデバッグすることは、非常に困難な作業です。 IT業界で5年間Linux管理者を務めた後、システムを監視して稼働させ続けることがいかに難しいかを知るようになりました。このため、すべてのLinux/Unixシステム管理者に役立つ可能性のある頻繁に使用されるコマンドライン監視ツールのトップ20のリストをまとめました。これらのコマンドは、Linuxのすべてのフレーバーで使用でき、パフォーマンスの問題の実際の原因を監視および検出するのに役立ちます。ここに示されているコマンドのリストは、監視シナリオに適したコマンドを選択するのに十分です。

Linux Topコマンドは、Linuxのパフォーマンスを監視するために多くのシステム管理者によって頻繁に使用されるパフォーマンス監視プログラムであり、オペレーティングシステムのような多くのLinux/Unixで使用できます。実行中およびアクティブなすべてのリアルタイムプロセスを順序付きリストにディップレイし、定期的に更新するために使用されるトップコマンド。 CPU使用率、メモリ使用量、スワップメモリ、キャッシュサイズ、バッファサイズ、プロセスPID、ユーザー、コマンドなどが表示されます。また、実行中のプロセスのメモリとCPU使用率が高いことも示しています。 topコマンドは、システム管理者が監視し、必要に応じて正しいアクションを実行するのに非常に役立ちます。トップコマンドの動作を見てみましょう。

# top

トップコマンドのその他の例については、以下をお読みください:Linuxでの12のトップコマンドの例

Linux VmStatコマンドは、仮想メモリ、カーネルスレッド、ディスク、システムプロセス、I/Oブロック、割り込み、CPUアクティビティなどの統計を表示するために使用されます。デフォルトでは、vmstatコマンドはLinuxシステムでは使用できません。vmstatプログラムを含むsysstatというパッケージをインストールする必要があります。コマンド形式の一般的な使用法はです。

# vmstat

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 810420  97380  70628    0    0   115     4   89   79  1  6 90  3  0

その他のVmstatの例については、以下をお読みください:Linuxでの6つのVmstatコマンドの例

開いているすべてのファイルとプロセスのリストを表示するために使用される、多くのLinux/Unixライクなシステムで使用されるLsofコマンド。含まれているオープンファイルは、ディスクファイル、ネットワークソケット、パイプ、デバイス、およびプロセスです。このコマンドを使用する主な理由の1つは、ディスクをアンマウントできず、ファイルが使用中または開かれているというエラーが表示される場合です。このコマンドを使用すると、使用中のファイルを簡単に識別できます。このコマンドの最も一般的な形式はです。

# lsof

COMMAND     PID      USER   FD      TYPE     DEVICE     SIZE       NODE NAME
init          1      root  cwd       DIR      104,2     4096          2 /
init          1      root  rtd       DIR      104,2     4096          2 /
init          1      root  txt       REG      104,2    38652   17710339 /sbin/init
init          1      root  mem       REG      104,2   129900     196453 /lib/ld-2.5.so
init          1      root  mem       REG      104,2  1693812     196454 /lib/libc-2.5.so
init          1      root  mem       REG      104,2    20668     196479 /lib/libdl-2.5.so
init          1      root  mem       REG      104,2   245376     196419 /lib/libsepol.so.1
init          1      root  mem       REG      104,2    93508     196431 /lib/libselinux.so.1
init          1      root   10u     FIFO       0,17                 953 /dev/initctl

その他のlsofコマンドの使用法と例:Linuxでの10lsofコマンドの例

Tcpdumpは、ネットワーク上の特定のインターフェイスで受信または転送されたTCP/IPパケットをキャプチャまたはフィルタリングするために使用される、最も広く使用されているコマンドラインネットワークパケットアナライザまたはパケットスニファプログラムの1つです。また、後で分析するために、キャプチャしたパッケージをファイルに保存するオプションもあります。 tcpdumpは、ほとんどすべての主要なLinuxディストリビューションで利用できます。

# tcpdump -i eth0

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
22:08:59.617628 IP tecmint.com.ssh > 115.113.134.3.static-mumbai.vsnl.net.in.28472: P 2532133365:2532133481(116) ack 3561562349 win 9648
22:09:07.653466 IP tecmint.com.ssh > 115.113.134.3.static-mumbai.vsnl.net.in.28472: P 116:232(116) ack 1 win 9648
22:08:59.617916 IP 115.113.134.3.static-mumbai.vsnl.net.in.28472 > tecmint.com.ssh: . ack 116 win 64347

tcpdumpの使用法の詳細については、以下を参照してください。Linuxでの12のTcpdumpコマンドの例

Netstatは、着信および発信ネットワークパケット統計とインターフェイス統計を監視するためのコマンドラインツールです。これは、すべてのシステム管理者がネットワークパフォーマンスを監視し、ネットワーク関連の問題をトラブルシューティングするための非常に便利なツールです。

# netstat -a | more

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 *:mysql                     *:*                         LISTEN
tcp        0      0 *:sunrpc                    *:*                         LISTEN
tcp        0      0 *:realm-rusd                *:*                         LISTEN
tcp        0      0 *:ftp                       *:*                         LISTEN
tcp        0      0 localhost.localdomain:ipp   *:*                         LISTEN
tcp        0      0 localhost.localdomain:smtp  *:*                         LISTEN
tcp        0      0 localhost.localdomain:smtp  localhost.localdomain:42709 TIME_WAIT
tcp        0      0 localhost.localdomain:smtp  localhost.localdomain:42710 TIME_WAIT
tcp        0      0 *:http                      *:*                         LISTEN
tcp        0      0 *:ssh                       *:*                         LISTEN
tcp        0      0 *:https                     *:*                         LISTEN

その他のNetstatの例:Linuxでの20のNetstatコマンドの例。

Htopは、はるかに高度なインタラクティブでリアルタイムのLinuxプロセス監視ツールです。これはLinuxのtopコマンドによく似ていますが、プロセスを管理するためのユーザーフレンドリーなインターフェイス、ショートカットキー、プロセスの垂直方向と水平方向のビューなど、いくつかの豊富な機能があります。 Htopはサードパーティのツールであり、Linuxシステムには含まれていません。YUMパッケージマネージャーツールを使用してインストールする必要があります。インストールの詳細については、以下の記事をお読みください。

# htop

Htopのインストールについては、次をお読みください:LinuxにHtop(Linux Process Monitoring)をインストールする

IotopもtopコマンドやHtopプログラムによく似ていますが、リアルタイムのディスクI/Oとプロセスを監視および表示するためのアカウンティング機能を備えています。このツールは、正確なプロセスと、プロセスの使用頻度の高いディスクの読み取り/書き込みを見つけるのに非常に役立ちます。

# iotop

Ioptopのインストールと使用法については、以下をお読みください:LinuxにIotopをインストールする

IoStatは、システムの入力および出力ストレージデバイスの統計を収集して表示するシンプルなツールです。このツールは、デバイス、ローカルディスク、NFSなどのリモートディスクなどのストレージデバイスのパフォーマンスの問題を追跡するためによく使用されます。

# iostat

Linux 2.6.18-238.9.1.el5 (tecmint.com)         09/13/2012

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.60    3.65    1.04    4.29    0.00   88.42

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
cciss/c0d0       17.79       545.80       256.52  855159769  401914750
cciss/c0d0p1      0.00         0.00         0.00       5459       3518
cciss/c0d0p2     16.45       533.97       245.18  836631746  384153384
cciss/c0d0p3      0.63         5.58         3.97    8737650    6215544
cciss/c0d0p4      0.00         0.00         0.00          8          0
cciss/c0d0p5      0.63         3.79         5.03    5936778    7882528
cciss/c0d0p6      0.08         2.46         2.34    3847771    3659776

Iostatの使用法と例の詳細については、以下を参照してください。Linuxでの6つのIostatコマンドの例

IPTrafは、Linux用のオープンソースのコンソールベースのリアルタイムネットワーク(IP LAN)監視ユーティリティです。 TCPフラグ情報、ICMPの詳細、TCP/UDPトラフィックの内訳、TCP接続パケット、バイト数など、ネットワークを通過するIPトラフィックモニターなどのさまざまな情報を収集します。また、TCP、UDP、IP、ICMP、非IP、IPチェックサムエラー、インターフェイスアクティビティなどの一般的および詳細なインターフェイス統計の情報も収集します。

IPTrafツールの詳細と使用法については、IPTrafネットワーク監視ツールをご覧ください。

psacctまたはacctツールは、システム上の各ユーザーのアクティビティを監視するのに非常に役立ちます。両方のデーモンはバックグラウンドで実行され、システム上の各ユーザーの全体的なアクティビティと、それらによって消費されているリソースを注意深く監視します。

これらのツールは、システム管理者が、ユーザーが行っていること、発行したコマンド、ユーザーが使用しているリソースの量、システムでアクティブになっている時間など、各ユーザーのアクティビティを追跡するのに非常に役立ちます。

コマンドのインストールと使用例については、psacctまたはacctを使用したユーザーアクティビティの監視に関する記事をお読みください。

Monitは、システムプロセス、プログラム、ファイル、ディレクトリ、パーミッション、チェックサム、およびファイルシステムを自動的に監視および管理する、無料のオープンソースおよびWebベースのプロセス監視ユーティリティです。

Apache、MySQL、Mail、FTP、ProFTP、Nginx、SSHなどのサービスを監視します。システムステータスは、コマンドラインから、または独自のWebインターフェイスを使用して表示できます。

続きを読む:Monitを使用したLinuxプロセスの監視

NetHogsは、システム上の各プロセスネットワークアクティビティを監視するオープンソースの素敵な小さなプログラム(Linuxのtopコマンドに似ています)です。また、各プログラムまたはアプリケーションによって使用されるリアルタイムのネットワークトラフィック帯域幅を追跡します。

続きを読む:NetHogsを使用してLinuxネットワークの帯域幅を監視する

iftopは、システムのネットワークインターフェイスを通過するネットワーク帯域幅使用率(送信元ホストと宛先ホスト)の頻繁に更新されるリストを表示する、別の端末ベースの無料のオープンソースシステム監視ユーティリティです。 iftopはネットワーク使用量について考慮され、「top」はCPU使用率に対して何をしますか。 iftopは、選択したインターフェイスを監視し、2つのホスト間の現在の帯域幅使用量を表示する「トップ」ファミリツールです。

続きを読む:iftop –ネットワーク帯域幅使用率の監視

Monitorixは、Linux/Unixサーバーで可能な限り多くのシステムおよびネットワークリソースを実行および監視するように設計された、無料の軽量ユーティリティです。システムとネットワークの情報を定期的に収集してグラフで表示するHTTPWebサーバーが組み込まれています。システム負荷の平均と使用状況、メモリ割り当て、ディスクドライバーの状態、システムサービス、ネットワークポート、メール統計(Sendmail、Postfix、Dovecotなど)、MySQL統計などを監視します。システム全体のパフォーマンスを監視するように設計されており、障害、ボトルネック、異常なアクティビティなどの検出に役立ちます。

続きを読む:Monitorix a System and Network Monitoring Tool for Linux

Arpwatchは、Linuxネットワーク上のイーサネットネットワークトラフィックのアドレス解決(MACおよびIPアドレスの変更)を監視するように設計された一種のプログラムです。イーサネットトラフィックを継続的に監視し、ネットワーク上のタイムスタンプとともにIPアドレスとMACアドレスのペアの変更のログを生成します。また、ペアリングが追加または変更されたときに、管理者に電子メールアラートを送信する機能もあります。これは、ネットワーク上のARPスプーフィングを検出するのに非常に役立ちます。

続きを読む:イーサネットアクティビティを監視するArpwatch

Suricataは、Linux、FreeBSD、およびWindows向けの高性能オープンソースネットワークセキュリティおよび侵入検知および防止監視システムであり、非営利団体OISF(Open Information Security Foundation)によって設計および所有されています。

続きを読む:Suricata –ネットワーク侵入検知および防止システム

VnStat PHPは、「vnstat」と呼ばれる最も人気のあるネットワークツール用のWebベースのフロントエンドアプリケーションです。 VnStat PHPは、ネットワークトラフィックの使用状況を適切なグラフィカルモードで監視します。これは、時間、日、月、および完全な要約レポートで、INおよびOUTネットワークトラフィックの合計使用量を表示します。

続きを読む:VnStat PHP –ネットワーク帯域幅の監視

Nagiosは、主要なビジネスプロセスに影響を与える前に、ネットワーク/システム管理者がサーバー関連の問題を特定して解決できるようにする、主要なオープンソースの強力な監視システムです。 Nagiosシステムを使用すると、管理者は1つのウィンドウでリモートのLinux、Windows、スイッチ、ルーター、およびプリンターを監視できます。重大な警告が表示され、ネットワーク/サーバーで問題が発生したかどうかが示されます。これにより、修復プロセスが発生する前に間接的に開始できます。

続きを読む:リモートLinux/Windowsホストを監視するためのNagios監視システムのインストール

19. Nmon:Linuxのパフォーマンスを監視する

Nmon(Nigelのパフォーマンスモニターの略)ツール。CPU、メモリ、ディスク使用量、ネットワーク、トッププロセス、NFS、カーネルなど、すべてのLinuxリソースを監視するために使用されます。このツールには、オンラインモードとキャプチャモードの2つのモードがあります。

オンラインモードは、リアルタイムの監視に使用され、キャプチャモードは、後で処理するために出力をCSV形式で保存するために使用されます。

続きを読む:LinuxにNmon(パフォーマンスモニタリング)ツールをインストールする

20. Collectl:オールインワンパフォーマンスモニタリングツール

Collectlは、CPU使用率、メモリ、ネットワーク、iノード、プロセス、nfs、tcp、ソケットなどのLinuxシステムリソースに関する情報を収集するために使用できる、さらに強力で機能豊富なコマンドラインベースのユーティリティです。

続きを読む:LinuxにCollectl(オールインワンパフォーマンスモニタリング)ツールをインストールする

Linuxサーバーのパフォーマンスを監視するためにどのような監視プログラムを使用しているのか知りたいですか?このリストに含めてほしい重要なツールを見逃した場合は、コメントでお知らせください。忘れずに共有してください。

関連項目:13のLinuxパフォーマンスモニタリングツール–パート2