作为IT工程师,监控LNMP(Linux+Nginx+MySQL+PHP)服务器的资源使用情况至关重要。以下是一些实用的监控技巧和工具:
top/htop
htop
提供更友好的界面和更多功能apt install htop
(Debian/Ubuntu) 或 yum install htop
(CentOS/RHEL)vmstat
vmstat 1
每秒刷新一次iostat
iostat -x 1
查看详细磁盘统计iftop
iftop -n
显示IP而非主机名Nginx状态模块
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
http://your-server/nginx_status
获取连接数、请求数等日志分析
goaccess
分析访问日志goaccess /var/log/nginx/access.log -a
MySQL自带命令
SHOW STATUS
- 查看服务器状态变量SHOW PROCESSLIST
- 查看当前连接和查询mysqladmin
mysqladmin -u root -p extended-status
查看扩展状态慢查询日志
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;
SET GLOBAL slow_query_log_file = '/var/log/mysql/mysql-slow.log';
PHP-FPM状态页
pm.status_path = /status
location ~ ^/(status|ping)$ {
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
allow 127.0.0.1;
deny all;
}
http://your-server/status
查看PHP-FPM状态OPcache状态
opcache_get_status();
Prometheus + Grafana
node_exporter
收集系统指标mysqld_exporter
监控MySQLnginx-prometheus-exporter
监控NginxNetdata
bash <(curl -Ss https://my-netdata.io/kickstart.sh)
Zabbix
#!/bin/bash
# 监控LNMP状态脚本
# 系统负载
echo "===== 系统负载 ====="
uptime
echo ""
# 内存使用
echo "===== 内存使用 ====="
free -h
echo ""
# 磁盘空间
echo "===== 磁盘空间 ====="
df -h
echo ""
# Nginx连接数
echo "===== Nginx状态 ====="
curl -s 127.0.0.1/nginx_status
echo ""
# MySQL状态
echo "===== MySQL状态 ====="
mysqladmin -u root -p"$MYSQL_ROOT_PASSWORD" status
echo ""
# PHP-FPM状态
echo "===== PHP-FPM状态 ====="
curl -s 127.0.0.1/status | grep -E "pool|process manager|active processes"
echo ""
通过以上监控手段,您可以全面掌握LNMP服务器的运行状态,及时发现并解决潜在问题。