温馨提示×

怎样通过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.logdmesg(内核与硬件 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)。
  • 架构侧优化:必要时将日志转发到远程日志服务器做集中存储与分析,减轻本机负载。

五 快速上手流程与告警规则示例

  • 建立“发现—定位—验证—处置”的闭环:
    1. 发现:用 journalctl -p err -b 或 grep -i “error” /var/log/syslog 找到异常时段;
    2. 定位:journalctl -u --since/–until 精确还原上下文,必要时查 kern.log/dmesg 与 Web 服务错误日志;
    3. 验证:用 top/htop、vmstat、iostat、free、iotop、nmon、atop 复核资源瓶颈;
    4. 处置:调整应用/内核参数、修复配置或扩容,并记录到运维手册。
  • 告警规则示例(可直接落地):
    • 内核/硬件:dmesg 或 kern.log 出现 “error|I/O error|reset” 即触发严重告警;
    • 服务异常:journalctl -u nginx -p err 在 5 分钟 内累计 ≥ 3 次触发告警;
    • 认证安全:auth.log 出现 “Failed password” 短时间内高频触发 Fail2ban;
    • 容量风险:/var/log 使用率超过 80% 触发预警,结合 logrotate 与清理策略自动恢复。

0