Linux系统监控与日志运维核心是建立采集、分析、响应闭环,重点保障日志可读性、时效性及指标业务关联;关键日志位于/var/log/下各文件,journalctl提供结构化查询,logrotate实现自动轮转,原生命令组合可轻量监控健康指标。

Linux 系统监控与日志运维的核心目标,是让系统状态“看得见、判得准、控得住”。不是堆工具,而是建立从采集、分析到响应的闭环——重点在日志的可读性、时效性,以及监控指标的真实业务关联。
关键日志位置与快速定位方法
日志是系统运行的“黑匣子”,但必须知道去哪里找、怎么筛。
- /var/log/syslog(Debian/Ubuntu)或 /var/log/messages(RHEL/CentOS):系统级事件主入口,查启动异常、服务崩溃首选
- /var/log/auth.log 或 /var/log/secure:所有登录、sudo、SSH 活动集中地,安全审计第一现场
- /var/log/kern.log:内核报错、硬件驱动问题、OOM killer 记录都在这里
- /var/log/nginx/access.log 和 error.log:Web 请求流量与后端失败的直接证据
- 用 tail -f /var/log/syslog 实时盯住新日志;用 grep -i "failed\|denied" /var/log/auth.log 快速抓可疑登录
systemd 日志统一管理(journalctl)
现代发行版默认启用 journald,它比传统文件日志更结构化、支持元数据过滤,且无需重启服务即可生效。
- journalctl -u nginx.service -n 50:只看 Nginx 最近 50 行日志,避免翻原始文件
- journalctl --since "2 hours ago" --priority=err:精准提取两小时内所有错误级日志
- journalctl _PID=1234:按进程 ID 追踪某次请求完整生命周期
- 搭配 rsyslog 时,可在 /etc/rsyslog.d/journal.conf 中启用
$SystemMaxFileSize控制 journal 存储上限,防占满 /run
日志轮转与空间治理(logrotate)
不轮转的日志等于定时炸弹——磁盘爆满、I/O 拖慢、关键日志被覆盖都是常见后果。
- 配置文件放在 /etc/logrotate.d/ 下,每项服务单独定义,互不干扰
- 必设参数:daily(按天切)、rotate 7(保留 7 份)、compress(自动 gzip)、missingok(日志缺失不报错)
- 关键动作写在 postrotate 块里:比如
systemctl reload nginx,确保服务重开新日志文件句柄 - 测试配置是否生效:logrotate -d /etc/logrotate.d/nginx(-d 表示模拟执行,不真实操作)
轻量级健康指标监控组合
不需要 Grafana+Prometheus 也能做有效监控。用好原生命令,就能守住底线。
-
CPU 与负载:
uptime看 1/5/15 分钟 load average;mpstat 1 3查单核利用率是否持续超 80% -
内存压力:
free -h关注 available 值(不是 free),低于总量 10% 就需警惕 -
磁盘风险:
df -h | awk '$5 > 85 {print $1,$5}'自动告警使用率超 85% 的挂载点 -
关键进程存活:
pgrep -x "nginx" && echo "OK" || echo "DOWN"可嵌入巡检脚本 - 把以上命令写成 crontab -e 定时任务,每 5 分钟跑一次并邮件通知,成本几乎为零


















