Appearance
19. 日志分析与监控
本章节指导在 RHEL 8.10(主机名 ZSLinux)上使用 SecureCRT 进行日志分析和监控配置,配合 SecureFX 传输日志文件。内容涵盖日志分析与告警(rsyslog, logwatch)、监控工具(Zabbix, Prometheus/Grafana)和 SIEM 集成,以 sshd 日志(端口 2222,参考第 6 章)为例,全面实用,适合初学者快速掌握和运维人员日常维护。所有操作在 ZSLinux 环境中测试,确保实验一致性。
19.1 前提条件
- RHEL 8.10 已安装(参考第 1 章),主机名设置为
ZSLinux. - 使用 SecureCRT 登录(SSH2 协议,端口 2222,参考第 6 章).
- 使用 SecureFX 传输文件(SFTP 协议).
- 具有 root 或 sudo 权限.
- 系统已订阅并启用 RHEL 和 EPEL 仓库(参考第 4 和 7 章).
sshd服务已配置(参考第 6 章).- 防火墙和 SELinux 启用(参考第 13 章).
19.2 日志分析与告警
19.2.1 配置 rsyslog
- 安装并启用
rsyslog:bashdnf install -y rsyslog # 安装 rsyslog 日志服务 systemctl enable --now rsyslog # 启用并启动 rsyslog 服务 - 配置集中日志(发送到远程服务器 192.168.1.200:514):bash
vim /etc/rsyslog.conf # 编辑 rsyslog 配置文件 # 添加: *.* @192.168.1.200:514 # 发送所有日志到远程服务器 systemctl restart rsyslog # 重启 rsyslog 服务
19.2.2 配置 logwatch
- 安装并运行
logwatch:bashdnf install -y logwatch # 安装 logwatch 日志分析工具 logwatch --detail High --mailto admin@example.com --service sshd # 生成并发送 sshd 日志报告
19.2.3 配置邮件告警
- 安装和配置
postfix:bashdnf install -y postfix # 安装 postfix 邮件服务 systemctl enable --now postfix # 启用并启动 postfix 服务 - 配置告警规则(示例:SSH 登录失败):bash
vim /etc/rsyslog.d/sshd_alert.conf # 创建告警规则 # 添加: :msg, contains, "Failed password" /var/log/sshd_alert.log & stop systemctl restart rsyslog # 重启 rsyslog 服务
19.3 监控工具配置
19.3.1 配置 Zabbix
- 安装 Zabbix server:bash
dnf install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent # 安装 Zabbix 服务器和代理 dnf install -y mariadb-server # 安装 MariaDB 数据库 systemctl enable --now mariadb # 启用并启动 MariaDB - 配置 Zabbix 数据库:bash
mysql -u root -e "CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;" # 创建 Zabbix 数据库 zcat /usr/share/doc/zabbix-server-mysql*/schema.sql.gz | mysql -u root zabbix # 初始化数据库 - 启动 Zabbix:bash
systemctl enable --now zabbix-server zabbix-agent httpd # 启用并启动 Zabbix 服务
19.3.2 配置 Prometheus 和 Grafana
- 安装 Prometheus:bash
dnf install -y prometheus2 # 安装 Prometheus 监控工具 systemctl enable --now prometheus # 启用并启动 Prometheus 服务 - 安装 Grafana:bash
dnf install -y grafana # 安装 Grafana 可视化工具 systemctl enable --now grafana-server # 启用并启动 Grafana 服务 - 配置防火墙:bash
firewall-cmd --permanent --add-port=9090/tcp # 允许 Prometheus 端口 firewall-cmd --permanent --add-port=3000/tcp # 允许 Grafana 端口 firewall-cmd --reload # 应用防火墙规则
19.3.3 SIEM 集成
- 配置
rsyslog发送到 SIEM(示例:外部 SIEM 192.168.1.200):bashvim /etc/rsyslog.conf # 编辑 rsyslog 配置文件 # 添加: *.* @@192.168.1.200:514 # 使用 TCP 发送日志到 SIEM systemctl restart rsyslog # 重启 rsyslog 服务
19.4 验证
- 验证日志分析:bash
journalctl -u sshd --since "1 hour ago" # 检查最近 1 小时 sshd 日志 tail -n 10 /var/log/sshd_alert.log # 检查 SSH 失败告警日志 - 验证
rsyslog:bashsystemctl status rsyslog # 检查 rsyslog 服务状态 logger "Test log message" # 发送测试日志 tail -n 1 /var/log/messages # 验证日志记录 - 验证 Zabbix:bash
zabbix_get -s 127.0.0.1 -k system.cpu.load[all,avg1] # 检查 CPU 负载 systemctl status zabbix-server # 检查 Zabbix 服务状态 - 验证 Prometheus/Grafana:bash
curl http://localhost:9090 # 检查 Prometheus 访问 curl http://localhost:3000 # 检查 Grafana 访问 - 测试 SSH 连接:bash
ssh -p 2222 testuser@ZSLinux # 测试 SSH 连接(参考第 6 章) - 常见问题:
- 日志未收集:检查
rsyslog配置(/etc/rsyslog.conf)或服务状态(systemctl status rsyslog)。 - 告警未触发:验证
postfix状态(systemctl status postfix)或日志规则(/etc/rsyslog.d/)。 - Zabbix 无法访问:确认数据库初始化(
mysql -u root -D zabbix)或防火墙(firewall-cmd --list-ports)。
- 日志未收集:检查
19.5 实践任务
- 使用 SecureCRT 登录
ZSLinux,配置rsyslog发送日志到远程服务器(192.168.1.200:514)。 - 配置
logwatch发送sshd日志报告并验证邮件。 - 安装 Zabbix 并检查 CPU 负载监控。
- 部署 Prometheus 和 Grafana,验证端口访问。
19.6 自测问题
- 问题:如何查看最近 1 小时的
sshd日志?- 答案:
journalctl -u sshd --since "1 hour ago"
- 答案:
- 问题:如何配置
rsyslog发送日志到远程服务器?- 答案:编辑
/etc/rsyslog.conf,添加*.* @192.168.1.200:514,然后systemctl restart rsyslog。
- 答案:编辑
- 问题:如何检查 Zabbix 监控数据?
- 答案:
zabbix_get -s 127.0.0.1 -k system.cpu.load[all,avg1]
- 答案:
