跳转至

18. 日志分析与监控

本章节指导在 RHEL 9(主机名 LinuxDC)上使用 SecureCRT 进行日志分析和监控配置,配合 SecureFX 传输日志文件。内容涵盖日志分析与告警(rsyslog, logwatch)、监控工具(Zabbix, Prometheus/Grafana)和 SIEM 集成,以 sshd 日志(端口 2222,参考第 9 章)为例,全面实用,适合初学者快速掌握和运维人员日常维护。所有操作在 LinuxDC 环境中测试,确保实验一致性。


18.1 前提条件

  • RHEL 9 已安装(参考第 1 章),主机名设置为 LinuxDC
  • 使用 SecureCRT 登录(SSH2 协议,端口 2222,参考第 9 章)。
  • 使用 SecureFX 传输文件(SFTP 协议)。
  • 具有 root 或 sudo 权限。
  • 系统已订阅并启用 RHEL 和 EPEL 仓库(参考第 2 和第 5 章)。
  • sshd 服务已配置(参考第 9 章)。
  • 防火墙和 SELinux 启用(参考第 12 章)。

💡 提示:日志监控是系统运维的核心,确保实时性和告警响应。在 RHEL 10 中,日志工具如 journald 支持更多集成 AI 辅助的异常检测,提升自动化分析效率。


18.2 日志分析与告警

18.2.1 配置 rsyslog

  • 安装 rsyslog(默认包含):

    dnf install -y rsyslog  # 若缺失
    

  • 配置远程日志发送:

    vim /etc/rsyslog.conf
    # 添加:
    *.* @192.168.1.200:514  # 发送所有日志到远程服务器(UDP)
    # 或使用 TCP:
    *.* @@192.168.1.200:514
    

  • 重启服务:

    systemctl restart rsyslog
    

🧠 知识点:rsyslog 支持过滤(如 auth.* /var/log/auth.log)。测试:logger "Test log entry"

18.2.2 配置 logwatch

  • 安装 logwatch:

    dnf install -y logwatch
    

  • 配置每日报告(示例:sshd 日志):

    vim /etc/cron.daily/0logwatch
    # 修改:
    /usr/sbin/logwatch --detail Low --mailto admin@example.com --service sshd --range yesterday
    

💡 提示:logwatch 生成摘要报告。手动运行:logwatch --detail High --service sshd --range yesterday


18.3 监控工具

18.3.1 配置 Zabbix

  • 安装 Zabbix 代理:

    dnf install -y zabbix-agent2
    vim /etc/zabbix/zabbix_agent2.conf
    # 修改:
    Server=192.168.1.200  # Zabbix 服务器 IP
    Hostname=LinuxDC
    systemctl enable --now zabbix-agent2
    

  • 测试监控项:

    zabbix_get -s 127.0.0.1 -k system.cpu.load[all,avg1]  # 检查 CPU 负载
    

🧠 知识点:Zabbix 支持代理模式和自定义项。防火墙:firewall-cmd --add-port=10050/tcp

18.3.2 配置 Prometheus 和 Grafana

  • 安装 node-exporter(Prometheus):

    dnf install -y prometheus-node-exporter
    systemctl enable --now node-exporter
    

  • 安装 Grafana:

    dnf install -y grafana
    systemctl enable --now grafana-server
    

  • 配置防火墙:

    firewall-cmd --permanent --add-port=9100/tcp  # node-exporter
    firewall-cmd --permanent --add-port=3000/tcp  # Grafana
    firewall-cmd --reload
    

💡 提示:访问 Grafana(http://localhost:3000),添加 Prometheus 数据源(localhost:9090)。在 RHEL 10 中,Prometheus 支持更多内置指标,如容器化监控增强。

18.3.3 SIEM 集成(示例:ELK 栈)

  • 安装 Filebeat(ELK 代理):
    dnf install -y filebeat
    vim /etc/filebeat/filebeat.yml
    # 配置输出到 Logstash 或 Elasticsearch
    filebeat.inputs:
    - type: log
      paths:
        - /var/log/secure
    output.logstash:
      hosts: ["192.168.1.200:5044"]
    systemctl enable --now filebeat
    

🧠 知识点:SIEM 用于集中日志分析。测试:filebeat test config


18.4 常见问题与排查

🔍 故障排查

  • 问题 1:日志未发送
    解决:检查 rsyslog 配置(rsyslogd -N1 验证语法)、防火墙(firewall-cmd --list-ports)、远程服务器。

  • 问题 2:logwatch 无邮件
    解决:配置邮件(dnf install -y postfix),检查 cron(journalctl -u crond)。

  • 问题 3:Zabbix 无数据
    解决:检查代理状态(systemctl status zabbix-agent2)、配置(zabbix_agent2 -t system.cpu.load)。

  • 问题 4:Prometheus 无指标
    解决:验证端口(curl http://localhost:9100/metrics)、防火墙(firewall-cmd --list-ports)。


18.5 实践任务

  1. 使用 SecureCRT 通过 SSH(端口 2222)登录 LinuxDC,配置 rsyslog 发送日志到远程服务器(192.168.1.200:514)。
  2. 配置 logwatch 发送 sshd 日志报告并验证邮件。
  3. 安装 Zabbix 并检查 CPU 负载监控。
  4. 部署 Prometheus 和 Grafana,验证端口访问。

检查点:日志发送成功,报告生成,监控数据正常。


18.6 自测问题

  • 问题 1:如何查看最近 1 小时的 sshd 日志?
    答案journalctl -u sshd --since "1 hour ago"

  • 问题 2:如何配置 rsyslog 发送日志到远程服务器?
    答案:编辑 /etc/rsyslog.conf,添加 *.* @192.168.1.200:514,然后 systemctl restart rsyslog

  • 问题 3:如何检查 Zabbix 监控数据?
    答案zabbix_get -s 127.0.0.1 -k system.cpu.load[all,avg1]


🧾 总结
本章完整介绍了 RHEL 9 日志分析与监控的配置,包括 rsyslog、logwatch、Zabbix 和 Prometheus/Grafana 的使用。这些技能提升系统可见性与响应能力,为后续硬盘监控与业务应用集成提供监控基础。