Kibana:REST API
Posted Elastic 中国社区官方博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kibana:REST API相关的知识,希望对你有一定的参考价值。
在我之前的很多文章是基于 Elasticsearch 或者 Enterprise server。我们较少涉及到 Kibana REST API。实际上,Kibana 自己也是一个 Node.js 服务器。它也有自己的 REST APIs。在今天的文章中,我们开始对 Kibana 的 REST API 来做一些介绍。
一些 Kibana 功能是通过 REST API 提供的,这非常适合创建与 Kibana 的集成,或自动化配置和部署 Kibana 的某些方面。
使用 REST API
在任何 Kibana API 端点前添加 kbn: 并通过 Dev Tools > Console 发送请求。 例如:
GET kbn:/api/index_management/indices
从上面的输出中,我们可以看到在 Elasticsearch 中已经被创建的索引。很多人可能还不知道该如何通过应用或者命令行得到这个命令的格式。我们可以通过如下的方式来获取:
我们如果在自己的编辑其中粘贴,我们就可以得到如下的格式:
curl -XGET "http://localhost:5601/api/index_management/indices" -H "kbn-xsrf: reporting"
注意:如果从非默认 Kibana 空间运行,这将自动在 API 请求上添加前缀 s/space_id/ 。
从上面的粘贴的内容中我们可以看出来它的端点为 http://localhost:5601 而不是 Elasticsearch 的端点 https://localhost:9200。如果我直接运行上面的命令:
$ curl -XGET "http://localhost:5601/api/index_management/indices" -H "kbn-xsrf: reporting"
"statusCode":401,"error":"Unauthorized","message":"Unauthorized"
从上面的输出中,我们可以看出来没有相应的许可是不可以的。我们需要提供凭证才可以进行访问。我们尝试使用超级用 elastic 的账号来进行访问:
curl -XGET -u elastic:RtSwG_3urYy+Bq+=TFfR "http://localhost:5601/api/index_management/indices" | jq
从上面的输出中,我们可以看出来它的访问是成功的。
验证
Kibana API 支持基于密钥和 token 的身份验证。在上面,我们已经展示了基于 token 的验证。它是使用用户名及密码的验证,
基于 token 的验证
要使用基于 token 的身份验证,你需要使用与登录 Elastic 相同的用户名和密码。 在给定的 HTTP 工具中,如果可用,你可以选择使用其 Basic Authentication 验证选项,这是存储用户名和密码的地方,以便作为调用的一部分传递。
基于密钥的身份验证
要使用基于密钥的身份验证,你可以使用 Elastic 控制台创建一个 API 密钥,然后在 API 调用的标头中指定该密钥。有关 API 密钥的信息,请参阅 API 密钥。
创建后,我们可以复制 API 密钥(Base64 编码)并使用它代表你向 Elasticsearch 发送请求。 例如:
curl --location --request GET 'http://localhost:5601/api/index_management/indices' \\
--header 'Content-Type: application/json;charset=UTF-8' \\
--header 'kbn-xsrf: true' \\
--header 'Authorization: ApiKey X3pDUmxZVUJpMnFLTWdZZEc3VnA6ZjRJTUpaU0RTVDZWUl9zTldLVTFKQQ==' | jq
重要:API 密钥用于以编程方式访问 Kibana 和 Elasticsearch。 不要使用 API 密钥来验证通过网络浏览器的访问。
API 调用
API 调用是无状态的。 你发出的每个请求都与其他调用隔离开来,并且必须包含 Kibana 完成请求所需的所有信息。 API 请求返回 JSON 输出,这是一种机器可读的格式,非常适合自动化。
调用 API 端点需要不同的操作。 要与 Kibana API 交互,请使用以下操作:
- GET - 获取信息。
- POST - 添加新信息。
- PUT - 更新现有信息。
- DELETE - 删除信息。
请求 headers
对于所有 API,你必须使用请求 headers。 Kibana API 支持 kbn-xsrf 和 Content-Type 标头。
kbn-xsrf: true
默认情况下,你必须对所有 API 调用使用 kbn-xsrf,但以下情况除外:
- API 端点使用 GET 或 HEAD 操作
- 使用 server.xsrf.allowlist 设置允许该路径
- 使用 server.xsrf.disableProtection 设置禁用 XSRF 保护
content-type: application/json
仅当你在 API 请求中发送负载时适用。 Kibana API 请求和响应使用 JSON。 通常,如果包含 kbn-xsrf header,则还必须包含 Content-Type header。
请求头示例:
curl -X POST \\
http://localhost:5601/api/spaces/space \\
-H 'Content-Type: application/json' \\
-H 'kbn-xsrf: true' \\
-d '
"id": "sales",
"name": "Sales",
"description": "This is your Sales Space!",
"disabledFeatures": []
'
在以后的文章中,我将详细介绍更多的有关 Kibana REST API 的使用。
以上是关于Kibana:REST API的主要内容,如果未能解决你的问题,请参考以下文章
Angular cors 从 django rest 框架后端获取数据并获得许可
Elasticsearch 和 Kibana 变更开源许可协议
Artifactory Create Repository Rest API不起作用