サーバー監視で使えるコマンド集を徹底解説【初心者~プロまで必見】
サーバー監視におけるコマンドは、サーバーの稼働状態やパフォーマンスを把握するために不可欠です。さまざまな情報を出力するコマンドを活用することで、サーバーのパフォーマンスを最適化するとともに、異常の早期発見や迅速なトラブルシューティングが可能になります。
本記事では、よく使われる基本的なものから上級者向けのものまで、サーバー監視に役立つコマンドについて解説します。具体的な活用シーンも紹介しますので、サーバー監視の品質向上や効率化にお役立てください。
サーバー監視における「コマンド」とは
サーバー監視における「コマンド」とは、サーバーの稼働状態やパフォーマンスをチェックするために使用されるシェルコマンドやスクリプトのことを指します。
コマンドは、CPUの使用率、メモリの消費状況、プロセスの状況、ディスク容量の使用量、ネットワークトラフィック、システムの稼働時間などの諸情報を取得するために使用され、リアルタイムでの監視や障害発生時のトラブルシューティングなどに役立ちます。
例えば、Linux環境では「top」「ps」「df」「netstat」「uptime」などのコマンドがよく使われます。場面に応じた適切なコマンドを定期的に実行し、得られたデータを解析することで、異常が発生する前に予防的な対応が可能になります。
また、コマンドを使った監視は、自動化ツールやスクリプトと組み合わせることで、さらに効率的な監視体制を構築できます。
基本的なサーバー監視コマンド
ここからは、具体的なサーバー監視コマンドを解説していきます。まずは、基本的な5個のコマンドを見ていきましょう。
top:システムリソースのリアルタイム監視
「top」コマンドは、サーバーのCPU使用率、メモリ消費、稼働中のプロセス情報をリアルタイムで表示するためのツールです。システム管理者は、topコマンドを使ってサーバーの全体的なパフォーマンス状態をリアルタイムに把握できます。
表示される情報には、各プロセスのCPUおよびメモリ使用率、プロセスID、実行時間などが含まれており、リソースの過剰使用やシステムの過負荷状態を迅速に発見する上で役立ちます。
また、特定のプロセスを終了させる操作も可能で、負荷を軽減するための迅速な対応が求められる状況で有効です。topコマンドは、LinuxなどのUNIXベースのシステムで標準的に利用されており、システムの健全性を維持するための必須ツールとなっています。
ps:プロセスの確認
「ps」コマンドは、現在サーバー上で動作しているプロセスのリストを表示するために使用します。特定のユーザーによって実行されているプロセスや、特定のプロセスID(PID)を持つプロセスの情報を確認できます。
不必要なプロセスを特定して終了させたり、特定のアプリケーションが正常に動作しているかをチェックしたりする際に便利です。
オプションを使用して、実行時間やメモリ使用量などの詳細なプロセス情報を取得することもできます。psコマンドは、システム管理者がサーバーのパフォーマンスを最適化し、問題のあるプロセスを迅速に特定して対処するための手段といえるでしょう。
df:ディスク使用状況の確認
「df」コマンドは、サーバーのディスク使用状況を確認するために使用します。ディスクの各ファイルシステムの使用容量、残り容量、使用率を一覧表示し、ディスクがどれだけ埋まっているかを把握するのに役立ちます。
サーバーのディスク容量が不足すると、ログファイルの生成停止やデータベースの動作不良など、システム全体に深刻な影響を及ぼす可能性があるため、定期的な確認が必要です。
オプションを指定すると、ファイルシステムのタイプや指定したディレクトリのディスク使用状況など、詳細な情報も取得できます。dfコマンドは、サーバー運用管理において、ディスク容量の監視と管理を行うために欠かせません。
netstat:ネットワーク接続の監視
「netstat」コマンドは、サーバーのネットワーク接続状況を監視するために使用します。
サーバーが現在どのIPアドレスと接続しているか、どのポートが開いているか、各接続のステータス(ESTABLISHED、LISTENINGなど)を確認できます。
netstatコマンドを活用することで、不審な接続の検出や、予期しないトラフィックの発見が可能になり、セキュリティの強化やトラブルシューティングに役立ちます。
また、netstatは、サーバーのトラフィックパターンやネットワークの健全性をリアルタイムで把握するための重要なツールでもあります。定期的に使用することで、ネットワークのパフォーマンスを最適化し、異常を早期に発見できます。
uptime:システム稼働時間の確認
「uptime」コマンドは、サーバーのシステム稼働時間や現在の時刻、現在のユーザー数、平均負荷(ロードアベレージ)を確認するためのコマンドです。サーバーがどれだけの期間稼働しているかについて、過去1分、5分、15分間の平均負荷を表示します。
uptimeコマンドによって得られる情報は、サーバーの安定性を確認したり、メンテナンスのタイミングを計画したりする際に重宝します。
例えば、サーバーの再起動が必要な場合、uptimeの情報を基に適切なタイミングを判断できます。システムが長時間稼働し続けている場合は、リソースの枯渇やハードウェアの問題が発生している可能性があるため、定期的に確認することをおすすめします。
上級者向けのサーバー監視コマンド
続いて、上級者向けの5つのサーバー監視コマンドを紹介します。
iostat:CPUとI/Oの詳細監視
「iostat」コマンドは、サーバーのCPU負荷とディスクI/O(入力/出力)操作の統計情報を提供するコマンドです。システムのパフォーマンスを評価する際に効果的で、特にディスクの読み書き速度やCPU使用率に関する詳細な情報を取得できます。
iostatは、ディスクI/Oのボトルネックを特定し、CPUがディスク操作にどれだけの時間を費やしているかを分析するために使用できます。iostatで得られる情報を利用すると、システムのリソースを最適に利用するための調整が可能です。
オプションを指定して、特定のディスクやパーティションの詳細なI/O統計情報を取得することもできます。パフォーマンスを診断する上で重要なコマンドであり、特にディスクI/Oに関連する問題の早期発見に役立ちます。
vmstat:メモリとシステムプロセスの監視
「vmstat」コマンドは、メモリの使用状況、プロセスの状態、スワップ、I/O操作、システムコール、CPU活動など、システム全体のパフォーマンスに関する包括的な情報を提供します。
vmstatは、特定の間隔で情報を更新することにより、時間の経過とともにシステムのパフォーマンスの変化を観察できます。メモリリークの発見やスワップの発生頻度、CPUの負荷分散の状況を分析する際に役立つコマンドです。
例えば、メモリ使用量が急増している場合、vmstatの出力から原因となるプロセスを特定できます。システムのパフォーマンスの全体像を把握し、潜在的な問題の発見やパフォーマンスの最適化を行いたい時に、積極的に使用したいコマンドのひとつです。
sar:システムアクティビティの歴史的データ解析
「sar」コマンドは、システムのパフォーマンスデータを収集し、過去の活動データを解析するために使用します。CPU使用率、メモリ使用量、ディスクI/O、ネットワークトラフィックなどの詳細な統計情報を一定間隔で収集し、履歴データとして保存する機能があります。
sarは、システムのパフォーマンスが問題となる時期や原因を特定するために有効で、例えばピーク時の負荷状況を解析してパフォーマンスのボトルネックを発見できます。
また、長期的なパフォーマンスのトレンドを監視し、計画的な容量管理や性能改善策を講じるための基礎データとしても役立ちます。
nmap:ネットワークスキャンとポートの確認
「nmap」コマンドは、ネットワークのスキャンとポートの確認を行う目的で使われます。
nmapは、サーバーやネットワーク上のホストをスキャンし、開いているポート、使用中のサービス、ホストのOS情報などを特定できます。ネットワークのセキュリティ評価や脆弱性の発見に広く利用されており、不審なアクセスの監視やネットワークの構成確認に便利です。
nmapを使うことで、意図しないポートが開いていないか、未知のサービスが稼働していないかをチェックでき、セキュリティリスクの低減を図れます。セキュリティの観点からも、ネットワークの健全性を保つための重要なコマンドです。
htop:topコマンドの拡張版で詳細なリソース監視
「htop」コマンドは、「top」コマンドの拡張版で、システムリソースの詳細な監視を行います。
htopは、topよりも視認性の高いインターフェースを提供しており、プロセスの階層表示やリソース使用状況をカラーで視覚化します。これにより、プロセスの優先順位変更や終了操作をより直感的に行えるため、リアルタイムでのシステム管理が容易になります。
また、CPU、メモリ、スワップの利用状況をグラフ表示する機能も備えており、パフォーマンスの変動を視覚的に把握できます。
htopは、より詳細かつリアルタイムなリソース監視を求めるシステム管理者にとって不可欠なコマンドであり、システムの最適化やトラブルシューティングに役立ちます。
トラブルシューティングに役立つコマンド
最後に、サーバーになんらかの問題が起こった時に、トラブルシューティングに役立つ5つのコマンドを紹介します。
dmesg:カーネルメッセージの確認
「dmesg」コマンドは、カーネルメッセージバッファを表示するために使用します。カーネルメッセージには、システムの起動時に発生するハードウェアの初期化情報や、デバイスの接続・切断、ドライバのエラー、ハードウェア障害などに関する情報が含まれます。
サーバートラブルが発生した際、dmesgを使ってカーネルがログに記録したエラーメッセージや警告を確認すると、問題の原因を特定しやすくなります。
例えば、ハードディスクの障害やネットワークカードのエラーが発生した場合に、詳細なエラーメッセージがdmesgに記録されるため、内容を読み解くことで確実かつ迅速なトラブルシューティングが可能です。
dmesgの出力は「less」や「grep」などの他のコマンドと組み合わせてフィルタリングすると、必要な情報をより効率的に抽出できます。
ping/traceroute:ネットワーク接続のテスト
「ping」コマンドと「traceroute」コマンドは、ネットワーク接続のテストや障害の原因を特定するために広く使われています。
pingは、特定のIPアドレスやドメイン名に対してICMPエコー要求を送信し、応答があるかどうかを確認することで、ホストが正常に接続されているかを判断します。ネットワークの遅延時間やパケットロスの状況も確認でき、ネットワークの健全性を簡単にチェックできます。
一方、tracerouteは、パケットが送信先に到達するまでの経路を表示し、途中の各ルーターの応答時間を測定します。ネットワーク上での遅延や障害が発生している場所を特定する際に、特に役立つコマンドです。
tcpdump:パケットキャプチャと分析
「tcpdump」コマンドは、ネットワークインターフェースを通過するパケットをキャプチャして詳細に分析するためのコマンドです。
tcpdumpは、ネットワークトラフィックの解析を行う際に、特定のIPアドレス、ポート番号、プロトコルに基づいてフィルタリングを行い、必要なデータのみを取得できます。特定の通信の詳細な内容を確認したり、異常なトラフィックや不正アクセスを検出することが可能です。
例えば、特定のサービスが正しく動作していない場合や、セキュリティインシデントが疑われる場合に、tcpdumpを使用してリアルタイムで通信内容を監視し、問題の原因を深掘りすなどの使い方が考えられます。
tcpdumpは、パケットレベルでのトラブルシューティングを行うための高い専門知識が必要ですが、ネットワーク管理の専門家にとって欠かせないコマンドのひとつです。
whois:ドメイン情報の確認
「whois」コマンドは、特定のドメイン名やIPアドレスの登録情報を取得するために使用します。
whoisは、ドメインの所有者、登録機関、登録日、有効期限、ネームサーバー情報など、関連する詳細な情報を提供します。
ネットワーク関連のトラブルシューティングにおいて、特定のドメインやIPアドレスが誰によって管理されているのかを確認し、問題の原因を追跡する際に重宝します。また、不審なドメインやIPアドレスの調査にも使用できるため、セキュリティ対策としても効果的です。
コマンドが役立つ活用シーンの具体例
コマンドが役立つ活用シーンの具体例として、よくある6つのケースを紹介します。どのようにコマンドを使えば良いのかイメージが湧かないという方は、ぜひ参考にご活用ください。
リソース不足や負荷の問題が発生したとき
サーバーがリソース不足や過負荷状態に陥ったときは、「top」や「htop」コマンドを使用して、CPUやメモリの使用状況をリアルタイムで監視するのが有効です。
topまたはhtopコマンドによって、どのプロセスがリソースを消費しているかを特定し、必要に応じて優先順位の低いプロセスを停止するなどの対策を実施できます。
また、「vmstat」や「iostat」を使用して、メモリやディスクI/Oの使用状況を詳しく分析し、システムのパフォーマンスを最適化する方法も役立ちます。vmstatやiostatにより、サーバーの負荷の原因を迅速に特定し、対応策を実行できます。
ネットワークの遅延や接続問題が発生したとき
ネットワークの遅延や接続の問題が疑われる場合、「ping」や「traceroute」コマンドを利用して、ネットワークの接続状態を確認することが推奨されます。
「ping」を使うと、特定のサーバーやネットワーク機器への接続応答時間を測定し、パケット損失が発生しているかを判断できます。
一方、「traceroute」を使用すると、パケットが目的地に到達するまでの経路を追跡し、途中で遅延が発生しているノードや障害がある場所を特定できます。
さらに、複雑なネットワーク問題の分析には「tcpdump」コマンドでネットワークパケットをキャプチャし、通信内容の詳細を確認する施策も有効です。
システム障害や異常を検知したとき
システム障害や異常が発生した際には、「dmesg」コマンドを使用して、カーネルメッセージを確認し、システムエラーやハードウェア障害の詳細情報を取得してみましょう。
カーネルメッセージには、システムの起動時に発生したエラーやデバイスの接続問題、ドライバのエラーメッセージなどが含まれるため、問題の原因を特定する手がかりを得られる可能性があります。
また、「sar」コマンドを使用して、システムのパフォーマンスデータを履歴として解析することで、障害発生前後の負荷状況やリソース使用状況の変化を追跡し、根本原因を突き止めるのに役立ちます。
ディスク使用量の急増を確認するとき
ディスク使用量が急増している場合、「df」コマンドを使用して、各ファイルシステムの使用容量を確認しましょう。dfコマンドを使うと、どのパーティションやディレクトリが急激にスペースを消費しているかを特定できます。
また、「du」コマンドを併用すると、特定のディレクトリやファイルの使用容量を詳細に調査し、原因となるファイルを見つけることが可能です。
システムの起動時間や稼働状態を確認するとき
サーバーの稼働時間や起動時間を確認したい場合、「uptime」コマンドを使用します。uptimeコマンドは、システムが最後に再起動されてからの経過時間、現在のユーザー数、過去の平均負荷などの情報を表示します。
システムが長時間稼働している場合、ハードウェアの劣化やリソースの枯渇が懸念されるため、再起動のタイミングを計画する際の参考情報として有用です。また、サーバーの安定性を監視するための指標としても重宝します。
プロセスの異常動作を検出するとき
プロセスが異常に動作している場合、「ps」コマンドを使用して、現在実行中のプロセスのリストを表示し、特定のプロセスの状態を確認するのが有効です。
特定のプロセスが異常に多くのリソースを消費している場合や、予期しないプロセスが実行されている場合、問題のプロセスを特定し、速やかに終了させることができます。
また、「top」や「htop」コマンドを併用すると、リアルタイムでリソース使用状況の詳細を把握し、ボトルネックになっているプロセスを見つけて対処できます。
まとめ
リアルタイムでサーバーの稼働状態やパフォーマンスを把握するためには、コマンドの活用が欠かせません。
CPU使用率やメモリ消費量をリアルタイムで監視する「top」コマンドや、ディスクの使用状況を確認する「df」コマンドなど、押さえておきたいコマンドは数多くあります。コマンドに不慣れな方は、まずは基本のコマンドを押さえた上で、少しずつ知識の幅を広げていくと良いでしょう。
コマンドは、必要に応じて監視ツールやスクリプトと組み合わせると、自動化を図ることも可能です。コマンドの操作に慣れてきたら、日々の監視業務に少しずつ取り入れると、さらに安全で安定的な運用を実現できます。