在Linux系统中如果想要监控Apache服务器的负载可以通过mod_status,能获取到实时服务器的性能和状态信息,如服务器的负载、工作进程数量、请求队列长度、空闲/间歇工作线程数、服务器CPU使用率等信息。mod_status属于Apache HTTP服务器的一个模块,提供页面显示服务器的当前状态。华纳云将在下文为大家分享关于启用和配置mod_status模块的具体操作方法。
需要先保证Apache服务器中已经安装好mod_status模块,默认情况下mod_status包含在Apache的标准模块中,需要手动进行启动。通过以下命令进行检查:
apachectl -M | grep status
命令的输出结果中如果包含status_module,则表示该模块已安装。
确认安装后就可以开始启用mod_status模块,在Debian/Ubuntu系统中:
sudo a2enmod status
sudo systemctl restart apache2
在 CentOS/RHEL 中,编辑Apache配置文件(通常位于/etc/httpd/conf/httpd.conf或/etc/httpd/conf.d/status.conf),确保加载了mod_status模块:
LoadModule status_module modules/mod_status.so
重启Apache:
sudo systemctl restart httpd
mod_status的配置,在 Debian/Ubuntu 系统中,可以编辑/etc/apache2/mods-available/status.conf文件。在 CentOS/RHEL 系统中,可以编辑/etc/httpd/conf/httpd.conf或创建一个新的配置文件/etc/httpd/conf.d/status.conf。示例:
<Location "/server-status">
SetHandler server-status
Require local
# 如果希望从特定的 IP 地址访问,可以使用:
# Require ip 192.168.1.0/24
</Location>
# 允许显示完整的服务器状态信息,包括请求的细节
ExtendedStatus On
· 其中,SetHandler server-status:指定/server-statusURL映射到mod_status处理程序;Require local:只允许从本地主机访问。如果需要从特定IP地址访问,可以更改为Require ip [IP地址]; ExtendedStatus On:启用详细状态信息。
更改完配置文件后,以应用配置重启Apache,在Debian/Ubuntu系统中:
sudo systemctl restart apache2
在 CentOS/RHEL 中:
sudo systemctl restart httpd
完成后,可以用浏览器来访问服务器的状态页面,如Apache服务器运行在localhost或者服务器的IP地址为192.168.2.22,通过以下命令访问:
http://localhost/server-status
或
http://192.168.2.22/server-status
配置正常会输出一个包含服务器状态的页面。为保证服务器的状态页面能被安全访问,可以通过Apache访问控制或者防火墙来限制访问。
在/var/www/html/server-status目录下创建一个.htaccess文件:
AuthType Basic
AuthName "Restricted Access"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
再创建一个.htpasswd文件添加用户:
sudo htpasswd -c /etc/apache2/.htpasswd username
防火墙限制访问可以通过iptables或者firewalled来限制访问:
sudo iptables -A INPUT -p tcp -s 192.168.2.0/24 --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j DROP
或:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.2.0/24" port protocol="tcp" port="80" accept'
sudo firewall-cmd --reload
为了安全考虑,最好只在内部网络或者收信任的环境中启用mod_status,因为mod_status页面暴露可能带来敏感信息泄露风险。根据防火墙的规则来允许访问/server-status URL;根据Apache服务器的版本和配置来适当调整文件路径和指令。