通过 REST API 管理 Kibana 保存的对象(仪表板、Lens 可视化等)。适用于:① 以编程方式创建、更新、删除仪表板和 Lens 可视化。
Kibana 保存对象 API 技能是一项面向实际任务的技能,主要用于管理对象 包括仪表板、 连线可视化等 Kibana 实体, 可通过 REST API.;Base URL.;
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
通过 REST API 管理 Kibana Saved Objects,包括仪表板(dashboard)、Lens 可视化及其他 Kibana 实体。
http:///api/saved_objects
Omni-Monitor 示例:http://192.168.99.43/api/saved_objects
必需请求头:kbn-xsrf: true
POST /api/saved_objects/
请求体:
{
"attributes": {
"title": "我的仪表板",
"description": "..."
},
"id": "可选的自定义 ID",
"references": [{"id": "...", "name": "...", "type": "index-pattern"}]
}
GET /api/saved_objects//
PUT /api/saved_objects//
请求体:
{
"attributes": {
"title": "已更新的标题"
},
"references": [...]
}
DELETE /api/saved_objects//
POST /api/saved_objects/_bulk_get
请求体:
{
"objects": [
{"type": "dashboard", "id": "abc123"},
{"type": "lens", "id": "def456"}
]
}
POST /api/saved_objects/_bulk_create
请求体:
{
"objects": [
{"type": "dashboard", "id": "...", "attributes": {...}},
{"type": "lens", "id": "...", "attributes": {...}}
]
}
POST /api/saved_objects/_export
请求体:
{
"objects": [
{"type": "dashboard", "id": "abc123"},
{"type": "lens", "id": "def456"}
]
}
返回值: Saved Objects 的 NDJSON 流
POST /api/saved_objects/_import?overwrite=true
Content-Type:multipart/form-data
表单字段:file = NDJSON 文件
POST /api/saved_objects/_find
请求体:
{
"type": "dashboard",
"search": "标题关键词",
"searchFields": ["title", "description"],
"page": 1,
"perPage": 20
}
| 类型 | 说明 |
|---|---|
dashboard |
Kibana 仪表板 |
lens |
Lens 可视化 |
visualization |
传统可视化(如 TSVB 等) |
index-pattern |
数据视图(index patterns) |
search |
已保存的搜索 |
map |
地图可视化 |
tag |
用于组织的标签 |
canvas-workpad |
Canvas 工作区 |
引用(References)用于关联不同对象。例如,一个仪表板面板(Lens)会引用:
index-pattern(即数据视图)引用格式示例:
{
"id": "b58d25c5-c05c-47be-a6cb-4073ef478a8f",
"name": "indexpattern-datasource-layer-aca264a7-bf68-47b3-af63-db1e67fe0646",
"type": "index-pattern"
}
带引用创建对象示例:
{
"type": "lens",
"attributes": {
"title": "CPU 使用率",
"state": {
"datasourceStates": {...},
"visualization": {...}
}
},
"references": [
{"id": "b58d25c5-c05c-47be-a6cb-4073ef478a8f", "name": "indexpattern-datasource-layer-xxx", "type": "index-pattern"}
]
}
仪表板 attributes 字段示例:
{
"title": "仪表板名称",
"description": "可选描述",
"panelsJSON": "[{"type":"lens","gridData":{...},"embeddableConfig":{...}}]",
"optionsJSON": "{"useMargins":true,"syncColors":false,"hidePanelTitles":false}",
"timeRestore": true,
"timeTo": "now",
"timeFrom": "now-24h",
"refreshInterval": {
"pause": false,
"value": 300000
}
}
Lens 是 Kibana 的新一代可视化工具。其关键结构如下:
{
"type": "lens",
"attributes": {
"title": "指标标题",
"state": {
"datasourceStates": {
"formBased": {
"layers": {
"": {
"columns": {
"": {
"label": "指标标签",
"dataType": "number",
"operationType": "count|average|sum|max|min",
"sourceField": "field.name",
"isBucketed": false,
"scale": "ratio"
}
},
"columnOrder": [""],
"incompleteColumns": {}
}
}
}
},
"visualization": {
"layerId": "",
"layerType": "data",
"metricAccessor": ""
}
}
},
"references": [
{"id": "", "name": "indexpattern-datasource-layer-", "type": "index-pattern"}
]
}
lnsMetric(单指标)结构:
{
"layerId": "...",
"layerType": "data",
"metricAccessor": ""
}
lnsXY(折线图/柱状图/面积图)结构:
{
"layerId": "...",
"layerType": "data",
"layers": [{
"layerId": "...",
"accessors": [""],
"position": "top",
"seriesType": "bar|line|area",
"showGridlines": false,
"xAccessor": ""
}]
}
__records___ 用作 sourceField → 否则将导致 “Field not found” 错误.keyword 后缀(例如:host.keyword)indexpattern-datasource-layer-导出结果示例:
{"attributes":{"title":"Dash 1"...},"id":"abc","type":"dashboard","references":[...]}
{"attributes":{"title":"Lens 1"...},"id":"def","type":"lens","references":[...]}
导入要求:使用相同格式;添加参数 overwrite=true 将覆盖已有对象。
| 脚本 | 用途 |
|---|---|
list_dashboards.py |
列出所有仪表板 |
export_dashboard.py |
导出指定仪表板及其依赖项 |
import_ndjson.py |
将 NDJSON 文件导入 Kibana |
create_lens_metric.py |
创建一个简单的 metric 类型 Lens 可视化 |
原因:仪表板或 Lens 引用了不存在的数据视图(data view)。
解决方法:
GET /api/data_views原因:对文本字段执行聚合操作时未使用 .keyword 后缀。
解决方法:应使用 host.keyword 而非 host,使用 metric_type.keyword 而非 metric_type
解决方法:
DELETE /api/saved_objects//