You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Apache Storm Log4j2 Syslog Appender从UDP改为TCP?

解决Storm Log4j2 Syslog Appender UDP消息过长报错问题——改为TCP协议

当然可以把Apache Storm使用的Log4j2 Syslog Appender默认协议从UDP改为TCP,这正好能解决你遇到的消息长度超限问题——UDP本身存在单报文大小限制(通常在64KB左右),而TCP的流式传输没有这个限制,更适合传输大容量日志消息。下面是具体的操作步骤:

  • 修改Log4j2 Worker配置文件
    找到你提到的Log4j2/Worker.xml配置文件,将其中Syslog appender的protocol="UDP"修改为protocol="TCP",还可以根据需求添加TCP专属的配置参数(比如重连延迟、连接超时等)。修改后的配置示例如下:

    <Syslog name="syslog" format="RFC5424" charset="UTF-8" host="localhost" port="514" protocol="TCP" 
            appName="[${sys:storm.id}:${sys:worker.port}]" mdcId="mdc" includeMDC="true" 
            facility="LOCAL5" enterpriseNumber="18060" newLine="true" 
            exceptionPattern="%rEx{full}" messageId="[${sys:user.name}:${sys:logging.sensitivity}]" 
            id="storm" immediateFail="true" immediateFlush="true"
            reconnectDelayMillis="5000" connectTimeoutMillis="3000"/>
    
  • 确认Syslog服务器的TCP端口监听
    很多默认的syslog服务器只开启UDP 514端口的监听,所以需要确保你的syslog服务器已经配置为监听TCP 514端口(如果用了非标准端口,记得同步修改配置里的port值)。

  • 重启Storm Worker或重新提交拓扑
    新的Log4j2配置需要重启Storm Worker节点才能生效,或者你也可以直接重新提交拓扑,让Storm加载新的配置。

  • 验证配置效果
    提交拓扑后观察Storm的Worker日志,原来的ERROR Unable to write to stream UDP:localhost:514错误应该不再出现,同时检查syslog服务器是否能正常接收所有日志消息(包括之前因长度问题无法发送的大消息)。

内容的提问来源于stack exchange,提问作者user2706838

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:02:46