共计 2578 个字符,预计需要花费 7 分钟才能阅读完成。
Apache 服务器性能监控
1、使用自带 mod_status 模块监控
1)加载 mod_status.so 模块
在 httpd.conf 中打开 LoadModule status_module modules/mod_status.so
2)修改 httpd.conf 配置文件增加(删注释 #)如下内容:
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from all
</Location>
ExtendedStatus On
<location /server-status>:server-status 这个名字可以修改。
Deny from:表示禁止的访问地址;nothing 表示没有禁止访问的地址。
Allow from:表示允许的地址访问;all 表示所有的地址都可以访问。
ExtendedStatus On:显示其他信息,包括子 httpd 进程的应答信息。
Order deny,allow:优先级顺序,deny— 拒绝,allow– 允许。
重启 apache 服务器后在浏览器中访问:http://serverip/server-status 或 http://serverip/server-status?refresh=N(刷新时间)或 http://serverip/server-status/auto(简单的状态表格)
重要指标:
- Total Accesses:到目前为止 apache 接收的联机数量
- Total kBytes:接收的总的字节数
- Uptime:服务器运行的总时间(单位:s)
- CPULoad:当前由 apache 服务器消耗的 CPU
- ReqPerSec:平均每秒请求数,也就是命中率 HPS
- BytesPerSec:平均每秒发送的字节数
- BytesPerReq:平均每个请求发送的字节数
- BusyWorkers:提供服务的线程数,正在工作数
- IdleWorkers:空闲的线程数
2、使用自带 mod_info 模块监控
相对于 mod_status 模块提供的服务器状态信息,mod_info 主要提供服务器的配置信息,并且不能动态更新
修改 httpd.conf 配置文件增加(删注释 #)如下内容:
<Location /server-info>
SetHandler server-info
Order deny,allow
Deny from all
Allow from all
</Location>
重启 apache 服务器后在浏览器中访问:http://serverip/server-info,可以使用如下查询参数:
?config 显示 apache 配置文件
?<module-name> 显示模块相关信息
?list 显示所有使用中的模块列表
?server 显示基本的服务器信息
?hooks 显示每个模块所属的钩子列表
另外,mod_info 模块还提供了 AddModuleInfo 指令来为 server-info 显示的模块增加额外的定制信息。
apache 自带的 mod_status 和 mod_info 模块提供的监控功能比较弱,而且还可能会带来有安全方面的问题,所以一般建议取消这些模块功能,使用第三方工具来进行监控。
3、第三方工具监控
zabbix:基于 PHP 脚本的分布式系统监控以及网络监视功能的企业级解决方案,也能监控 apache 服务器。
Nagios:监视系统运行状态和网络信息的监视系统,和 zabbix 一样也提供基于 Web 的管理页面
4、LR 监控 apache 服务器
开启 mod_status 模块功能,在 LR 的 controller 中找到 apache 资源图双击并右键添加度量,如下图:
添加 apache 服务器 IP 地址、选择系统平台、添加需要监控的计数器即可进行监控了。
可能或存在 Apache 版本提供的计数器与 LR 默认计数器不一致的问题,就需要通过修改 LR 安装目录下 \dat\monitors 下的 apache.cfg 配置文件来解决。
5、利用 apachetop 工具监控 apache 日志
apachetop 以类似 top 命令的方式实时显示 apache 的访问日志的统计信息,安装 apachetop 工具后,运行如下命令即可:
apachetop -f /usr/local/apache2/logs/access_log(apache 日志文件目录)
6、其他实用监控命令
1)用 ps 来看 httpd 进程数
ps aux | grep httpd | wc -l
2)用 netstat 来看当前的连接数
netstat -ant | grep “:80” | wc -l
3)实时检测 httpd 连接数
watch -n 1 -d “pgrep httpd | wc -l”
4)计算 httpd 进程占用内存的平均数
ps aux|grep -v grep|awk‘/httpd/{sum+=$6}; END{print sum/n}’
5)查看 Apache 的并发请求数及期 TCP 连接状态
netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’
返回结果示例:
LAST_ACK 5
SYN_RECV 30
ESTABLISHED 1597
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057• 其中的 SYN_RECV 表示正在等待处理的请求数;ESTABLISHED 表示正常数据传输状态;TIME_WAIT 表示处理完毕, 等待超时结束的请求数.
状态:描述
• CLOSED:无连接是活动的
• LISTEN:服务器在等待进入呼叫
• SYN_RECV:一个连接请求已经到达, 等待确认
• SYN_SENT:应用已经开始, 打开一个连接
• ESTABLISHED:正常数据传输状态
• FIN_WAIT1:应用说它已经完成
• FIN_WAIT2:另一边已同意释放
• ITMED_WAIT:等待所有分组死掉
• CLOSING:两边同时尝试关闭
• TIME_WAIT:另一边已初始化一个释放
• LAST_ACK:等待所有分组死掉
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-01/139824.htm