利用 CentOS Syslog 进行故障诊断的实用流程
一 快速定位思路
二 本地日志快速定位
journalctl -fjournalctl -b;上一次启动:journalctl -b -1journalctl -u nginx.service -bdmesg | tail -n 200/var/log/messages/var/log/secure/var/log/dmesg/var/log/audit/audit.log(若启用 auditd)grep -i "error\|fail\|timeout" /var/log/messagesjournalctl --since "2025-11-19 14:00:00" --until "2025-11-19 15:00:00"wc -l /var/log/messages;按小时统计错误:grep "ERROR" /var/log/messages | awk '{print $1,$2}' | sort | uniq -c*.* /var/log/raw.log)以排除配置干扰,再逐步恢复。三 远程日志与 Syslog 链路排查
systemctl status rsyslog;必要时 systemctl restart rsyslog/etc/rsyslog.conf 或 /etc/rsyslog.d/*.conf 中确认转发规则,例如:*.* @192.0.2.10:514(UDP),或 :omrelp:192.0.2.10:2514(RELPs)/etc/rsyslog.conf 或 /etc/rsyslog.d/remote.conf 中确保存在
module(load="imudp")、input(type="imudp" port="514")module(load="imtcp")、input(type="imtcp" port="514")systemctl restart rsyslogfirewall-cmd --permanent --add-port=514/udp 或 --add-service=syslog,随后 firewall-cmd --reloadnc -vzu 192.0.2.10 514(UDP 探测),或 nc -vz 192.0.2.10 514(TCP)logger "syslog-diag-test-$(date +%s)",在服务器侧查看是否收到journalctl -u rsyslog -b 与服务器侧 /var/log/messages,定位语法错误、端口占用、权限等问题四 常见故障场景与修复要点
systemctl status rsyslog 查错;用 journalctl -u rsyslog 看语法/权限报错;修正 /etc/rsyslog.conf 后 systemctl restart rsyslog。ss -lunpt | grep 514 或 netstat -tulpen | grep 514 查占用进程并停用或调整端口。/etc/logrotate.d/ 下对应配置,设置合理的 daily/weekly、保留天数与压缩;必要时手动执行 logrotate -f /etc/logrotate.conf 触发轮转。/var/log/ 及子目录属主为 root:adm、权限 640;排查 SELinux 拒绝:ausearch -m avc -ts recent,必要时调整策略或临时 setenforce 0 验证(验证后请恢复为 enforcing)。/etc/rsyslog.conf 中调优或关闭速率限制(如设置 $SystemLogRateLimitInterval 0 与 $SystemLogRateLimitBurst 0),并评估磁盘与 I/O 能力后再上线。timedatectl status 正常。五 高效分析与长期监控建议
journalctl -f -p err..alert 或 tail -f /var/log/messages | grep -i errorjournalctl --since "2025-11-19 00:00:00" -u sshd -o short-isojournalctl --since today | grep -i error | awk '{print $5}' | sort | uniq -c | sort -nr | headlogwatch --detail high --range today 或 --range yesterday/var/log/** 与 journald 日志,配置仪表盘与阈值告警。/var/log/audit/audit.log 与 auditd 策略;结合 syslog 做统一转发与留存。