注释 API
编辑

注释 API 允许您使用重要的事件(例如部署)来注释应用程序 UI 中的可视化效果,以便您可以轻松查看这些事件如何影响现有应用程序的性能。

默认情况下,注释存储在新建的 observability-annotations 索引中。可以通过编辑 config.yml 文件中的 xpack.observability.annotations.index 来更改此索引的名称。如果更改默认索引名称,则还需要相应地更新用户权限

提供以下 API:

如何使用 APM API编辑
展开以查看所需的标头、权限和使用详情

使用 cURL 或其他 API 工具与 APM API 交互。所有 APM API 都是 Kibana API,而不是 Elasticsearch API;因此,无法使用 Kibana 开发工具控制台与 APM API 交互。

对于所有 APM API,必须使用请求头。支持的标头包括 Authorizationkbn-xsrfContent-Type

Authorization: ApiKey {凭据}

Kibana 支持使用 Elasticsearch API 密钥服务进行基于令牌的身份验证。Elasticsearch 创建 API 密钥 API 返回的 API 密钥可通过发送带有 Authorization 标头的请求来使用,该标头的值为 ApiKey 后跟 {凭据},其中 {凭据}idapi_key 用冒号连接后的 base64 编码。

或者,您可以创建一个用户并使用其用户名和密码来验证 API 访问权限:-u $USER:$PASSWORD

无论使用 Authorization: ApiKey {凭据} 还是 -u $USER:$PASSWORD,与 APM API 交互的用户都必须具有足够的权限

kbn-xsrf: true

默认情况下,必须对所有 API 调用使用 kbn-xsrf,以下情况除外:

  • API 端点使用 GETHEAD 操作
  • 使用 server.xsrf.allowlist 设置允许该路径
  • 使用 server.xsrf.disableProtection 设置禁用 XSRF 保护
Content-Type: application/json
仅当您在 API 请求中发送有效负载时适用。Kibana API 请求和响应使用 JSON。通常,如果包含 kbn-xsrf 标头,则还必须包含 Content-Type 标头。
创建或更新注释
编辑
请求编辑

POST /api/apm/services/:serviceName/annotation

请求正文编辑
service

(必填,对象) 用于创建或更新配置的服务。

service 的属性
version
(必填,字符串) 服务版本。
environment
(可选,字符串) 服务环境。
@timestamp
(必填,字符串) 注释的日期和时间。必须采用ISO 8601 格式。
message
(可选,字符串) 在注释中显示的消息。默认为 service.version
tags
(可选,数组) 应用程序 UI 使用标签来区分 APM 注释和其他注释。标签在将来的版本中可能具有其他功能。默认为 [apm]。您可以添加其他标签,但不能删除 apm 标签。
示例编辑

以下示例为名为 opbeans-java 的服务创建一个注释。

curl -X POST \
  https://127.0.0.1:5601/api/apm/services/opbeans-java/annotation \
-H 'Content-Type: application/json' \
-H 'kbn-xsrf: true' \
-H 'Authorization: Basic YhUlubWZhM0FDbnlQeE6WRtaW49FQmSGZ4RUWXdX' \
-d '{
      "@timestamp": "2020-05-08T10:31:30.452Z",
      "service": {
        "version": "1.2"
      },
      "message": "Deployment 1.2"
    }'
响应正文编辑
{
  "_index": "observability-annotations",
  "_id": "Lc9I93EBh6DbmkeV7nFX",
  "_version": 1,
  "_seq_no": 12,
  "_primary_term": 1,
  "found": true,
  "_source": {
    "message": "Deployment 1.2",
    "@timestamp": "2020-05-08T10:31:30.452Z",
    "service": {
      "version": "1.2",
      "name": "opbeans-java"
    },
    "tags": [
      "apm",
      "elastic.co",
      "customer"
    ],
    "annotation": {
      "type": "deployment"
    },
    "event": {
      "created": "2020-05-09T02:34:43.937Z"
    }
  }
}