如何通过REST API获取已导入Kibana的可视化共享URL?
完整REST流程:创建可视化并获取可嵌入的共享URL
当然可以实现!下面是一套无需依赖Kibana UI的完整REST流程,从创建可视化到生成可嵌入的iframe链接都涵盖在内:
1. (可选,若未创建)通过Kibana Saved Objects API创建可视化
如果你之前是直接写入.kibana索引,更推荐用官方的Saved Objects API来创建,避免元数据缺失:
PUT http://<你的Kibana地址>:<端口>/api/saved_objects/visualization/<自定义可视化ID> # 若使用自定义空间,URL改为:/s/<空间ID>/api/saved_objects/visualization/<自定义可视化ID> 请求头: Content-Type: application/json Authorization: Basic <base64编码的用户名:密码> # 若开启安全认证 请求体(替换成你的可视化JSON结构): { "attributes": { "title": "我的自定义图表", "visState": "{你的可视化配置JSON字符串}", "uiStateJSON": "{}", "description": "", "savedSearchId": "", "version": 1 }, "type": "visualization", "references": [] }
返回的响应里会包含可视化的ID、空间等关键信息,记下来备用。
2. 获取可视化的核心信息(验证创建结果)
如果已经创建完成,先通过API确认可视化的ID和所在空间:
GET http://<你的Kibana地址>:<端口>/api/saved_objects/visualization/<可视化ID> # 自定义空间下:/s/<空间ID>/api/saved_objects/visualization/<可视化ID> 请求头: Authorization: Basic <认证信息> # 按需添加
响应里的id字段就是可视化ID,namespace字段对应空间ID(默认空间为空字符串)。
3. 构造基础可嵌入iframe链接
如果你的Kibana是公开可访问的,直接构造嵌入链接即可:
- 默认空间的嵌入链接:
http://<你的Kibana地址>:<端口>/app/kibana#/visualize/<可视化ID>?embed=true&_g=(time:(from:now-15m,to:now)) - 自定义空间的嵌入链接:
把这个链接放到iframe标签里就能直接嵌入:http://<你的Kibana地址>:<端口>/s/<空间ID>/app/kibana#/visualize/<可视化ID>?embed=true&_g=(time:(from:now-15m,to:now))
注:<iframe src="上述链接" width="100%" height="600" frameborder="0"></iframe>_g参数是时间范围,你可以根据需求修改,比如from:now-7d,to:now,不需要的话可以直接去掉。
4. 生成带权限的共享链接(适合需认证的Kibana)
如果你的Kibana开启了安全验证,直接嵌入会要求登录,这时可以用Kibana的短链接API生成带权限的共享链接:
POST http://<你的Kibana地址>:<端口>/api/short_url/create # 自定义空间下:/s/<空间ID>/api/short_url/create 请求头: Content-Type: application/json Authorization: Basic <认证信息> 请求体: { "url": "/app/kibana#/visualize/<可视化ID>?embed=true&_g=(time:(from:now-15m,to:now))", "expires_in": "30d" # 可选,设置链接有效期,比如30天,不填则长期有效(受Kibana配置限制) }
响应里的url字段就是生成的共享短链接,这个链接自带权限凭证,无需登录即可访问嵌入的可视化。
关键注意事项
- 如果你之前是直接写入
.kibana索引,要确保文档的_id格式为visualization:<可视化ID>,并且包含type: "visualization"的字段,否则Kibana可能无法识别。 - 所有API请求都需要根据Kibana的安全配置添加对应的认证信息,比如API密钥、Basic认证等。
- 时间范围参数
_g可以根据业务需求自定义,甚至完全移除,让可视化使用默认的时间过滤器。
内容的提问来源于stack exchange,提问作者Akshay Singhvi
相关产品推荐
相关产品推荐

