怎样通过Ubuntu日志监控系统性能
小樊
45
2025-12-07 23:03:26
通过 Ubuntu 日志监控系统性能
一 日志来源与关键命令
- 使用 journald 统一查询系统与服务日志:按当前启动查看(journalctl -b)、按服务查看(journalctl -u )、按级别过滤(journalctl -p err -b)、按时间窗口查询(journalctl --since “2025-05-22 08:00:00” --until “2025-05-22 10:00:00”)。
- 查看传统文本日志:/var/log/syslog(综合系统消息)、/var/log/auth.log(认证与 SSH)、/var/log/kern.log 与 dmesg(内核与硬件 I/O 错误)。
- 服务类日志:Web 服务如 /var/log/apache2/ 或 /var/log/nginx/ 的访问与错误日志,可用于定位高峰与异常流量。
- 快速排错范式:先用 journalctl 按服务与级别定位时间窗,再回到对应文本日志或内核日志深挖根因。
二 将性能事件转化为可告警的日志
- 资源阈值告警:部署 Glances,启用 syslog 通知(notify_syslog、syslog_facility、syslog_level),当 CPU、内存、磁盘等超过阈值时写入 syslog,再由日志平台或邮件触发告警。
- 安全与异常行为:用 Fail2ban 扫描 auth.log 的失败登录并自动封禁,减少暴力破解对性能与安全的冲击。
- 日志汇总与日报:Logwatch 每日汇总 syslog 等日志,生成高可读报告(Detail、Range、Output、MailTo 等可配置),便于容量与趋势评估。
三 长期监控与可视化
- 轻量到中型场景:继续用 Logwatch 做日/周报,结合 cron 定时执行自定义分析脚本,将 “error/oom/timeout” 等关键字与关键服务日志抽取为邮件或文件报告。
- 中大型与集中化:采用 ELK(Elasticsearch + Logstash + Kibana) 或 Prometheus + Grafana 架构,统一采集 syslog/journal、结构化索引、设置阈值告警并做趋势与可视化面板。
- 与性能度量联动:日志发现异常后,联动 top/htop、vmstat、iostat、free、nmon、atop、iotop 等工具做现场剖析,定位到具体进程、I/O 或内存瓶颈。
四 日志性能与存储优化
- 控制日志量与 I/O:调整服务与 rsyslog 的日志级别,减少 debug/info 噪声;为 rsyslog 配置异步与缓冲(如 imuxsock 缓冲)以降低磁盘抖动。
- 轮转与压缩:通过 logrotate 设置按日/按大小轮转、保留份数与压缩,防止 /var/log 膨胀引发磁盘与 I/O 压力。
- 空间治理:定期清理历史日志,例如 journald 执行 journalctl --vacuum-size=100M 或 –vacuum-time=3d;同时审计 /var/log 目录大小(du -sh /var/log)。
- 架构侧优化:必要时将日志转发到远程日志服务器做集中存储与分析,减轻本机负载。
五 快速上手流程与告警规则示例
- 建立“发现—定位—验证—处置”的闭环:
- 发现:用 journalctl -p err -b 或 grep -i “error” /var/log/syslog 找到异常时段;
- 定位:journalctl -u --since/–until 精确还原上下文,必要时查 kern.log/dmesg 与 Web 服务错误日志;
- 验证:用 top/htop、vmstat、iostat、free、iotop、nmon、atop 复核资源瓶颈;
- 处置:调整应用/内核参数、修复配置或扩容,并记录到运维手册。
- 告警规则示例(可直接落地):
- 内核/硬件:dmesg 或 kern.log 出现 “error|I/O error|reset” 即触发严重告警;
- 服务异常:journalctl -u nginx -p err 在 5 分钟 内累计 ≥ 3 次触发告警;
- 认证安全:auth.log 出现 “Failed password” 短时间内高频触发 Fail2ban;
- 容量风险:/var/log 使用率超过 80% 触发预警,结合 logrotate 与清理策略自动恢复。