Bashプログラミング
 Computer >> コンピューター >  >> プログラミング >> Bashプログラミング

atopでLinuxサーバーのパフォーマンス監視を簡単に:インストールから使い方まで徹底解説

atopは、Linux向けのフルスクリーン型パフォーマンス監視ツールです。実行中のプロセスだけでなく、すでに終了したプロセスについても詳細なレポートを提供します。これは、システムのアクティビティを一定間隔で継続的にログとして記録し、後から参照できるように保存しているためです。

これらのログは、システム分析、パフォーマンスチューニング、ボトルネックの特定、問題のデバッグ、予期しない負荷増大の原因追跡など、さまざまな目的に活用できます。

従来のtopやhtopなどのツールがリアルタイムのデータしか表示できないのに対し、atopは過去にさかのぼって、記録された任意の時間帯に何が起きていたのかを正確に確認できます。この特性により、サーバーを安定稼働させたいシステム管理者にとって特に価値のあるツールとなっています。

本記事では、atopの機能概要、主要なLinuxディストリビューションへのインストール方法、そしてシステムのパフォーマンス履歴を効果的に監視・分析するための使い方を解説します。

atopとは?

atopは、Linux向けのフルスクリーン型システム・プロセスモニターで、システム全体およびプロセスごとのアクティビティを報告するように設計されています。主な機能は以下の通りです。

  • 実行中および完了したすべてのプロセスを表示
  • CPU、メモリ、ディスク、ネットワーク使用量をプロセス単位で監視
  • すべてのアクティビティをバイナリファイルに記録し、後から分析可能
  • ゾンビプロセスや孤児プロセスを検出
  • スレッドレベルのリソース使用状況を表示
  • ユーザー別・プログラム別のアクティビティを監視
  • 最新カーネルにおけるCPU/メモリ/ディスクのPSI(Pressure Stall Information)を表示
  • cgroup v2に対応し、コンテナ環境に最適
  • Netatopとの連携により、プロセスごとのネットワーク統計を取得(オプション)

atopを際立たせているのは、これらのアクティビティを一定間隔(デフォルトは10分ごと)でディスクに記録できる点です。記録されたログを使えば、システム履歴の任意の時点を再生し、何が起こっていたのかを詳しく調べられます。

ランダムに発生するクラッシュのデバッグ、リソースの不正利用の追跡、長期的な使用状況の監視などが必要な場合、特にヘッドレスサーバーや本番環境では、この機能が大きな武器になります。

Linuxへのatopのインストール

atopはほとんどのLinuxディストリビューションのリポジトリで提供されているため、パッケージマネージャーでインストールするか、最新版が必要な場合はソースからコンパイルできます。

RHEL/CentOS/Fedoraの場合

RHEL系ディストリビューションでは、まずEPELリポジトリを有効化する必要があります。

sudo dnf install epel-release

EPELリポジトリを有効化したら、次のコマンドでatopをインストールできます。

sudo dnf install atop

Debian/Ubuntuの場合

Debian系ディストリビューションでは、aptコマンドで標準リポジトリからインストールできます。

sudo apt-get install atop

Arch Linux / Manjaroの場合

Archやその派生ディストリビューションなどローリングリリース型を使用している場合は、コマンド1つでインストールできます。

sudo pacman -S atop

ソースからインストール(任意)

最新版が必要な場合(リポジトリのバージョンが古い、最新機能を使いたいなど)は、ソースからビルドできます。

wget https://www.atoptool.nl/download/atop-2.12.0.tar.gz
tar -xzf atop-2.12.0.tar.gz
cd atop-2.12.0
make
sudo make install

注意: ディストリビューションによっては、build-essential(Debian系)やgccmakeなどの開発ツールが必要になる場合があります。

atopのインストールが完了したら、バックグラウンドのログ収集サービスを有効化しましょう。これにより、システム起動時に自動的にパフォーマンスデータの収集が始まります。

sudo systemctl enable --now atop
sudo systemctl enable --now atop-rotate.timer

atopの基本的な使い方

atopのインストールとログサービスの有効化が済んだら、ターミナルで以下のコマンドを実行して起動します。

atop

すると、topに似た動的で色分けされたインターフェースが表示され、デフォルトでは10秒ごとに画面が更新されます。

atopでLinuxサーバーのパフォーマンス監視を簡単に:インストールから使い方まで徹底解説

ログ取得間隔の変更(デフォルト:600秒)

デフォルトでは、atopは600秒(10分)ごとにシステムのアクティビティを記録します。一般的な監視には十分ですが、短時間のリソース使用量スパイクの追跡やパフォーマンスボトルネックの調査には、間隔が長すぎる場合があります。そのような場合は、以下のコマンドで60秒に変更できます。

sudo sed -i 's/600/60/' /etc/atop/atop.daily [RedHat系の場合]
sudo sed -i 's/600/60/' /etc/default/atop [Debian系の場合]

この変更後、atopは1分ごとにログを収集するようになり、断続的な問題の診断、傾向分析、高負荷サーバーの監視において、システムの挙動をより明確に把握できるようになります。

スケジューリング情報の表示(sキー)

カーネルがプロセスをどのようにスケジューリングしているかを知りたい場合は、sキーを押します。各プロセスが消費しているCPU時間や「running」状態だった時間が表示されます。

atop -s

メモリ使用量の分析(mキー)

mキーを押すと、実行中の全プロセスのメモリ使用状況を包括的に確認できます。VSIZE列は割り当てられた仮想メモリの総量を、RSIZE列は現在RAM上に存在するメモリ量を示します。また、VGROWRGROWは現在のインターバル中にプロセスが獲得または解放した仮想・常駐メモリの量を、MEM列は各プロセスが使用しているメモリの全体に占める割合を表示します。

atop -m

ディスク使用率の監視(dキー)

ディスクI/Oは多くのシステムで共通のボトルネックです。dキーを押すと、LVM(論理ボリューム管理)の統計やディスクごとのパフォーマンスを含む、システムレベルのディスクアクティビティを確認できます。RDDSK列とWRDSK列は読み書きされているデータ量(KB/s)を示し、DSK列とLVM列はどのボリュームやディスクが最も活発かを特定するのに役立ちます。

atop -d

プロセスの詳細情報の表示(vキー)

vキーを押すと、各プロセスの詳細な内訳が表示されます。UIDPIDGID、CPU使用率などが確認でき、数値識別子で特定のユーザーやサービスを追跡したり、リソースを大量消費するプロセスがどのグループに属しているかを確認したりする際に便利です。

atop -v

プロセスのコマンドライン表示(cキー)

各プロセスが実際にどのコマンドで実行されているかを確認したい場合は、cキーを押します。プロセス名が完全なコマンドラインに置き換わり、どのスクリプト、バイナリ、オプションが使われたかを特定できます。同じアプリケーションの複数インスタンスを区別したり、ユーザーが投入したジョブをデバッグしたりするのに役立ちます。

atop -c

プログラム別のプロセス集計(pキー)

プログラムレベルのアクティビティの概要を把握するには、pキーを使用します。実行ファイルごとにデータが集計され、それぞれが何回起動されたか、どれだけリソースを消費したかがわかります。左端の列に起動回数、右端の列にプログラム名が表示されます。

atop -p

ユーザー別のプロセス集計(uキー)

ユーザーレベルのリソース使用状況に関心がある場合は、uキーを押します。各ユーザーが現在実行中または監視期間中に実行したプロセス数と、累積CPU・メモリ使用量が表示されます。

atop -u

ネットワーク使用量の監視(nキー)

プロセスごとのネットワークトラフィック統計を有効にするには、Netatopカーネルモジュールをインストールして有効化する必要があります。これにより、atopはプロセスごとの送受信トラフィックを表示できるようになります。

# RedHat系:
sudo yum install kernel-devel zlib-devel
# Debian系:
sudo apt-get install zlib1g-dev

ダウンロードしてビルドします。

wget https://www.atoptool.nl/download/netatop-0.3.tar.gz
tar -xvf netatop-0.3.tar.gz
cd netatop-0.3
make
sudo make install

モジュールを読み込み、デーモンが起動後に自動的に開始されるように設定します。

sudo systemctl start netatop
sudo systemctl enable netatop

インストール後、atop内でnキーを押すと、各プロセスの送受信バイト数、パケット数、ネットワーク関連エラーが表示されます。

atop -n

履歴ログへのアクセス

atopはバイナリ形式のログファイルを以下の場所に保存します。

/var/log/atop/atop_YYYYMMDD

例えば、atop_20250630というファイルには2025年6月30日のログが含まれています。これらはバイナリファイルのため人間には直接読めず、atopだけが解析できます。

今日のログから特定の時間帯(例:午前5時5分以降)を表示するには、次のようにします。

atop -r -b 05:05 -l 1

各オプションの意味は以下の通りです。

  • -r: ログファイルから読み込むことを指定
  • -b: 開始時刻を指定
  • -l 1: 出力を1つのインターバルスナップショットに制限

スペースキーで次のインターバルへ進み、Tキーで前に戻ることができます。Zキーを押すと最新のエントリにジャンプします。

atop内でヘルプを表示

atopの画面内で?キーを押すと、コマンドとショートカットの一覧が表示されます。あまり知られていないオプションを発見したり、表示を自分好みにカスタマイズしたりする際に役立ちます。

まとめ

本記事が、Linuxシステムの問題の絞り込みや未然防止に役立つことを願っています。atopの使い方について質問や不明点がある場合は、下のコメント欄でお気軽にお尋ねください。

  1. Debian 11/10へのZabbix導入ガイド:初心者向けステップバイステップ解説

    Zabbixは、PHP言語で開発された無料かつオープンソースのITインフラ監視ソフトウェアです。豊富な機能を備え、ネットワーク、サーバー、アプリケーション、サービス、クラウドリソースの監視に幅広く活用されています。さらに、ストレージデバイス、データベース、仮想マシン、テレフォニーシステム、ITセキュリティリソースなど、さまざまな環境の監視にも対応しています。開発者にとって嬉しい点として、ZabbixにはAPIが用意されており、Zabbixが持つほぼすべての機能へアクセスできます。これにより、あらゆるソフトウェアとの双方向連携が容易になり、サードパーティ製ソフトウェアにZabbixの機能を組み込

  2. Collectdを活用したLinuxクライアント向け中央監視サーバーの構築手順

    はじめに 本チュートリアルでは、Collectdデーモンのネットワーク(network)プラグインを有効化し、ネットワーク上のさまざまなサーバーに導入された他のCollectdクライアントから統計情報を集約する「中央監視サーバー」として動作させる方法を解説します。 この構成では、まず社内の1台のホストにCollectdデーモン(およびCollectd-Webインターフェース)を導入し、サーバーモードで稼働させて監視の中心点とします。残りの監視対象ホストでは、Collectdをクライアントモードで設定するだけで、収集したすべての統計情報が中央サーバーへ送信される仕組みです。 前提条件 Col