WSO2 APIM 4.2无安全API无法生成ELK分析指标问题求助
问题修复与匿名请求追踪方案(WSO2 APIM 4.2)
一、ELK指标发布失败的修复方案
报错核心原因是匿名访问时无userName字段,ELK指标事件构建器的非空验证阻止了日志发布,以下是两种解决方式:
1. 允许空userName直接发布
修改<APIM_HOME>/repository/conf/deployment.toml,添加配置跳过userName非空校验:
[apim.analytics.publisher.elk] allow_empty_username = true
配置生效后,匿名请求的指标数据会正常发布到ELK,同时生成apim_metrics.log日志。
2. 为匿名请求设置默认用户名
如果不想关闭校验,可通过自定义中介给匿名请求注入默认用户名:
在API的入流序列中添加以下中介代码:
<property name="api.ut.userName" value="anonymous" scope="default" type="STRING"/>
该属性会被指标收集器识别为userName字段,解决缺失问题。
二、匿名访问请求的其他追踪方式
除修复ELK指标发布外,还可通过以下方式直接追踪匿名请求:
1. 启用网关访问日志
修改<APIM_HOME>/repository/conf/log4j2.properties,开启HTTP访问日志:
logger.http-access-log.name = org.apache.synapse.transport.http.access.HttpAccessLog logger.http-access-log.level = INFO logger.http-access-log.additivity = false logger.http-access-log.appenderRef.CARBON_CONSOLE.ref = CARBON_CONSOLE logger.http-access-log.appenderRef.CARBON_LOGFILE.ref = CARBON_LOGFILE
访问日志会记录所有请求的客户端IP、请求路径、响应状态等信息,默认输出到carbon.log中。
2. 添加自定义日志中介
在API的入流/出流序列中插入日志中介,记录匿名请求的关键信息:
<log level="full"> <property name="request_type" value="anonymous_access"/> <property name="client_ip" expression="get-property('axis2','REMOTE_ADDR')"/> <property name="api_path" expression="get-property('api.ut.apiPath')"/> </log>
此配置会在carbon.log中生成带自定义标记的日志,便于快速筛选匿名请求。
内容的提问来源于stack exchange,提问作者Arviena J
相关产品推荐
相关产品推荐

