详细分析 ▾
运行时依赖
版本
首次发布:支持托管认证的 Kibana API 技能,提供广泛的保存对象管理功能。 - 通过 Maton 网关安全托管访问 Kibana API。 - 支持保存对象、仪表盘、数据视图、空间、告警、连接器和 Fleet 的操作。 - 提供 Python 快速示例代码与环境配置说明。 - 详述列出、创建、更新和删除 Kibana 资源的方法。 - 指导通过 Maton 控制门户管理连接。
安装命令
点击复制技能文档
通过托管 API 认证访问 Kibana 的 saved objects、仪表板、数据视图、空间、告警和 Fleet。
快速开始
``bash
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/kibana/api/saved_objects/_find?type=dashboard')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('kbn-xsrf', 'true')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
` 基础 URL
`
https://gateway.maton.ai/kibana/{native-api-path}
`
网关将请求代理到您的 Kibana 实例并自动注入认证信息。 认证
所有请求均需提供 Maton API key 和 kbn-xsrf 请求头:
`
Authorization: Bearer $MATON_API_KEY
kbn-xsrf: true
`
环境变量: 将 API key 设为 MATON_API_KEY:
`bash
export MATON_API_KEY="YOUR_API_KEY"
` 获取 API Key
- 在 maton.ai 登录或注册账号
- 前往 maton.ai/settings
- 复制您的 API key
连接管理
在 https://ctrl.maton.ai 管理您的 Kibana 连接。 列出连接
`bash
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=kibana&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
` 创建连接
`bash
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'kibana'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
`
在浏览器中打开返回的 url 完成认证,您需要提供 Kibana API key。 删除连接
`bash
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
` ---
API 参考
重要: 所有 Kibana API 请求必须携带 kbn-xsrf: true 请求头。 状态与功能
获取状态
`bash
GET /kibana/api/status
`
响应:
`json
{
"name": "kibana",
"uuid": "abc123",
"version": {
"number": "8.15.0",
"build_hash": "..."
},
"status": {
"overall": {"level": "available"}
}
}
` 列出功能
`bash
GET /kibana/api/features
`
返回所有 Kibana 功能及其能力列表。 ---
Saved Objects
查找 Saved Objects
`bash
GET /kibana/api/saved_objects/_find?type={type}
`
查询参数:
type- 对象类型:dashboard、visualization、index-pattern、search、lens、mapsearch- 搜索查询page- 页码per_page- 每页结果数(默认 20,最大 10000)fields- 返回字段
响应:
`json
{
"page": 1,
"per_page": 20,
"total": 5,
"saved_objects": [
{
"id": "abc123",
"type": "dashboard",
"attributes": {
"title": "My Dashboard",
"description": "Dashboard description"
},
"version": "1",
"updated_at": "2024-01-01T00:00:00.000Z"
}
]
}
`
获取 Saved Object
`bash
GET /kibana/api/saved_objects/{type}/{id}
` 创建 Saved Object
`bash
POST /kibana/api/saved_objects/{type}/{id}
Content-Type: application/json
{
"attributes": {
"title": "My Index Pattern",
"timeFieldName": "@timestamp"
}
}
` 更新 Saved Object
`bash
PUT /kibana/api/saved_objects/{type}/{id}
Content-Type: application/json
{
"attributes": {
"title": "Updated Title"
}
}
` 删除 Saved Object
`bash
DELETE /kibana/api/saved_objects/{type}/{id}
` 批量操作
`bash
POST /kibana/api/saved_objects/_bulk_get
Content-Type: application/json
[
{"type": "dashboard", "id": "abc123"},
{"type": "visualization", "id": "def456"}
]
` ---
Data Views
列出 Data Views
`bash
GET /kibana/api/data_views
`
响应:
`json
{
"data_view": [
{
"id": "abc123",
"title": "logs-",
"timeFieldName": "@timestamp"
}
]
}
` 获取 Data View
`bash
GET /kibana/api/data_views/data_view/{id}
` 创建 Data View
`bash
POST /kibana/api/data_views/data_view
Content-Type: application/json
{
"data_view": {
"title": "logs-",
"timeFieldName": "@timestamp"
}
}
`
响应:
`json
{
"data_view": {
"id": "abc123",
"title": "logs-",
"timeFieldName": "@timestamp"
}
}
` 更新 Data View
`bash
POST /kibana/api/data_views/data_view/{id}
Content-Type: application/json
{
"data_view": {
"title": "updated-logs-"
}
}
` 删除 Data View
`bash
DELETE /kibana/api/data_views/data_view/{id}
` ---
Spaces
列出 Spaces
`bash
GET /kibana/api/spaces/space
`
响应:
`json
[
{
"id": "default",
"name": "Default",
"description": "Default space",
"disabledFeatures": []
}
]
` 获取 Space
`bash
GET /kibana/api/spaces/space/{id}
` 创建 Space
`bash
POST /kibana/api/spaces/space
Content-Type: application/json
{
"id": "marketing",
"name": "Marketing",
"description": "Marketing team space",
"disabledFeatures": []
}
` 更新 Space
`bash
PUT /kibana/api/spaces/space/{id}
Content-Type: application/json
{
"id": "marketing",
"name": "Marketing Team",
"description": "Updated description"
}
` 删除 Space
`bash
DELETE /kibana/api/spaces/space/{id}
` ---
Alerting
查找告警规则
`bash
GET /kibana/api/alerting/rules/_find
`
查询参数:
search- 搜索查询page- 页码per_page- 每页结果数
响应:
`json
{
"page": 1,
"per_page": 10,
"total": 5,
"data": [
{
"id": "abc123",
"name": "CPU Alert",
"consumer": "alerts",
"enabled": true,
"rule_type_id": "metrics.alert.threshold"
}
]
}
`
获取告警规则
`bash
GET /kibana/api/alerting/rule/{id}
` 启用/禁用规则
`bash
POST /kibana/api/alerting/rule/{id}/_enable
POST /kibana/api/alerting/rule/{id}/_disable
` 静音/取消静音规则
`bash
POST /kibana/api/alerting/rule/{id}/_mute_all
POST /kibana/api/alerting/rule/{id}/_unmute_all
` 获取告警健康状态
`bash
GET /kibana/api/alerting/_health
` ---
Connectors (Actions)
列出 Connectors
`bash
GET /kibana/api/actions/connectors
`
响应:
`json
[
{
"id": "abc123",
"name": "Email Connector",
"connector_type_id": ".email",
"is_preconfigured": false,
"is_deprecated": false
}
]
` 获取 Connector
`bash
GET /kibana/api/actions/connector/{id}
` 列出 Connector 类型
`bash
GET /kibana/api/actions/connector_types
` 执行 Connector
`bash
POST /kibana/api/actions/connector/{id}/_execute
Content-Type: application/json
{
"params": {
"to": ["user@example.com"],
"subject": "Alert",
"message": "Alert triggered"
}
}
` ---
Fleet
列出 Agent 策略
`bash
GET /kibana/api/fleet/agent_policies
`
响应:
`json
{
"items": [
{
"id": "abc123",
"name": "Default policy",
"namespace": "default",
"status": "active"
}
],
"total": 1,
"page": 1,
"perPage": 20
}
` 列出 Agents
`bash
GET /kibana/api/fleet/agents
` 列出 Packages
`bash
GET /kibana/api/fleet/epm/packages
`
返回所有可用的集成/包。 ---
Security
列出角色
`bash
GET /kibana/api/security/role
`
响应:
`json
[
{
"name": "admin",
"metadata": {},
"elasticsearch": {
"cluster": ["all"],
"indices": [...]
},
"kibana": [...]
}
]
` 获取角色
`bash
GET /kibana/api/security/role/{name}
` ---
Cases
查找 Cases
`bash
GET /kibana/api/cases/_find
`
查询参数:
status-open、in-progress、closedseverity-low、medium、high、criticalpage- 页码perPage- 每页结果数
响应:
`json
{
"cases": [],
"page": 1,
"per_page": 20,
"total": 0
}
`
---
代码示例
JavaScript
`javascript
const response = await fetch('https://gateway.maton.ai/kibana/api/saved_objects/_find?type=dashboard', {
headers: {
'Authorization': Bearer ${process.env.MATON_API_KEY},
'kbn-xsrf': 'true'
}
});
const dashboards = await response.json();
console.log(dashboards);
` Python
`python
import os
import requests response = requests.get(
'https://gateway.maton.ai/kibana/api/saved_objects/_find?type=dashboard',
headers={
'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}',
'kbn-xsrf': 'true'
}
)
print(response.json())
`
---
注意事项
所有请求必须携带kbn-xsrf: true请求头saved object 类型:dashboard、visualization、index-pattern、search、lens、map`- data views 是 index patterns 的现代替代品
- spaces 提供多租户支持
- Fleet 管理 Elastic Agent 和集成
- 某些操作需要特定 Kibana 权限
错误处理
| 状态码 | 含义 | |--------|------| | 200 | 成功 | | 204 | 无内容(删除成功) | | 400 | 无效请求 | | 401 | 认证无效或缺失 | | 403 | 权限不足 | | 404 | 资源未找到 | | 409 | 冲突(如对象已存在) |