APM 代理密钥 API
编辑

APM 代理密钥 API 允许您配置 APM 代理密钥,以授权来自 APM 代理对 APM 服务器的请求。

以下 APM 代理密钥 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 标头。
创建代理密钥
编辑

创建 APM 代理 API 密钥。在创建时,于请求正文中指定 API 密钥权限。

权限编辑

创建 APM 代理 API 密钥的用户必须至少具有 manage_own_api_key 集群权限以及它希望授予的 APM 应用程序级权限。

示例角色编辑

下面的示例使用 Kibana 角色管理 API 创建一个名为 apm_agent_key_user 的角色。创建并将此角色分配给希望创建 APM 代理 API 密钥的用户。

POST /_security/role/apm_agent_key_user
{
  "cluster": ["manage_own_api_key"],
  "applications": [
    {
      "application": "kibana-.kibana",
      "privileges": ["feature_apm.all"],
      "resources": ["*"]
    },
    {
      "application": "apm",
      "privileges": ["event:write", "config_agent:read"],
      "resources": ["*"]
    }
  ]
}
请求编辑

POST /api/apm/agent_keys

请求正文编辑
name
(必需,字符串)APM 代理密钥的名称。
privileges

(必需,数组)APM 代理密钥权限。它可以采用以下一个或多个值

  • event:write。用于摄取 APM 代理事件所必需。
  • config_agent:read。供 APM 代理远程读取代理配置所必需。
示例编辑
POST /api/apm/agent_keys
{
    "name": "apm-key",
    "privileges": ["event:write", "config_agent:read"]
}
响应正文编辑
{
  "agentKey": {
    "id": "3DCLmn0B3ZMhLUa7WBG9",
    "name": "apm-key",
    "api_key": "PjGloCGOTzaZr8ilUPvkjA",
    "encoded": "M0RDTG1uMEIzWk1oTFVhN1dCRzk6UGpHbG9DR09UemFacjhpbFVQdmtqQQ=="
  }
}

创建后,您可以复制 API 密钥(Base64 编码)并使用它来授权来自 APM 代理对 APM 服务器的请求。