在本文中,您将学习如何使用mod_status模块监控 Apache Web 服务器的负载并跟踪请求,该模块与所有现代 Linux 发行版(如RHEL、Fedora和Ubuntu)兼容。
什么是 mod_status?
mod_status是一个 Apache 模块,它提供有关 Web 服务器负载和当前连接的实时信息,可通过可在浏览器中查看的 HTML 界面访问。
该界面显示服务器统计信息,包括:
收到的请求总数
服务的总字节数
CPU 使用率
服务器负载和正常运行时间
流量统计
活跃工人与闲置工人
连接客户端的进程 ID 等等。
要查看实例,请查看Apache 项目状态页面上的官方 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
apachectl -M | grep status # 基于 Debian
接下来,打开 Apache 配置文件。
sudo vi /etc/httpd/conf/httpd.conf # 基于 RHEL
sudo nano /etc/apache2/apache2.conf #基于 Debian
要访问服务器状态,请在 Apache 配置文件中添加或修改以下部分:
<Location /server-status>
SetHandler server-status
Require local
Require ip YOUR_IP_ADDRESS
</Location>
要允许远程访问,请用您的实际 IP 地址替换YOUR_IP_ADDRESS 。
如果您使用虚拟主机,请在每个相关<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
sudo systemctl restart apache2 # 基于 Debian
您现在可以通过以下方式访问服务器的状态页面:
http://YOUR_SERVER_IP/server-status
要使其每隔几秒自动刷新一次,请将?refresh=5(或任意秒数)附加到 URL:
http://YOUR_SERVER_IP/server-status?refresh=5
从命令行检查 Apache 服务器状态
要从命令行检查 Apache 服务器状态,您可以使用lynx基于文本的 Web 浏览器。
sudo yum install lynx #基于 RHEL
sudo apt install lynx # 基于 Debian
安装后,尝试运行apachectl命令检查 Apache 服务器状态:
sudo apachectl status
这个命令将提供服务器状态的简要概述,包括处理的请求数、服务器正常运行时间和其他重要指标。
如需更详细的视图,您可以使用以下fullstatus选项:
sudo apachectl fullstatus
Apache 中的mod_status模块是一款功能强大且易于使用的监控工具,可实时了解服务器的负载和性能。这可以帮助您主动解决问题并保持服务器优化。