插件窝 干货文章 如何进行Linux运维工作的系统监控和故障排除

如何进行Linux运维工作的系统监控和故障排除

监控 使用 日志 系统 424    来源:    2025-04-10

Linux系统监控与故障排除指南

一、系统监控基础

1. 核心监控指标

  • CPU使用率top, htop, mpstat, vmstat
  • 内存使用free -m, vmstat, /proc/meminfo
  • 磁盘I/Oiostat, iotop, dstat
  • 网络流量iftop, nload, vnstat
  • 磁盘空间df -h, du -sh *

2. 常用监控工具

  • 实时监控

    • top/htop - 进程监控
    • glances - 综合监控工具
    • nmon - 性能监控工具
  • 日志监控

    • tail -f /var/log/messages
    • journalctl -f (systemd系统)
    • logwatch - 日志分析工具

二、高级监控方案

1. 企业级监控系统

  • Prometheus + Grafana:开源监控解决方案
  • Zabbix:企业级分布式监控
  • Nagios:经典监控系统
  • ELK Stack:日志集中分析平台

2. 自定义监控脚本

#!/bin/bash
# 简单监控脚本示例

# CPU使用率
cpu_usage=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')

# 内存使用
mem_total=$(free -m | awk '/Mem:/ {print $2}')
mem_used=$(free -m | awk '/Mem:/ {print $3}')

# 磁盘空间
disk_usage=$(df -h / | awk '/\// {print $5}')

echo "CPU使用率: ${cpu_usage}%"
echo "内存使用: ${mem_used}MB/${mem_total}MB"
echo "根分区使用: ${disk_usage}"

三、故障排除流程

1. 系统故障排查步骤

  1. 收集信息:错误消息、日志文件、监控数据
  2. 重现问题:确认问题可重现
  3. 隔离问题:确定影响范围
  4. 分析原因:根据症状推断可能原因
  5. 实施修复:测试解决方案
  6. 验证修复:确认问题解决
  7. 文档记录:记录问题和解决方案

2. 常见问题排查

高CPU使用率

  1. 使用tophtop找出高CPU进程
  2. 使用strace -p <PID>跟踪进程系统调用
  3. 使用perf top进行性能分析

内存不足

  1. free -m查看内存使用情况
  2. vmstat 1查看交换分区使用
  3. ps aux --sort=-%mem | head查看内存占用高的进程

磁盘I/O瓶颈

  1. iostat -x 1查看磁盘I/O状态
  2. iotop查看I/O高的进程
  3. 检查/var/log/messages是否有磁盘错误

网络问题

  1. ping测试基本连通性
  2. traceroute检查路由路径
  3. netstat -tulnp查看端口监听
  4. tcpdump抓包分析

四、日志分析技巧

1. 关键日志文件

  • /var/log/messages - 通用系统消息
  • /var/log/syslog - 系统日志(基于Debian)
  • /var/log/auth.log - 认证日志
  • /var/log/kern.log - 内核日志
  • /var/log/dmesg - 启动消息

2. 日志分析命令

  • grep -i "error" /var/log/messages - 搜索错误
  • tail -n 100 /var/log/syslog - 查看最后100行
  • journalctl --since "2023-01-01" --until "2023-01-02" - 按日期筛选
  • awk '/pattern/ {print $1}' /var/log/file - 提取特定字段

五、性能优化建议

  1. 定期更新系统yum updateapt-get upgrade
  2. 清理旧内核和日志:使用logrotate配置日志轮转
  3. 优化内核参数:调整/etc/sysctl.conf
  4. 使用SSD替代HDD:显著提升I/O性能
  5. 考虑使用缓存:如Redis或Memcached
  6. 负载均衡:对高流量服务实施负载均衡

六、自动化运维

  1. 配置管理工具

    • Ansible
    • Puppet
    • Chef
    • SaltStack
  2. 监控自动化

    • 使用Prometheus的Alertmanager设置告警
    • 编写自定义监控脚本配合cron定时运行
  3. 日志集中管理

    • 使用Rsyslog或Syslog-ng集中日志
    • 部署ELK(Elasticsearch, Logstash, Kibana)栈

通过系统化的监控和标准化的故障排除流程,可以显著提高Linux系统的稳定性和运维效率。