CentOS Syslog故障排查有哪些技巧
导读:CentOS Syslog故障排查技巧 一 快速定位思路 明确范围:是本机日志缺失/错乱,还是远程转发失败,抑或日志文件过大/轮转异常。 先查服务与自启:确认 rsyslog 正在运行并已开机自启,状态异常时优先查看服务日志。 再查配置语...
CentOS Syslog故障排查技巧
一 快速定位思路
- 明确范围:是本机日志缺失/错乱,还是远程转发失败,抑或日志文件过大/轮转异常。
- 先查服务与自启:确认 rsyslog 正在运行并已开机自启,状态异常时优先查看服务日志。
- 再查配置语法与端口:核对 /etc/rsyslog.conf 与 /etc/rsyslog.d/ 的规则语法、转发目标与协议端口。
- 网络与安全策略:确认 514/UDP、514/TCP 放行,必要时排查 SELinux 与文件权限。
- 最后看日志本身:用 journalctl 与 tail -f 观察 rsyslog 自身输出与目标日志是否产生。
二 服务与配置检查
- 服务状态与自启
- 检查与启动:sudo systemctl status rsyslog;sudo systemctl start rsyslog;sudo systemctl enable rsyslog
- 查看 rsyslog 自身日志:sudo journalctl -u rsyslog -f
- 配置文件语法与生效
- 主配置与目录:/etc/rsyslog.conf、/etc/rsyslog.d/*.conf;修改后执行:sudo systemctl restart rsyslog
- 常见转发写法:
- UDP:. @remote_host:514
- TCP:. @@remote_host:514
- 端口与冲突
- 检查是否被占用:ss -lunpt | grep 514 或 netstat -tulpen | grep 514
- 若端口被占用,停用冲突进程或更换端口并同步两端配置
- 常见配置陷阱
- 日志级别/设施过滤过严导致“看不到日志”:如仅记录 *.info 但未排除 mail/cron/authpriv 等
- 路径或权限错误:确保日志目录存在且 root:adm 权限正确,避免因权限导致写入失败。
三 远程日志排障
- 服务端(接收端)必备
- 启用模块与监听(UDP/TCP 按需):
- module(load=“imudp”);input(type=“imudp” port=“514”)
- module(load=“imtcp”);input(type=“imtcp” port=“514”)
- 防火墙放行:firewall-cmd --permanent --add-port=514/{ udp,tcp} ;firewall-cmd --reload
- 启用模块与监听(UDP/TCP 按需):
- 客户端(发送端)要点
- 正确指向远程:. @server_ip:514(UDP)或 @@server_ip:514(TCP)
- 确认路由与连通:ping、traceroute、nc -vz server_ip 514(UDP 可用 nc -u)
- 双向验证
- 服务端:tail -f /var/log/messages | grep syslog
- 客户端:logger -p user.info “test remote syslog”
- 若只发不收,多为服务端未监听、ACL/防火墙阻断或协议不匹配;若只收不发,多为客户端路由/防火墙或配置错误。
四 日志文件与轮转问题
- 文件与权限
- 常用日志路径:/var/log/messages、/var/log/secure、/var/log/audit/audit.log
- 权限建议:/var/log/secure 等由 root:adm 拥有,权限 640
- 轮转与大小
- 检查 /etc/logrotate.conf 与 /etc/logrotate.d/*;确保保留周期与大小合理
- 高频日志可配置速率限制(避免丢日志或阻塞):
- $SystemLogRateLimitInterval 0
- $SystemLogRateLimitBurst 0
- 清理与保护
- 清空大文件建议用重定向覆盖:> /var/log/btmp(保持 inode 稳定)
- 防误删:chattr +a /var/log/关键日志
- 监控与告警
- 实时查看:tail -f /var/log/messages;journalctl -f
- 生成日报:logwatch;集中分析:ELK/Graylog/Zabbix。
五 高频错误与修复对照表
| 症状 | 快速检查 | 修复建议 |
|---|---|---|
| rsyslog 无法启动 | systemctl status rsyslog;journalctl -xe;ss -lunpt | 修正语法错误;释放 514 端口;必要时重装/启用服务 |
| 本机日志不写入 | 查看 /var/log/messages、/var/log/secure 权限与磁盘空间 | 修正 root:adm 权限;清理磁盘;确认 rsyslog 有写入权限 |
| 远程日志收不到 | 客户端 logger 测试;服务端抓 514 端口;查防火墙 | 服务端启用 imudp/imtcp;放行 514/UDP/TCP;核对 @ 与 @@ 协议 |
| 日志量突增被限流 | 检查 $SystemLogRateLimit* 配置 | 适当调大或设为 0(视磁盘与性能而定) |
| 日志文件过大/轮转异常 | du -sh /var/log/*;cat /etc/logrotate.conf | 调整轮转周期与保留份数;必要时手动触发轮转 |
| SELinux 拒绝 | ausearch -m avc -ts recent;getenforce | 临时 setenforce 0 验证;为 syslog 配置合适策略或恢复默认 |
| 容器/虚拟化环境无日志 | 容器内权限与 systemd 支持;挂载 /dev/log | 使用特权容器或官方 rsyslog 镜像;挂载宿主机的 syslog 套接字 |
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS Syslog故障排查有哪些技巧
本文地址: https://pptw.com/jishu/752013.html
