ウェブサイト検索

リアルタイムでApacheの負荷とリクエストを監視する方法


この記事では、すべての現代的なLinuxディストリビューション、例えばRHEL、Fedora、およびUbuntuに対応したmod_statusモジュールを使用して、Apacheウェブサーバーの負荷を監視し、リクエストを追跡する方法を学びます。

mod_statusとは何ですか?

mod_statusは、Webサーバーの負荷や現在の接続状況に関するリアルタイム情報を提供するApacheモジュールであり、ブラウザで表示できるHTMLインターフェースを通じてアクセスできます。

このインターフェースは、次のサーバー統計を表示します:

  • 受け取ったリクエストの総数
  • 提供された合計バイト数
  • CPU使用率
  • サーバーの負荷と稼働時間
  • トラフィック統計
  • アクティブな労働者とアイドルな労働者
  • 接続されているクライアントのプロセスIDやその他の情報。

ライブの例については、公式のApacheステータスページを確認してください。

テスト環境

ここでの手順は、次の構成を使用します。

  • オペレーティングシステム: Ubuntu 22.04/RHEL 9
  • アプリケーション: Apache HTTP サーバー
  • ドキュメントルート: /var/www/html
  • Apache設定ファイル: /etc/apache2/apache2.conf(Debian/Ubuntu)または /etc/httpd/conf/httpd.conf(CentOS/RHEL)
  • デフォルトHTTPポート: 80 TCP

Apacheがあなたのシステムにインストールされ、実行中であることを確認してください。必要に応じて、Apacheサーバーのセットアップに関するガイドを参照してください。

Apacheでmod_statusを有効にする

ほとんどの現代的なディストリビューションでは、mod_statusはデフォルトで有効になっており、次のコマンドを実行することで確認できます。

ls /etc/httpd/modules | grep mod_status      # RHEL-based
apachectl -M | grep status                   # Debian-based

次に、Apacheの設定ファイルを開きます。

sudo vi /etc/httpd/conf/httpd.conf    # RHEL-based
sudo nano /etc/apache2/apache2.conf   # Debian-based

サーバーのステータスにアクセスするには、Apacheの設定ファイルに以下のセクションを追加または修正してください。

<Location /server-status>
    SetHandler server-status
    Require local
    Require ip YOUR_IP_ADDRESS
</Location>

リモートアクセスを許可するには、YOUR_IP_ADDRESSを実際のIPアドレスに置き換えてください。

仮想ホストを使用している場合は、関連する各<VirtualHost>セクション内にこの設定を繰り返してください。

<VirtualHost *:80>
    DocumentRoot /var/www/html
    ServerName example.com
    <Location /server-status>
        SetHandler server-status
        Require ip YOUR_IP_ADDRESS
    </Location>
</VirtualHost>

CPU負荷や秒間リクエスト数などの詳細なメトリックを取得するには、設定ファイルにこの行を追加してExtendedStatusを有効にすることができます。

ExtendedStatus On

変更を加えた後、それらを適用するためにApacheサービスを再起動してください:

sudo apachectl configtest
sudo systemctl restart httpd    # RHEL-based
sudo systemctl restart apache2  # Debian-based

サーバーのステータスページにアクセスするには、次のように移動します:

http://YOUR_SERVER_IP/server-status

自動的に数秒ごとに更新するには、URLの末尾に?refresh=5(または任意の秒数)を追加してください:

http://YOUR_SERVER_IP/server-status?refresh=5

コマンドラインからApacheサーバーのステータスを確認する

コマンドラインからApacheサーバーの状態をチェックするには、lynxを使用できます。これはテキストベースのウェブブラウザです。

sudo yum install lynx     # RHEL-based
sudo apt install lynx     # Debian-based

インストール後、apachectl コマンドを実行して Apache サーバーの状態を確認してください。

sudo apachectl status

これは、処理されたリクエストの数、サーバーの稼働時間、その他の重要な指標を含むサーバーの状態の簡単な概要を提供します。

より詳細なビューを得るには、fullstatusオプションを使用できます:

sudo apachectl fullstatus
結論

mod_statusモジュールは、Apacheでサーバーの負荷とパフォーマンスをリアルタイムで把握するための強力で使いやすい監視ツールです。これにより、問題を事前にトラブルシューティングし、サーバーを最適化された状態に保つことができます。

関連記事: