Ubuntu系统下监控Nginx状态的方法可分为基础命令、Nginx自带模块、第三方工具及日志分析四大类,以下是具体实现方式:
systemctl命令可快速获取Nginx服务的启动状态、运行时间、最近活动等信息,命令为sudo systemctl status nginx(若显示“active (running)”则表示服务正常)。ps命令过滤出Nginx相关进程,包括主进程(master process)和工作进程(worker process),命令为ps aux | grep nginx。/var/log/nginx/error.log,使用tail -f命令可实时跟踪日志输出,帮助快速定位配置错误、权限问题等,命令为sudo tail -f /var/log/nginx/error.log。/var/log/nginx/access.log,tail -f命令可实时查看用户请求记录,命令为sudo tail -f /var/log/nginx/access.log。netstat(较老系统)或ss(新系统)命令查看Nginx监听的TCP端口(默认80/443),命令为sudo netstat -tuln | grep nginx或sudo ss -tuln | grep nginx。top命令可实时显示Nginx进程的CPU、内存占用率(按“M”键按内存排序,“P”键按CPU排序);htop是top的增强版,提供更友好的界面,需先安装(sudo apt install htop)。Nginx的ngx_http_stub_status_module模块可提供基本的连接状态信息(如活跃连接数、请求数等),需手动启用:
/etc/nginx/conf.d/default.conf)的server块中添加以下内容,限制仅本地访问(避免暴露敏感信息):location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
sudo systemctl restart nginx使配置生效。http://localhost/nginx_status(或通过curl http://localhost/nginx_status命令行查看),输出结果包含:
Active connections:当前活跃连接数(包括Reading、Writing、Waiting三种状态);server accepts handled requests:总接受请求数、总处理请求数、总完成请求数;Reading/Writing/Waiting:当前正在读取请求头、写入响应、等待的连接数。sudo apt update && sudo apt install prometheus。/etc/prometheus/prometheus.yml,添加Nginx抓取任务(需Nginx Exporter暴露指标):scrape_configs:
- job_name: 'nginx'
static_configs:
- targets: ['localhost:9113']
sudo systemctl start prometheus。stub_status指标转换为Prometheus可识别的格式。
./nginx-prometheus-exporter -nginx.scrape-uri http://localhost/nginx_status(需确保stub_status已启用)。sudo apt install grafana,启动后访问http://localhost:3000(默认账号admin/admin)。6686的官方仪表盘),即可查看请求量、响应时间、错误率等可视化图表。Netdata是一款轻量级实时监控工具,内置Nginx监控模块,无需额外配置:
sudo apt install netdata。http://localhost:19999),进入“Nginx”模块即可查看实时请求速率、连接数、响应时间等指标。Nginx的访问日志(access.log)和错误日志(error.log)是监控系统状态的重要数据源,可通过以下工具进行分析:
GoAccess是一款基于终端的实时日志分析工具,支持生成HTML报告:
sudo apt install goaccess。goaccess /var/log/nginx/access.log -o /var/www/html/report.html --log-format=COMBINED(--log-format需与Nginx配置中的log_format一致),生成的report.html可在浏览器中打开,查看请求分布、状态码、响应时间等。--real-time-html参数可实现报告实时刷新(需配合-o输出到Web目录)。ELK(Elasticsearch + Logstash + Kibana)适用于处理海量日志,实现集中化存储、搜索和可视化:
logstash.conf文件,定义输入(Nginx日志文件)、过滤(解析日志格式)、输出(Elasticsearch)规则;Kibana中创建索引模式(如nginx-access-*),即可通过Dashboard展示日志分析结果(如状态码分布、访问趋势)。