温馨提示×

Linux Minimal怎样进行系统监控

小樊
41
2026-01-02 20:02:41
栏目: 智能运维

Linux Minimal 系统监控实操指南

一 快速上手的内置命令

  • 资源总览与进程:使用 top(实时查看 CPU/内存/进程),或安装更友好的 htop(支持按键筛选与颜色高亮)。
  • 内存与交换:使用 free -h(以人类可读单位显示物理内存与 Swap)。
  • 整体负载与虚拟内存:vmstat 1(每秒刷新,观察 r/b/si/so 等负载与换入换出)。
  • 磁盘空间:df -h(查看各分区使用率)。
  • 磁盘 I/O:iostat -x 1(需安装 sysstat,关注 await、r/s、w/s、util 判断 I/O 瓶颈)。
  • 网络与端口:使用 ss -tulpen 或传统的 netstat -tulpen(查看 TCP/UDP 监听与连接)。
  • 内核与硬件事件:dmesg | tail -n 50(排查驱动、硬件、内核告警)。
  • 进程 I/O 明细:安装 iotop(按进程查看读写与 IOPS)。
    以上工具在 Minimal 环境中足够完成日常排查与临时观测,其中 iostat/mpstat/pidstat/sar 属于 sysstat 套件,依赖低、适合资源受限系统。

二 安装与启用 sysstat 获取历史数据

  • 安装:在 CentOS/RHEL/Fedora 执行 sudo yum install sysstat -y;在 Debian/Ubuntu 执行 sudo apt-get install sysstat -y
  • 启用采集:编辑 /etc/default/sysstat(或 /etc/sysconfig/sysstat),将 ENABLED=“false” 改为 ENABLED=“true”
  • 启动与持久化:执行 sudo systemctl enable --now sysstat,随后 sar 将按周期写入历史数据(默认 10 分钟采集一次,保留 7 天,可在 /etc/cron.d/sysstat/etc/sysconfig/sysstat 调整)。
  • 常用查询:
    • sar -u 1 10(CPU 利用率,每秒 1 次共 10 次)
    • sar -r 1 10(内存与 Swap)
    • sar -b 1 10(磁盘读写速率)
    • sar -n DEV 1 10(网卡流量)
    • sadf -d /var/log/sa/saXX – -u -r -b(以 CSV 导出指定日期 saXX 的 CPU/内存/磁盘报表,便于二次分析)
      sysstat 提供 sar/iostat/mpstat/pidstat/sadf 等工具,能在 Minimal 系统上以低开销实现长期性能记录与趋势分析。

三 轻量进阶工具与场景

  • 综合监控:nmon(同时观察 CPU/内存/磁盘/网络,支持交互与数据导出,适合临时性能剖析)。
  • 全栈监控:glances(跨平台,支持 Web/远程 查看,依赖 Python,资源占用略高于纯 CLI)。
  • 网络带宽与进程:iftop(按连接带宽)、nethogs(按进程带宽),快速定位异常占用。
  • 日志与故障定位:journalctl -xe(systemd 日志)、配合 logrotate 做日志轮转,避免磁盘被日志撑满。
    这些工具可按需安装,满足从临时排障到轻量持续观测的不同需求。

四 面向生产的集中监控方案

  • 指标采集与可视化:Prometheus + Grafana(以 Node Exporter 采集主机指标,Grafana 做面板展示与告警规则)。
  • 传统与插件化:Zabbix(主机/服务监控、灵活告警、图形化界面)。
  • 时序与可视化栈:Telegraf + InfluxDB + Grafana(TIG)(轻量采集、InfluxDB 存储、Grafana 展示)。
  • 日志集中分析:ELK Stack(Elasticsearch, Logstash, Kibana)rsyslog/syslog-ng 做集中日志收集与检索。
    上述方案适合多主机与长期运营,能够在 告警阈值可视化历史回溯 上提供完整能力。

五 最小可用监控脚本示例

  • 磁盘空间阈值告警(超过 80% 打印告警):
#!/usr/bin/env bash
LOGFILE=/var/log/check-space.log
> "$LOGFILE"
df -h >> "$LOGFILE"
THRESHOLD=80
alert=0
while read -r line; do
  usage=$(echo "$line" | awk '{print $5}' | tr -d '%')
  if [[ "$usage" =~ ^[0-9]+$ ]] && [ "$usage" -ge "$THRESHOLD" ]; then
    alert=1
    echo "$(date): $line" >> "$LOGFILE"
  fi
done < <(tail -n +2 "$LOGFILE")
if [ "$alert" -eq 1 ]; then
  echo "Disk usage >= ${THRESHOLD}% on $(hostname)" | mail -s "Disk Alert" admin@example.com
fi
  • 说明:可配合 cron 定时执行(如每 5 分钟),并将 mail 配置为本地或外部 SMTP 发送告警邮件。

0