阅读量:25
Ubuntu LAMP服务器监控方案
一、系统级基础监控
系统级监控是LAMP服务器监控的基础,用于掌握服务器整体资源使用情况,避免因资源耗尽导致服务中断。
- 命令行工具:
top/htop:实时显示系统中各个进程的CPU、内存占用情况,htop比top界面更友好(需安装:sudo apt install htop);vmstat:报告虚拟内存、磁盘、CPU等的统计信息(如vmstat 1每秒刷新一次);iostat:监控磁盘I/O操作情况(需安装sysstat包:sudo apt install sysstat);free:查看系统内存使用情况(包括物理内存、交换分区);df:检查文件系统磁盘空间占用(如df -h以人类可读格式显示)。
- 图形化工具:
Ubuntu自带“系统监控”工具(通过“活动”→搜索“系统监控”打开),可直观查看CPU、内存、磁盘、网络的使用率及进程列表,适合新手快速了解系统状态。
二、LAMP组件专项监控
针对LAMP(Linux、Apache、MySQL、PHP)堆栈的各个组件进行深度监控,及时发现组件性能瓶颈或故障。
- Apache监控:
- mod_status模块:Apache内置模块,提供服务器状态详情(如活动连接数、请求数、工作线程状态)。需修改配置文件
/etc/apache2/mods-enabled/status.conf,开启ExtendedStatus On并将Allow from all改为允许监控服务器IP,重启Apache后访问http://server-ip/server-status查看; - apachetop:类似
top的工具,实时监控Apache请求处理情况(需安装:sudo apt install apachetop); - httpd -M:查看Apache加载的模块,确认关键模块(如
rewrite、ssl)是否启用。
- mod_status模块:Apache内置模块,提供服务器状态详情(如活动连接数、请求数、工作线程状态)。需修改配置文件
- MySQL监控:
- mysqladmin:命令行工具,可查看服务器状态(如
mysqladmin status显示连接数、查询缓存命中率)、刷新权限(mysqladmin flush-privileges); - SHOW命令:通过MySQL客户端执行
SHOW STATUS;查看全局状态变量(如Threads_connected当前连接数)、SHOW PROCESSLIST;查看当前执行的线程(找出慢查询或卡住的进程); - pt-query-digest:Percona Toolkit工具,用于分析MySQL慢查询日志(需安装Percona Toolkit),生成查询性能报告,定位慢查询优化点;
- MySQL Workbench:图形化管理工具,提供性能仪表板(如CPU使用率、连接数趋势图)、慢查询分析等功能。
- mysqladmin:命令行工具,可查看服务器状态(如
- PHP监控:
- Xdebug:PHP扩展,用于性能分析(如函数调用时间、内存占用),生成分析报告(需在
php.ini中开启xdebug.mode=profile); - New Relic:应用性能管理(APM)工具,监控PHP应用性能(如响应时间、数据库查询时间、错误率),提供实时性能洞察和告警功能(需注册账号并安装New Relic PHP代理)。
- Xdebug:PHP扩展,用于性能分析(如函数调用时间、内存占用),生成分析报告(需在
三、可视化与集中监控
通过可视化工具将监控数据转化为直观的图表,便于实时掌握服务器状态及历史趋势。
- Prometheus + Grafana:
- Prometheus:开源时间序列数据库,用于收集、存储监控指标(如CPU使用率、Apache请求数);
- Grafana:开源可视化平台,与Prometheus集成,创建美观的仪表板(如LAMP组件状态、资源使用率趋势图)。安装步骤:
- 安装Prometheus:
sudo apt update && sudo apt install prometheus,编辑/etc/prometheus/prometheus.yml配置监控目标(如本地服务器); - 添加Grafana仓库:
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -,编辑/etc/apt/sources.list.d/grafana.list添加deb https://packages.grafana.com/oss/ubuntu $(lsb_release -cs) main,安装Grafana:sudo apt install grafana; - 启动服务:
sudo systemctl start prometheus && sudo systemctl start grafana-server,访问http://server-ip:9090(Prometheus)和http://server-ip:3000(Grafana,默认账号admin/admin)配置仪表板。
- 安装Prometheus:
四、告警与事件通知
及时获取服务器异常信息,快速响应问题,避免影响业务。
- Nagios:
开源监控系统,支持监控主机、服务(如Apache、MySQL)的状态,设置告警规则(如CPU使用率超过80%、Apache宕机时发送邮件/短信)。安装步骤:- 添加Nagios仓库,编译安装Nagios:
./configure --with-httpd-conf=/etc/apache2/sites-enabled && make all && make install; - 配置
/etc/nagios/nagios.cfg(开启监控功能),添加服务检查(如commands.cfg中定义check_http命令,services.cfg中添加Apache监控); - 重启Apache和Nagios:
sudo systemctl restart apache2 && sudo systemctl restart nagios3,访问http://server-ip:8080查看监控状态。
- 添加Nagios仓库,编译安装Nagios:
- 日志告警:
- fail2ban:监控日志文件(如
/var/log/auth.log),自动禁止恶意IP(如多次SSH登录失败),减少暴力破解风险(需安装:sudo apt install fail2ban,配置/etc/fail2ban/jail.local开启SSH防护); - Logwatch:日志分析工具,定期生成日志报告(如每日邮件发送系统错误日志),帮助快速定位问题(安装:
sudo apt install logwatch,配置/usr/share/logwatch/default.conf/services/http.conf过滤Apache错误日志)。
- fail2ban:监控日志文件(如
五、日志管理与分析
日志记录了服务器运行事件,通过分析日志可快速定位故障原因(如Apache错误、MySQL慢查询)。
- 基础日志查看:
tail -f /var/log/apache2/access.log:实时查看Apache访问日志(记录请求IP、URL、状态码);tail -f /var/log/apache2/error.log:实时查看Apache错误日志(如404、500错误);journalctl -f:查看systemd日志(涵盖系统启动、服务状态变化);sudo journalctl -f -p err:过滤错误级别日志,快速定位严重问题。
- 高级日志分析:
- ELK Stack(Elasticsearch + Logstash + Kibana):
- Elasticsearch:分布式搜索引擎,存储和索引日志数据;
- Logstash:日志收集和处理工具,解析不同格式的日志(如Apache、MySQL);
- Kibana:可视化工具,通过图表展示日志分析结果(如错误日志趋势、访问量统计)。需安装ELK组件并配置Logstash收集
/var/log目录下的日志,通过Kibana创建仪表板查看日志趋势。
- ELK Stack(Elasticsearch + Logstash + Kibana):