rsyslog发送日志经过代理失败?Syslog TCP、TLS与队列排查

日志“没有到”先看本地是否入队,再看传输、接收与解析四个阶段
发布于
7

应用日志已经写进本机文件,中心平台却一直没有新记录,很多人先检查HTTP_PROXY。rsyslog的传统远程输出并不是网页上传:它可能使用UDP、TCP、RELP或带TLS的专用连接,是否支持HTTP代理取决于具体输出模块。

先识别实际输出方式

方式 可靠性特点 常见用途
Syslog UDP 开销低,无传输确认 可容忍少量丢失的局域网日志
Syslog TCP 有连接与字节重传 需要更稳定传输的集中日志
RELP 提供更明确的事务确认 重视交付确认的rsyslog链路
HTTP输出 取决于模块与接口 发送到HTTP采集端点

普通HTTP代理只可能参与最后一类或厂商明确支持的HTTP链路,不能自动把TCP Syslog转换成HTTP。

“本地有日志”仍要确认输入规则

rsyslog可能没有读取目标文件、journald字段不匹配,或过滤规则在输出前丢弃了消息。先用带唯一标记的测试日志确认消息进入rsyslog,再观察规则命中和队列变化。不要使用真实用户数据或密钥作为测试内容。

UDP为什么难以证明交付

UDP发送端没有连接握手,内核接受报文不代表交换机、防火墙或接收端最终处理。突发流量超过缓冲区也可能无声丢包。对于审计、安全或计费日志,应根据风险选择TCP、RELP、持久队列和端到端对账,而不是只看进程无报错。

TCP连接正常也可能没有入库

接收端可能接受连接,却因消息过长、格式不符、租户标识错误、磁盘满或解析规则拒绝消息。发送端、负载均衡、接收服务和存储层要使用统一时间与请求标记对应起来,避免只截取网络连接状态。

TLS需要验证对端身份

Syslog over TLS不仅是打开一个加密端口。发送端要信任正确CA,并验证接收端证书名称或许可身份;接收端若要求客户端证书,还要正确管理私钥、用途和轮换。证书错误不应通过永久关闭校验解决。

队列决定故障时发生什么

内存队列速度快,但进程或主机重启时可能丢失未发送数据;磁盘辅助或磁盘队列可提高恢复能力,却需要容量、权限和告警。配置时要明确队列满后的动作,是阻塞、丢弃低优先级,还是保存到备用位置。

重试风暴与重复消息

接收端恢复后,大量积压日志同时重发会占满带宽和处理能力。设置合理退避与工作线程,并为平台准备容量。TCP重连或应用级重试也可能产生重复记录,下游分析不能假设每条消息天然唯一。

消息格式和分帧

RFC 3164风格、RFC 5424结构化消息以及TCP分帧方式可能不同。代理或负载均衡若按换行切分,而发送端使用八位组计数,接收端就会粘包或拆错。问题表现为连接正常、日志内容混乱或解析失败。

与日志采集代理的区别

Fluent Bit等工具可能把日志发往HTTP、OpenSearch或Forward协议,每种输出单独配置代理。相关分层方法可参考Fluent Bit输出协议与缓冲排查,但不要把它的HTTP配置原样套到rsyslog TCP输出。

故障处置清单

  1. 确认输入、过滤、模板和输出模块真实生效;
  2. 生成无敏感信息的唯一测试消息,记录UTC时间;
  3. 观察本地队列大小、丢弃计数和模块错误;
  4. 验证实际协议、端口、TLS证书和接收端身份;
  5. 检查接收端解析、磁盘、限流与存储状态;
  6. 模拟短时断网并验证积压恢复、重复与告警。

结论

rsyslog转发失败不能只问“代理通不通”。先证明日志进入规则和队列,再验证实际Syslog传输、TLS身份与接收端解析,才能判断消息是没有发送、路上丢失,还是到达后被拒绝。

常见问题(FAQ)

rsyslog会自动读取HTTP_PROXY吗?
传统Syslog TCP、UDP或RELP输出通常不会通过HTTP代理;只有明确使用HTTP输出的模块或链路才可能采用HTTP代理。
UDP Syslog发送成功为什么服务器没日志?
UDP没有连接确认,发送调用成功不代表接收端收到或落盘;需要结合网络计数、接收端日志和必要的可靠传输判断。
启用TCP就不会丢日志了吗?
不能保证。进程重启、磁盘满、队列策略、接收端拒绝和解析错误仍可能丢失,需要配置持久队列、重试和监控。
Syslog TLS证书应该验证什么?
应验证接收端身份、证书链、有效期和名称,并按部署选择允许的对等身份;不能只加密而不验证服务器。

本文由作者原创/授权发布于极跃圈(jiyueip.com)未经许可,禁止转载。题图来自Unsplash,基于CC0协议。

声明:极跃圈(JIYUEIP.com)内网友所发表的所有内容及言论仅代表其本人,并不反映任何极跃圈(JIYUEIP.com)之意见及观点。

0 讨论
热门最新
总结
暂无总结
0 / 600