温馨提示×

Debian Stream8如何监控系统状态

小樊
40
2025-11-29 13:22:57
栏目: 智能运维

Debian Stream 8 系统状态监控实用指南

一 基础资源监控命令

  • 进程与负载:top/htop(实时查看CPU、内存、进程,htop更友好,需安装)
  • 内存:free -h(人类可读的内存使用)
  • 综合资源:vmstat 1(进程、内存、分页、块IO、CPU)
  • 磁盘I/O:iostat -x 1(需安装sysstat,查看磁盘与CPU利用率)
  • 历史与系统活动:sar 1(需安装sysstat,采集/回看系统活动)
  • 综合监控:dstat(需安装,CPU、内存、网络、磁盘一览)
  • 磁盘空间:df -h
  • 网络状态:ss -tuln(或 netstat -tuln,查看监听端口与连接)
  • 系统运行时间:uptime
  • 打开文件与连接:lsof
  • 网络抓包:tcpdump -i eth0(按需抓包分析)
  • 容器/服务组资源:systemd-cgtop(查看cgroup资源使用)

二 日志与故障排查

  • 服务与内核日志:journalctl(查看全部/实时/按服务/按时间/按优先级过滤,如:journalctl -u nginx -f;journalctl --since “2025-10-01” --until “2025-10-17”;journalctl -p err)
  • 传统日志目录:/var/log/(常见:syslog、auth.log、kern.log、dmesg、dpkg.log、boot.log
  • 文本检索与分析:grep(如 grep “failed” /var/log/auth.log)、tail -f(实时跟踪)、awk(字段提取与统计)
  • 日志报告:Logwatch(安装后生成日报/周报,便于快速巡检)
  • 故障排查要点:结合ps aux、top/htop定位异常进程;用ping、traceroute检查网络;用df -h、du -sh排查磁盘;必要时用strace跟踪进程系统调用

三 硬件与健康监控

  • 传感器:lm-sensors(监控CPU温度、风扇转速等,需安装并运行 sensors-detect)
  • 磁盘健康:smartctl(需安装smartmontools,查看SMART信息与健康状态)

四 进阶与集中监控方案

  • 终端/Web一体:Glances(安装后终端查看,也可启用Web界面)
  • 实时可视化:Netdata(安装后访问 http://服务器IP:19999
  • 进程与服务守护:Monit(监控进程/文件/目录/设备,异常可自动重启)
  • 企业级:Zabbix(集中监控、告警、模板丰富)
  • 时序与可视化:Prometheus + Grafana(Prometheus采集指标,Grafana做仪表盘与告警)
  • 传统平台:Nagios(插件生态成熟,适合中小规模)
  • 选择建议:单机/临时巡检用htop、vmstat、iostat、Glances;需要告警与历史趋势选ZabbixPrometheus+Grafana;面向Web与容器场景可叠加Netdata/Monit

五 快速巡检脚本示例

  • 用途:一键输出CPU、内存、磁盘、I/O、网络与关键服务状态
  • 保存为:/usr/local/bin/sysmon.sh
  • 赋权:chmod +x /usr/local/bin/sysmon.sh
  • 使用:/usr/local/bin/sysmon.sh 或 watch -n 5 /usr/local/bin/sysmon.sh
#!/usr/bin/env bash
echo "===== $(date) ====="
echo "Uptime: $(uptime -p)"
echo
echo "CPU & Memory"
echo "------------"
uptime
free -h
echo
echo "Disk Usage"
echo "----------"
df -hT | egrep -v '^Filesystem|tmpfs|cdrom'
echo
echo "Top 5 Memory Processes"
echo "---------------------"
ps -eo pid,ppid,cmd,%mem --sort=-%mem | head -n 6
echo
echo "Top 5 CPU Processes"
echo "------------------"
ps -eo pid,ppid,cmd,%cpu --sort=-%cpu | head -n 6
echo
echo "I/O Load (1s avg)"
echo "---------------"
if command -v iostat >/dev/null 2>&1; then
  iostat -x 1 1 | tail -n +4 | head -n 5
else
  echo "iostat not installed (run: sudo apt-get install sysstat)"
fi
echo
echo "Network Listening"
echo "----------------"
ss -tulpen | column -t
echo
echo "Nginx / MySQL / PHP-FPM Status"
echo "---------------------------"
for svc in nginx mysql php-fpm; do
  if systemctl is-active --quiet "$svc"; then
    echo "$svc: $(systemctl is-active $svc) ($(systemctl is-enabled $svc 2>/dev/null || echo disabled))"
  else
    echo "$svc: inactive"
  fi
done
echo
echo "Recent Errors in syslog (last 100 lines)"
echo "-------------------------------------"
tail -n 100 /var/log/syslog | grep -i -E 'error|fail|warning' | tail -n 20

提示

  • 建议将脚本输出重定向到日志文件,并配合cron定时执行,形成长期基线。
  • 生产环境请为监控与告警配置合适的阈值通知渠道(如邮件、企业微信、钉钉、Slack)。

0