WSO2 API Manager中Kibana仪表盘提示No matching indices found的解决方法
解决WSO2 API Manager集成Elasticsearch后Kibana「No matching indices found」错误
以下是针对性的排查和解决步骤:
1. 确认Elasticsearch中存在WSO2日志索引
- 执行命令查询ES索引列表(替换为你的ES地址、认证账号):
curl -u <es-username>:<es-password> https://<elasticsearch-host>:<port>/_cat/indices?v - 若列表中无
wso2-apim-*或对应业务日志的索引,说明WSO2未成功推送日志到ES:- 检查
log4j2.xml中Elasticsearch Appender的url、username、password参数是否正确 - 确认目标日志(API访问日志、错误日志等)的级别配置已关联到ES Appender
- 检查
2. 验证Kibana索引模式配置
- 进入Kibana「Stack Management」→「Index Patterns」:
- 检查已创建的索引模式是否与ES实际索引名称匹配(如ES索引为
wso2-apim-2024.05.20,索引模式需设为wso2-apim-*) - 若未创建对应索引模式,手动创建:输入匹配的索引通配符,选择正确的时间字段(如
@timestamp)完成配置
- 检查已创建的索引模式是否与ES实际索引名称匹配(如ES索引为
3. 排查WSO2到ES的数据同步故障
- 查看WSO2节点
carbon.log,搜索Elasticsearch相关日志,排查是否存在连接失败、认证错误或数据推送失败的报错(如Failed to publish events to Elasticsearch) - 确认
log4j2.xml中Elasticsearch Appender的index参数格式正确,例如wso2-apim-%d{yyyy.MM.dd}会按日期生成索引
4. 检查Elasticsearch权限配置
- 确保Kibana使用的账号拥有目标索引的读取权限:
- 在ES角色配置中,给Kibana用户添加针对
wso2-apim-*索引的indices:data/read/*权限 - 验证用户角色映射,确保账号权限覆盖目标索引
- 在ES角色配置中,给Kibana用户添加针对
5. 确认索引时间字段有效性
- Kibana依赖时间字段过滤数据,需确保:
- ES索引中存在
@timestamp字段且为date类型(可通过curl -u <user>:<pass> https://<es-host>:<port>/<index-name>/_mapping查看字段映射) - Kibana索引模式中选择的时间字段与ES中的字段一致
- ES索引中存在
内容的提问来源于stack exchange,提问作者nahid afzali
相关产品推荐
相关产品推荐

