Agent 配置 API
编辑

APM Agent 配置 API 允许您微调 APM Agent 配置,无需重新部署您的应用程序。

以下 APM Agent 配置 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 {credentials} 还是 -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 标头。
创建或更新配置
编辑
请求编辑

PUT /api/apm/settings/agent-configuration

请求体编辑
service

(必需,对象) 用于标识要创建或更新的配置的服务。

service 的属性
name
(必需,字符串) 服务名称
environment
(可选,字符串) 服务环境
settings
(必需) 包含选项名称和选项值的键/值对象。
agent_name
(可选) Agent 名称用于 UI 确定要显示哪些设置。
示例编辑
PUT /api/apm/settings/agent-configuration
{
    "service": {
        "name": "frontend",
        "environment": "production"
    },
    "settings": {
        "transaction_sample_rate": "0.4",
        "capture_body": "off",
        "transaction_max_spans": "500"
    },
    "agent_name": "nodejs"
}
删除配置
编辑
请求编辑

DELETE /api/apm/settings/agent-configuration

请求体编辑
service

(必需,对象) 用于标识要删除的配置的服务

service 的属性
name
(必需,字符串) 服务名称
environment
(可选,字符串) 服务环境
示例编辑
DELETE /api/apm/settings/agent-configuration
{
    "service" : {
        "name": "frontend",
        "environment": "production"
    }
}
列出配置
编辑
请求编辑

GET /api/apm/settings/agent-configuration

响应体编辑
[
  {
    "agent_name": "go",
    "service": {
      "name": "opbeans-go",
      "environment": "production"
    },
    "settings": {
      "transaction_sample_rate": "1",
      "capture_body": "off",
      "transaction_max_spans": "200"
    },
    "@timestamp": 1581934104843,
    "applied_by_agent": false,
    "etag": "1e58c178efeebae15c25c539da740d21dee422fc"
  },
  {
    "agent_name": "go",
    "service": {
      "name": "opbeans-go"
    },
    "settings": {
      "transaction_sample_rate": "1",
      "capture_body": "off",
      "transaction_max_spans": "300"
    },
    "@timestamp": 1581934111727,
    "applied_by_agent": false,
    "etag": "3eed916d3db434d9fb7f039daa681c7a04539a64"
  },
  {
    "agent_name": "nodejs",
    "service": {
      "name": "frontend"
    },
    "settings": {
      "transaction_sample_rate": "1",
    },
    "@timestamp": 1582031336265,
    "applied_by_agent": false,
    "etag": "5080ed25785b7b19f32713681e79f46996801a5b"
  }
]
示例编辑
GET  /api/apm/settings/agent-configuration
搜索配置
编辑
请求编辑

POST /api/apm/settings/agent-configuration/search

请求体编辑
service

(必需,对象) 用于标识配置的服务。

service 的属性
name
(必需,字符串) 服务名称
environment
(可选,字符串) 服务环境
etag
(必需) etag 由 APM Agent 发送,用于指示最后成功应用的配置的 etag。如果 etag 与现有配置匹配,则其 applied_by_agent 属性将设置为 true。每次编辑配置时,applied_by_agent 将重置为 false
响应体编辑
{
  "_index": ".apm-agent-configuration",
  "_id": "CIaqXXABmQCdPphWj8EJ",
  "_score": 2,
  "_source": {
    "agent_name": "nodejs",
    "service": {
      "name": "frontend"
    },
    "settings": {
      "transaction_sample_rate": "1",
    },
    "@timestamp": 1582031336265,
    "applied_by_agent": false,
    "etag": "5080ed25785b7b19f32713681e79f46996801a5b"
  }
}
示例编辑
POST /api/apm/settings/agent-configuration/search
{
    "etag": "1e58c178efeebae15c25c539da740d21dee422fc",
    "service" : {
        "name": "frontend",
        "environment": "production"
    }
}