监控Nginx的运行状态需覆盖服务状态、性能指标、日志分析及可视化等方面,以下是具体方法:
systemctl命令确认Nginx是否启动、是否有错误日志。sudo systemctl status nginx
输出会显示服务状态(active/running表示正常)、启动时间及最近活动日志。sudo nginx -t
若配置正确,会提示“syntax is ok”和“test is successful”。ps命令列出所有Nginx进程(主进程+子进程),确认进程是否存在:ps aux | grep nginx
正常情况下应显示主进程(root用户)和多个子进程(www-data用户)。Nginx内置ngx_http_stub_status_module模块,可提供活跃连接数、请求总数、连接状态等基础指标。
/etc/nginx/conf.d/default.conf),添加以下内容:location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1; # 仅允许本地访问(生产环境建议限制IP)
deny all;
}
sudo systemctl restart nginx
http://服务器IP/nginx_status,会显示类似以下信息:Active connections: 3
server accepts handled requests
1000 1000 2000
Reading: 0 Writing: 1 Waiting: 2
其中:
Active connections:当前活跃连接数(包括Reading/Writing/Waiting);accepts:自启动以来的总连接数;handled:成功处理的连接数;requests:总请求数;Reading/Writing/Waiting:分别表示正在读取请求、写入响应、等待的连接数。通过Ubuntu系统工具监控Nginx进程的CPU、内存、端口等资源占用情况:
top为命令行工具,htop需安装,界面更友好):top -n 1 | grep nginx # 查看Nginx进程的CPU/内存占用
sudo apt install htop && htop -p $(cat /var/run/nginx.pid) # 使用htop查看指定PID的Nginx进程
sudo netstat -tuln | grep nginx # 传统工具
sudo ss -tuln | grep nginx # 更现代的工具(推荐)
free -h # 以人类可读格式显示内存使用(如GB/MB)
vmstat 1 5 # 每1秒刷新一次,共5次,显示内存、CPU、IO等统计信息
df -h # 显示各分区使用情况
du -sh /var/log/nginx/* # 查看Nginx日志目录大小
/var/log/nginx/error.log,使用tail命令实时查看最新错误:sudo tail -f /var/log/nginx/error.log
/var/log/nginx/access.log,可分析访问趋势(如IP、请求路径、状态码):sudo tail -f /var/log/nginx/access.log
sudo apt install -y goaccess # Ubuntu安装
goaccess /var/log/nginx/access.log -o /var/www/html/report.html --log-format=COMBINED # 生成报告(需指定日志格式)
打开浏览器访问http://服务器IP/report.html即可查看可视化报告。适用于企业级大规模监控,可实现性能指标收集、存储、可视化及告警:
sudo apt update && sudo apt install -y prometheus
编辑配置文件/etc/prometheus/prometheus.yml,添加Nginx抓取任务:scrape_configs:
- job_name: 'nginx'
static_configs:
- targets: ['localhost:9113'] # Nginx Exporter的监听端口
wget https://github.com/nginxinc/nginx-prometheus-exporter/releases/download/v0.10.0/nginx-prometheus-exporter_0.10.0_linux_amd64.tar.gz
tar xvf nginx-prometheus-exporter_0.10.0_linux_amd64.tar.gz
cd nginx-prometheus-exporter_0.10.0_linux_amd64
./nginx-prometheus-exporter # 默认监听9113端口
http://localhost:9090),并导入Nginx仪表盘(如ID为6686的官方仪表盘),即可查看实时监控面板。以上方法覆盖了Nginx监控的基础检查、实时状态、日志分析及高级可视化需求,可根据实际场景选择合适的方式组合使用。