代理配置 API
编辑

APM 代理配置 API 允许您微调 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 {credentials}

Kibana 支持使用 Elasticsearch API 密钥服务进行基于令牌的身份验证。 Elasticsearch 创建 API 密钥 API 返回的 API 密钥可以通过发送一个带有 Authorization 标头的请求来使用,该标头的值为 ApiKey,后跟 {credentials},其中 {credentials}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
(可选) 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 代理发送,以指示上次成功应用的配置的 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"
    }
}