linux系统指标自动采集有四种主流方式:①crontab调用shell命令轻量采集;②sar配合sysstat实现系统级历史归档;③nmon采集高粒度性能快照;④node_exporter+prometheus构建可扩展指标体系。

Linux 系统指标自动采集,核心在于“定时执行采集命令 + 持久化保存结果”。不依赖复杂平台也能落地,关键是选对工具、配好时间、存稳数据。
用 crontab 定时调用基础命令采集
最轻量的方式是直接调度 shell 命令,适合 CPU、内存、磁盘等通用指标。例如每 5 分钟记录一次内存使用率:
- 编辑定时任务:crontab -e
- 添加一行:*/5 * * * * free -m | grep ^Mem | awk '{print $(NF-1), $3, $4}' >> /var/log/mem_usage.log
- 输出格式为“日期时间 已用内存(MB) 可用内存(MB)”,可配合 date 命令补全时间戳
- 注意:避免直接用
>>追加到大日志文件而不轮转,建议搭配 logrotate 或每日新建文件(如用$(date +\%Y\%m\%d)动态生成文件名)
用 sar 配合 cron 实现系统级历史归档
sar 是 Linux 内置的成熟采集方案,自带二进制存储和周期性收集机制,无需自己拼接命令。
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- 确保 sysstat 已安装并启用:Ubuntu 执行 sudo apt-get install sysstat,CentOS 执行 sudo yum install sysstat
- 确认 /etc/default/sysstat 中
ENABLED="true",否则 sa1/sa2 不会自动运行 - 默认配置下,/etc/cron.d/sysstat 已设定每 10 分钟执行 sa1,每天凌晨执行 sa2 生成日报
- 原始数据存于 /var/log/sysstat/(如 sa12 文件对应每月 12 日),可用 sar -f /var/log/sysstat/sa12 查看
用 nmon 采集高粒度性能快照
nmon 适合需要图表分析、关注 I/O 或进程级细节的场景,但需注意采集与导出分离。
- 下载匹配你系统的二进制(如 nmon16m_x86_64_rhel7),加执行权限后软链到 /usr/local/bin/nmon
- 写脚本 /opt/bin/nmon-collect.sh:
nmon -f -N -s 30 -c 144 -t -m /data/nmon/$(date +\%Y\%m\%d)(每 30 秒采一次,共 144 次 = 72 分钟,含 top 进程) - 在 crontab 中设置:0 2 * * * /opt/bin/nmon-collect.sh(每天凌晨 2 点启动一轮采集)
- 生成的
.nmon文件需在 Windows 上用 Excel + nmon_analyser 打开生成图表,Linux 端只负责采集
用 node_exporter + Prometheus 构建可扩展指标体系
当指标需长期存储、多机聚合或对接 Grafana 可视化时,这套组合更合适。
- 部署 node_exporter(监听 9100 端口),确保其能被 Prometheus 抓取
- 在 prometheus.yml 的
scrape_configs中加入目标:static_configs: [{targets: ["localhost:9100"]}] - Prometheus 默认每 15 秒拉取一次指标,无需额外配置定时任务;若需导出某时段数据,用 curl 调用 API:
curl "http://localhost:9090/api/v1/query_range?query=node_memory_MemAvailable_bytes&start=$(date -d '2 hours ago' +%s)&end=$(date +%s)&step=60" - 导出结果为 JSON,可用 jq 提取数值后转 CSV,或直接接入 Grafana 导出 PNG/PDF 报表










