零缺陷老爹终极服务器巡查表:三十年运维经验倾囊相授
摘要:本文由拥有三十年数据中心运维经验的“零缺陷老爹”撰写,面向有一定基础的运维工程师,提供一份实战性极强的服务器设备巡查表。文章不仅包含详细的巡检项目和自动化脚本示例,更分享了作者在实际工作中遇到的各种“坑”,以及如何根据业务需求定制个性化巡查表的经验,旨在帮助读者提升巡检效率和深度,成为真正的运维老司机。
开篇:别废话,先上干货!
各位,我是零缺陷老爹。三十年了,服务器的脾气我摸得比我儿子还透。废话不多说,直接给你们亮家伙,这是我压箱底的“零缺陷老爹终极服务器巡查表”,拿走不谢!
| 巡检项目 | 检查内容 | 频率 | 正常范围/阈值 | 异常情况及排查方向 |
|---|---|---|---|---|
| 硬件层面 | ||||
| CPU温度 | 各核心温度 | 每日/实时 | Idle:<50°C, Load:<85°C (具体视CPU型号而定) | 温度过高:检查散热器、风扇,考虑硅脂老化;进程占用过高:分析CPU占用率高的进程;机房温度过高:调整空调 |
| 内存使用率 | 已用/总内存 | 每日/实时 | <80% | 使用率过高:检查内存泄漏、程序BUG;适当增加内存;优化程序内存使用 |
| 硬盘I/O | 读写速度、IOPS | 每日/实时 | 读写速度>100MB/s (SSD), IOPS>500 (SSD) | 读写速度慢:检查磁盘健康状况、磁盘碎片;检查是否有大量小文件读写;更换更快的磁盘 |
| 电源状态 | 电源冗余状态、电压、电流 | 每日 | 冗余电源均正常工作,电压电流在额定范围内 | 电源故障:更换电源;电压电流异常:检查电源线路、负载情况 |
| RAID阵列健康状况 | 磁盘状态、阵列状态 | 每日 | 所有磁盘状态正常,阵列状态为Optimal | 磁盘故障:更换故障磁盘;阵列降级:修复阵列 |
| 风扇转速 | 各风扇转速 | 每日 | >500 RPM (具体视风扇型号而定) | 转速过低:检查风扇是否堵塞、风扇是否损坏;转速过高:检查机房温度、CPU温度 |
| 系统层面 | ||||
| 关键进程状态 | 关键服务进程(例如:httpd, mysqld, redis) | 每日/实时 | 运行状态为Active | 进程停止:重启进程;进程频繁重启:检查日志,分析原因;进程占用资源过高:优化程序 |
| 系统日志分析 | /var/log/messages, /var/log/syslog, /var/log/secure 等 | 每日 | ERROR和WARNING级别条目数量正常 | ERROR和WARNING级别条目过多:仔细分析日志,定位问题;常见问题:磁盘空间不足、权限问题、网络连接问题 |
| 网络连接状态 | 网络连通性、丢包率、延迟 | 每日/实时 | 连通性正常,丢包率<1%,延迟<50ms | 连通性异常:检查网络配置、网线;丢包率过高:检查网络设备、带宽;延迟过高:检查网络拥塞、路由 |
| 端口监听情况 | 关键端口(例如:80, 443, 3306, 6379) | 每日 | 关键端口处于监听状态 | 端口未监听:检查服务是否启动;端口被占用:查找占用端口的进程 |
| 安全补丁更新情况 | 系统及应用的安全补丁更新情况 | 每周 | 已安装最新的安全补丁 | 未安装最新安全补丁:及时更新安全补丁,避免安全漏洞 |
| 应用层面 | ||||
| 数据库连接状态 | 数据库连接数、连接错误率 | 每日/实时 | 连接数在正常范围内,连接错误率为0 | 连接数过高:优化SQL语句、增加数据库连接数;连接错误率高:检查数据库配置、网络连接 |
| Web服务响应时间 | 平均响应时间、95%响应时间 | 每日/实时 | 平均响应时间<200ms,95%响应时间<500ms | 响应时间过长:优化程序代码、数据库查询;检查服务器负载、网络带宽 |
| 中间件运行状况 | 中间件(例如:Tomcat, JBoss)的运行状态、JVM内存使用情况 | 每日/实时 | 运行状态正常,JVM内存使用率在正常范围内 | 运行状态异常:重启中间件;JVM内存使用率过高:调整JVM参数、优化程序内存使用 |
| 消息队列积压情况 | 消息队列(例如:RabbitMQ, Kafka)的积压消息数量 | 每日/实时 | 积压消息数量在正常范围内 | 积压消息过多:检查消费者处理速度、增加消费者数量;检查消息生产者是否发送过快 |
| 安全层面 | ||||
| 登录审计 | 登录日志分析,关注异常登录行为 | 每日 | 无异常登录行为 | 发现异常登录行为:立即采取措施,例如:禁用账户、修改密码、加强安全策略 |
| 异常流量监控 | 监控网络流量,发现DDoS攻击、恶意扫描等行为 | 实时 | 流量在正常范围内 | 发现异常流量:启动DDoS防御系统、封禁恶意IP地址 |
| 弱口令检测 | 定期检测系统及应用的弱口令 | 每周 | 无弱口令 | 发现弱口令:强制修改密码,加强密码策略 |
| 恶意软件扫描 | 定期进行恶意软件扫描 | 每周 | 无恶意软件 | 发现恶意软件:立即清除恶意软件,修复系统漏洞 |
巡查表的灵魂:自动化!
光是盯着屏幕手动检查?那还不如回家抱孩子!巡查表的精髓在于自动化!解放你的双手,把时间留给更有价值的事情。我常用的工具和脚本,分享几个给你们:
- Nagios/Zabbix:老牌的监控神器,配置好之后,服务器的状态一目了然。 Zabbix 绝对是监控领域的瑞士军刀,啥都能监控。
- Prometheus + Grafana:监控云原生应用的利器,配合Docker、Kubernetes简直无敌。
- 自定义Shell脚本:灵活方便,可以根据自己的需求定制。下面是一个简单的CPU温度监控脚本:
#!/bin/bash
cpu_temp=$(sensors | grep 'Core 0:' | awk '{print $3}' | tr -d '+°C')
if [ "$cpu_temp" -gt 80 ]; then
echo "CPU温度过高:$cpu_temp°C" | mail -s "服务器CPU温度告警" your_email@example.com
fi
这段脚本会读取CPU温度,如果超过80°C,就发送邮件告警。简单粗暴,但是非常有效!
awk、grep、sed:这三个命令是日志分析的瑞士军刀,熟练掌握它们,可以从海量的日志中提取出有用的信息。比如,用grep找出所有ERROR级别的日志:
grep 'ERROR' /var/log/syslog
再用awk统计ERROR出现的次数:
grep 'ERROR' /var/log/syslog | awk '{print $1}' | sort | uniq -c
避坑指南:那些巡查表上看不到的坑!
巡查表再完善,也只能覆盖大部分情况。有些坑,只有踩过才知道疼。下面分享几个我遇到的奇葩案例:
- CPU温度明明正常,但系统性能却异常缓慢?小心是硅脂老化! 硅脂干了,散热效果大打折扣,CPU降频运行,性能自然下降。解决办法:重新涂抹硅脂。
- 硬盘空间充足,但写入速度却越来越慢?可能是磁盘碎片过多! 定期进行磁盘碎片整理,可以提高磁盘性能。
- 日志显示一切正常,但用户却无法访问服务?检查一下防火墙规则! 防火墙规则配置错误,可能会导致服务无法访问。另外,别忘了检查 亚马逊云服务器 的安全组规则。
- 服务器莫名其妙重启?检查一下内存! 内存条接触不良或者损坏,会导致服务器不稳定,甚至重启。可以用
memtest86+进行内存检测。
进阶技巧:如何让巡查表“活”起来?
巡查表不是一成不变的!要根据业务需求和系统特点,不断调整和优化。记住,没有最好的巡查表,只有最适合的巡查表!
- 针对高并发业务,需要重点关注网络连接状态和数据库性能。 可以增加对TCP连接数、数据库慢查询的监控。
- 针对存储密集型应用,需要重点关注磁盘I/O和RAID阵列健康状况。 可以增加对磁盘队列长度、RAID重建进度的监控。
- 针对安全敏感型应用,需要重点关注登录审计和异常流量监控。 可以增加对恶意IP地址、暴力破解尝试的监控。
另外,还可以利用 飞书多维表格管理系统 来管理和分析巡检数据,实现更高效的运维。
工具推荐:
- 监控告警:
- Nagios (版本:4.x,自行搜索下载)
- Zabbix (版本:6.x,自行搜索下载)
- Prometheus (版本:2.x,自行搜索下载)
- Grafana (版本:9.x,自行搜索下载)
- 日志分析:
- ELK Stack (Elasticsearch, Logstash, Kibana,自行搜索下载)
- Splunk (商业软件,自行搜索下载)
- 硬件检测:
- smartmontools (用于检测硬盘健康状况,Linux系统自带)
- memtest86+ (用于检测内存,自行搜索下载)
最后,老爹要说一句,这份巡查表不是万能的,但它能帮助你在99%的情况下,避免服务器故障。运维这条路,没有捷径,只有不断学习和积累经验。希望我的经验能帮到你们,早日成为真正的运维老司机!