Nginx在Ubuntu上如何监控性能
导读:Nginx在Ubuntu上的性能监控实践 一 快速检查与内置状态页 启用并验证内置模块:使用 Nginx 自带的 ngx_http_stub_status_module 暴露实时指标。检查是否支持: 命令:sudo nginx -V 2...
Nginx在Ubuntu上的性能监控实践
一 快速检查与内置状态页
- 启用并验证内置模块:使用 Nginx 自带的 ngx_http_stub_status_module 暴露实时指标。检查是否支持:
- 命令:
sudo nginx -V 2> & 1 | grep -- '--with-http_stub_status_module'
- 命令:
- 配置状态页(示例):
- 在 /etc/nginx/sites-available/default 或 /etc/nginx/conf.d/status.conf 的 server 块中添加:
location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; # 建议仅内网或本机访问 deny all; } - 检查并重载:
sudo nginx -t & & sudo systemctl reload nginx
- 在 /etc/nginx/sites-available/default 或 /etc/nginx/conf.d/status.conf 的 server 块中添加:
- 访问与解读:
- 本机测试:
curl http://127.0.0.1/nginx_status - 关键字段含义:
- Active connections:当前活跃连接数
- accepts/handled/requests:累计接受/成功处理/总请求数
- Reading/Writing/Waiting:读取/写入/等待中的连接数
- 本机测试:
- 安全建议:状态页仅在内网开放,或通过 Nginx 反向代理 + IP 白名单 暴露,避免被滥用。
二 日志分析与可视化
- 实时与离线分析:
- 实时查看:
tail -f /var/log/nginx/access.log - 错误码分布:
awk '{ print $9} ' /var/log/nginx/access.log | sort | uniq -c | sort -nr
- 实时查看:
- 使用 GoAccess 生成可视化报告:
- 安装:
sudo apt-get install goaccess - 生成 HTML 报告:
goaccess /var/log/nginx/access.log -o /var/www/html/report.html --log-format=COMBINED
- 安装:
- 集中化方案(可选):
- 使用 ELK Stack(Elasticsearch + Logstash + Kibana) 收集、存储与可视化 Nginx 日志,便于长期趋势分析与告警。
三 指标采集与可视化平台
- 开源组合 Prometheus + Grafana:
- 指标采集:
- 系统层:Node Exporter(默认端口 9100)
- Nginx 层:
- 方式 A(推荐):nginx-prometheus-exporter 读取 stub_status 页面
- 启动示例:
nginx-prometheus-exporter -nginx.scrape-uri=http://127.0.0.1/nginx_status - 默认指标端口:8080
- 启动示例:
- 方式 B:若 Nginx 作为反向代理暴露 /metrics,可直接抓取(端口依实际配置)
- 方式 A(推荐):nginx-prometheus-exporter 读取 stub_status 页面
- Prometheus 抓取示例(prometheus.yml):
scrape_configs: - job_name: 'node' static_configs: - targets: ['localhost:9100'] - job_name: 'nginx' static_configs: - targets: ['localhost:8080'] - Grafana:
- 访问 http://:3000,添加 Prometheus 数据源,导入 Nginx 官方或社区仪表盘(如 ID 12708),即可查看连接、请求、响应时延、错误率等面板。
- 指标采集:
- 企业级 APM(可选):
- New Relic、Datadog 提供 Nginx 集成,支持请求分析、错误追踪与告警,适合快速落地与托管运维。
四 系统级资源与健康检查
- 资源监控常用命令:
- 进程与负载:
top/htop - 内存:
free -h - 磁盘与 I/O:
iostat -x 1(需sudo apt-get install sysstat) - 网络与连接:
netstat -tulpen | grep ':80\|:443' - 综合采样:
vmstat 1
- 进程与负载:
- 建议做法:
- 将关键命令输出纳入 定时任务 与 日志轮转,配合 阈值告警(如连接数、5xx 比例、磁盘使用率)实现主动发现。
五 关键指标与告警建议
- 建议重点关注的指标与阈值示例:
- Active connections:接近 worker_connections 上限时触发扩容或优化
- 5xx 错误率:> 1% 持续 5 分钟即告警,排查上游与健康检查
- 平均响应时间:显著上升时结合日志与后端(如 PHP-FPM、数据库)定位瓶颈
- 请求速率与带宽:突增可能意味着爬虫或攻击,结合 WAF/限流 策略
- 上游响应时延/失败率:检查后端健康、连接池与超时配置
- 磁盘 I/O 与空间:确保 access/error log 与缓存目录有余量
- 告警落地:
- Prometheus + Alertmanager:基于 rate()、histogram_quantile() 等函数配置规则
- 企业平台:在 Datadog/New Relic 中配置基于指标的 阈值/异常 告警
- 通知渠道:邮件、企业微信、Slack、PagerDuty 等
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Nginx在Ubuntu上如何监控性能
本文地址: https://pptw.com/jishu/769257.html
