分布式WSO2 APIM:KeyManager问题及Analytics日志持续报错求助
解决WSO2 APIM分布式部署中Analytics节点的EventConversionException错误
这问题我之前帮不少人排查过,核心是Analytics节点没法正确解析Publisher发过来的loganalyzer事件,大概率是事件格式不匹配或者节点间的版本/配置不一致搞出来的,给你几个针对性的排查和修复步骤:
严格核对版本一致性
一定要确保Analytics和Publisher的WSO2 APIM版本完全一致,哪怕小版本号差一点都可能导致事件格式不兼容。比如Publisher用的是2.6.0,Analytics就必须也是2.6.0,绝对不能混用2.5.0或者3.0.0的组件。检查Event Stream定义的一致性
你遇到的错误是针对loganalyzer:1.0.0这个事件流的,首先要确认这个事件流的定义在Analytics节点上正确存在:- 登录Analytics的Carbon控制台(默认地址:
https://<analytics-host>:9444/carbon) - 进入Main > Manage > Event Streams,搜索
loganalyzer:1.0.0 - 对比它的字段结构和Publisher那边的定义,必须完全一致
如果Analytics上找不到这个事件流,直接从Publisher的Event Streams页面导出定义,再导入到Analytics节点即可。
- 登录Analytics的Carbon控制台(默认地址:
验证Data Bridge的连通性与配置
节点间的Data Bridge配置错误也会导致事件传输格式异常:- 检查Publisher节点的
<APIM_HOME>/repository/conf/datasources/analytics-datasources.xml,确认里面配置的Analytics节点地址、端口(默认是9711和9611)没有拼写错误,同时确保两台主机之间的防火墙没有拦截这些端口 - 检查Analytics节点的
<APIM_ANALYTICS_HOME>/repository/conf/databridge/config.xml,确保DataReceiver的端口配置和Publisher指向的一致
可以用telnet <analytics-host> 9711测试端口是否能连通,排除网络问题。
- 检查Publisher节点的
清除缓存并重启节点
有时候旧的缓存事件流定义会导致冲突,按以下步骤操作:- 先关闭Publisher和Analytics节点
- 删除两个节点的
<APIM_HOME>/repository/tmp和<APIM_HOME>/repository/work目录 - 重新启动两个节点,让配置和事件流定义重新加载
如果以上步骤都没解决问题,可以开启Data Bridge的DEBUG日志来定位更细节的错误:修改Analytics节点的<APIM_ANALYTICS_HOME>/repository/conf/log4j.properties,添加一行:
log4j.logger.org.wso2.carbon.databridge=DEBUG
重启节点后查看日志,里面会显示具体的事件内容,能帮你精准定位格式不匹配的地方。
内容的提问来源于stack exchange,提问作者ChelloFera
相关产品推荐
相关产品推荐

