Ubuntu LAMP服务器监控与维护指南
系统基础资源(CPU、内存、磁盘、网络)是服务器稳定的基石,需通过工具实时掌握其使用情况:
top/htop:实时查看进程级CPU、内存占用(htop需安装,界面更友好);vmstat 1:每秒刷新系统整体状态(包括进程、内存、I/O、CPU等,vmstat属sysstat包);iostat -x 1:监控磁盘I/O负载(重点关注%util,超过70%需警惕,iostat属sysstat包);df -h:查看磁盘空间使用情况(重点关注/var/log、/var/lib/mysql等目录);netstat -tuln | grep -E ':(80|443|3306)':检查Apache(80/443)、MySQL(3306)端口是否监听。Glances:跨平台终端工具,整合CPU、内存、磁盘、网络等指标,支持远程监控(sudo apt install glances);Grafana+Prometheus:专业可视化组合,Prometheus收集系统指标(如CPU、内存、Apache请求量),Grafana负责展示(如折线图、仪表盘),需分别安装并配置Prometheus抓取目标(如/etc/prometheus/prometheus.yml添加LAMP服务器地址)和Grafana数据源(指向Prometheus)。针对LAMP架构的每个组件,需进行针对性监控:
mod_status模块(修改/etc/apache2/mods-enabled/status.conf,设置ExtendedStatus On,添加<Location "/server-status">段),重启Apache后访问http://server-ip/server-status?auto,查看实时请求、Worker进程状态;apachectl status命令快速检查Apache运行状态。mysqladmin工具(MySQL自带)监控数据库状态,如mysqladmin -u root -p status查看服务器运行时间、连接数、查询速率;Performance Schema(需修改my.cnf配置文件),深入分析查询性能、锁等待等。php-fpm.conf配置慢日志(如slowlog = /var/log/php-fpm/slow.log,request_slowlog_timeout = 5s),分析慢查询。对于企业级环境,推荐使用以下工具实现集中化管理:
nagios-plugins,配置nagios.cfg和services.cfg);zabbix-server-mysql、zabbix-frontend-php等包);日志是排查问题的关键,需规范日志收集、存储与分析:
/var/log/apache2/access.log,错误日志/var/log/apache2/error.log;/var/log/mysql/general.log,慢查询日志/var/log/mysql/slow.log,错误日志/var/log/mysql/error.log。grep/awk/sed:基础文本处理,如grep "ERROR" /var/log/syslog过滤错误信息;ELK Stack:处理海量日志,实现搜索、可视化(Elasticsearch存储,Logstash解析,Kibana展示);Logwatch:生成每日日志摘要(如logwatch --output text),快速了解系统运行情况。logrotate工具自动压缩、删除旧日志(配置文件/etc/logrotate.conf,可针对特定日志创建/etc/logrotate.d/下的子配置,如/var/log/*.log设置daily rotate 7 compress)。安全是服务器稳定的前提,需采取以下措施:
ufw(Uncomplicated Firewall)限制端口访问(如sudo ufw allow 22/tcp允许SSH,sudo ufw allow 80,443/tcp允许HTTP/HTTPS,sudo ufw enable启用防火墙);Fail2Ban,自动封禁多次登录失败的IP(配置/etc/fail2ban/jail.local,启用sshd、apache等 jail);sudo apt update && sudo apt upgrade),修复已知漏洞。定期备份关键数据,防止数据丢失:
/var/www/html)、数据库(mysqldump导出)、配置文件(/etc/apache2、/etc/mysql);rsync(增量备份)、tar(全量备份)或专业工具(如Bacula);cron设置定时任务(如每天凌晨2点备份0 2 * * * tar czvf /backup/lamp-$(date +\%F).tar.gz /var/www/html /var/lib/mysql)。根据监控数据调整配置,提升服务器性能:
prefork/worker模式参数(如MaxRequestWorkers控制最大并发请求数,MaxConnectionsPerChild限制单个进程处理的请求数,避免内存泄漏);启用mod_cache缓存静态内容(如图片、CSS),减少服务器负载;my.cnf配置(如innodb_buffer_pool_size设置为物理内存的70%-80%,query_cache_size根据查询频率调整),提升查询性能;pm.max_children(子进程数量)、pm.start_servers(启动时的子进程数量),避免进程数过多导致内存耗尽。