Ubuntu syslog故障排查有哪些方法
导读:Ubuntu syslog故障排查方法 一 快速定位与基础检查 确认日志服务是否在运行:优先检查 rsyslog(Ubuntu 默认)。执行:sudo systemctl status rsyslog;若未运行则 sudo systemc...
Ubuntu syslog故障排查方法
一 快速定位与基础检查
- 确认日志服务是否在运行:优先检查 rsyslog(Ubuntu 默认)。执行:
sudo systemctl status rsyslog;若未运行则sudo systemctl start rsyslog并设置开机自启sudo systemctl enable rsyslog。如使用 syslog-ng,将命令中的服务名替换为syslog-ng。服务异常是日志不写或丢失的最常见原因。 - 查看服务自身日志以发现启动/运行报错:
sudo journalctl -u rsyslog(或-u syslog-ng),关注启动失败、权限拒绝、配置语法错误等线索。 - 确认系统日志文件是否生成与更新:在 /var/log/ 下查看 syslog(Debian/Ubuntu 常用)、必要时也查看 /var/log/messages;用
sudo tail -n 200 /var/log/syslog或tail -f实时观察。若文件长时间不更新,多半是服务未运行或配置未生效。 - 初步判断问题类型:是“完全无日志”“日志不刷新”“日志暴涨”“权限/磁盘问题”等,这将决定后续深入方向。
二 配置语法与日志级别验证
- 核对配置文件语法与包含关系:主配置通常为 /etc/rsyslog.conf,并包含 /etc/rsyslog.d/*.conf。修改后先语法检查再重启:
sudo rsyslogd -N1(语法无误才会退出码为0),随后sudo systemctl restart rsyslog。 - 调整日志级别与设施匹配:在规则中使用如
*.info; mail.none; authpriv.none; cron.none /var/log/syslog控制记录范围;或在单独设施上提升级别,例如kern.alert /dev/console、mail.* -/var/log/mail.log。常见级别从低到高为:debug、info、notice、warning、err、crit、alert、emerg。 - 按程序名分流与终止继续处理:将指定程序的日志单独落盘并停止后续匹配,避免重复写入。例如:
if $programname == 'your-service-name' then /var/log/your-service-errors.log与& stop。修改后重启服务生效。 - 远程日志场景(如需要):在 rsyslog 配置中启用接收外部日志(传统方式是在启动参数加入
-r,现代 rsyslog 多以模块方式配置),并确保网络与防火墙放行 UDP/TCP 514(TLS 为 6514)。
三 磁盘空间与日志轮转处理
- 快速定位大日志来源:
sudo du -h --max-depth=1 /var/log逐级查找异常增长的文件或目录。 - 安全清理超大日志文件:对正在被写入的 /var/log/syslog,使用
sudo sh -c 'cat /dev/null > /var/log/syslog'(避免直接rm导致句柄占用与写入失败)。 - 限制 systemd-journald 占用:执行
sudo journalctl --vacuum-size=300M(可按需调整为 100M–1G),并可在/etc/systemd/journald.conf中设置SystemMaxUse=、MaxRetentionSec=等长期策略后sudo systemctl restart systemd-journald。 - 配置 logrotate 轮转策略:编辑或新增
/etc/logrotate.d/rsyslog(或针对单个日志文件),示例:
这能避免单日志无限增长、历史日志难追溯等问题。/var/log/syslog { daily rotate 7 compress missingok notifempty create 640 root adm postrotate systemctl reload rsyslog > /dev/null 2> & 1 || true endscript }
四 权限与网络连通性排查
- 检查日志文件与目录权限:确保 /var/log/ 及目标日志文件对 root:adm 具备正确权限(如 640),否则 rsyslog 可能无法写入。
- 验证本地套接字与权限:syslog 通过 /dev/log(Unix 域套接字)接收本地日志,确认该套接字存在且权限正确(通常由服务自动维护)。
- 远程日志连通性测试:从发送端使用
logger -p local0.info "test message"发送测试;在接收端tail -f /var/log/syslog观察是否到达。网络侧确保 514/6514 端口与防火墙策略正确。
五 高频场景与对应处置
- 服务未运行或崩溃:用
systemctl status rsyslog与journalctl -u rsyslog查错;修复后systemctl restart rsyslog。 - 配置修改未生效:先
rsyslogd -N1语法检查,再重启服务。 - 日志不刷新或写入缓慢:优先检查 磁盘空间 与 inode 是否耗尽(
df -h、df -i),其次查看是否触发了异常的高频日志循环。 - 日志暴涨:定位来源进程(如某个应用疯狂报错),修复根因;同时用 journald 限额 与 logrotate 控制体量。
- 权限被拒:核对 /var/log/ 与目标文件的属主属组与权限(如 root:adm,640)。
- 远程日志收不到:核对 514/6514 端口、防火墙、rsyslog 接收模块与网络连通性,并用
logger做端到端测试。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu syslog故障排查有哪些方法
本文地址: https://pptw.com/jishu/769434.html
