RUM 源代码映射 API
编辑

此端点仅与 Elastic Agent 的 APM 集成兼容。

源代码映射允许将缩小后的文件映射回原始源代码 — 使您能够保持缩小代码的速度优势,而不会失去快速轻松调试应用程序的能力。

为了获得最佳结果,上传源代码映射应成为您的部署过程的一部分,而不是仅在看到无用的错误时才执行的操作。这是因为在错误发生后上传源代码映射不会使旧错误神奇地变得可读 — 必须再次发生错误才能进行源代码映射。

以下 API 可用

最大有效负载大小编辑

Kibana 的最大有效负载大小为 1mb。如果您尝试上传超出最大有效负载大小的源代码映射,您将收到 413 错误。

在上传超出此默认值的源代码映射之前,请使用 server.maxPayload 变量更改 Kibana 允许的最大有效负载大小。

如何使用 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 密钥服务进行基于令牌的身份验证。通过发送具有 Authorization 标头的请求,可以使用 Elasticsearch 创建 API 密钥 API 返回的 API 密钥,该标头的值为 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 和用户体验功能的 All Kibana 权限。有关更多信息,请参阅 Kibana 权限

请求编辑

POST /api/apm/sourcemaps

请求主体编辑
service_name
(必需,字符串)服务映射应应用到的服务的名称。
service_version
(必需,字符串)服务映射应应用到的服务的版本。
bundle_filepath
(必需,字符串)Web 应用程序中使用的最终捆绑包的绝对路径。
sourcemap
(必需,字符串或文件上传)源代码映射。它必须遵循 源代码映射修订 3 提案
示例编辑

以下示例为名为 foo 的服务和 1.0.0 的服务版本上传源代码映射

curl -X POST "https://127.0.0.1:5601/api/apm/sourcemaps" \
-H 'Content-Type: multipart/form-data' \
-H 'kbn-xsrf: true' \
-H 'Authorization: ApiKey ${YOUR_API_KEY}' \
-F 'service_name="foo"' \
-F 'service_version="1.0.0"' \
-F 'bundle_filepath="/test/e2e/general-usecase/bundle.js"' \
-F 'sourcemap="{\"version\":3,\"file\":\"static/js/main.chunk.js\",\"sources\":[\"fleet-source-map-client/src/index.css\",\"fleet-source-map-client/src/App.js\",\"webpack:///./src/index.css?bb0a\",\"fleet-source-map-client/src/index.js\",\"fleet-source-map-client/src/reportWebVitals.js\"],\"sourcesContent\":[\"content\"],\"mappings\":\"mapping\",\"sourceRoot\":\"\"}"' 

或者,使用 -F 'sourcemap=@path/to/source_map/bundle.js.map' 将源代码映射作为文件上传

响应主体编辑
{
  "type": "sourcemap",
  "identifier": "foo-1.0.0",
  "relative_url": "/api/fleet/artifacts/foo-1.0.0/644fd5a997d1ddd90ee131ba18e2b3d03931d89dd1fe4599143c0b3264b3e456",
  "body": "eJyFkL1OwzAUhd/Fc+MbYMuCEBIbHRjKgBgc96R16tiWr1OQqr47NwqJxEK3q/PzWccXxchnZ7E1A1SjuhjVZtF2yOxiEPlO17oWox3D3uPFeSRTjmJQARfCPeiAgGx8NTKsYdAc1T3rwaSJGcds8Sp3c1HnhfywUZ3QhMTFFGepZxqMC9oex3CS9tpk1XyozgOlmoVKuJX1DqEQZ0su7PGtLU+V/3JPKc3cL7TJ2FNDRPov4bFta3MDM4f7W69lpJjLO9qdK8bzVPhcJz3HUCQ4LbO/p5hCSC4cZPByrp/wFqOklbpefwAhzpqI",
  "created": "2021-07-09T20:47:44.812Z",
  "id": "apm:foo-1.0.0-644fd5a997d1ddd90ee131ba18e2b3d03931d89dd1fe4599143c0b3264b3e456",
  "compressionAlgorithm": "zlib",
  "decodedSha256": "644fd5a997d1ddd90ee131ba18e2b3d03931d89dd1fe4599143c0b3264b3e456",
  "decodedSize": 441,
  "encodedSha256": "024c72749c3e3dd411b103f7040ae62633558608f480bce4b108cf5b2275bd24",
  "encodedSize": 237,
  "encryptionAlgorithm": "none",
  "packageName": "apm"
}
获取源代码映射
编辑

返回一个 Fleet 工件数组,包括源代码映射上传。

权限编辑

访问此端点的用户需要 APM 和用户体验功能的 ReadAll Kibana 权限。有关更多信息,请参阅 Kibana 权限

请求编辑

GET /api/apm/sourcemaps

示例编辑

以下示例请求所有上传的源代码映射

curl -X GET "https://127.0.0.1:5601/api/apm/sourcemaps" \
-H 'Content-Type: application/json' \
-H 'kbn-xsrf: true' \
-H 'Authorization: ApiKey ${YOUR_API_KEY}'
响应主体编辑
{
  "artifacts": [
    {
      "type": "sourcemap",
      "identifier": "foo-1.0.0",
      "relative_url": "/api/fleet/artifacts/foo-1.0.0/644fd5a997d1ddd90ee131ba18e2b3d03931d89dd1fe4599143c0b3264b3e456",
      "body": {
        "serviceName": "foo",
        "serviceVersion": "1.0.0",
        "bundleFilepath": "/test/e2e/general-usecase/bundle.js",
        "sourceMap": {
          "version": 3,
          "file": "static/js/main.chunk.js",
          "sources": [
            "fleet-source-map-client/src/index.css",
            "fleet-source-map-client/src/App.js",
            "webpack:///./src/index.css?bb0a",
            "fleet-source-map-client/src/index.js",
            "fleet-source-map-client/src/reportWebVitals.js"
          ],
          "sourcesContent": [
            "content"
          ],
          "mappings": "mapping",
          "sourceRoot": ""
        }
      },
      "created": "2021-07-09T20:47:44.812Z",
      "id": "apm:foo-1.0.0-644fd5a997d1ddd90ee131ba18e2b3d03931d89dd1fe4599143c0b3264b3e456",
      "compressionAlgorithm": "zlib",
      "decodedSha256": "644fd5a997d1ddd90ee131ba18e2b3d03931d89dd1fe4599143c0b3264b3e456",
      "decodedSize": 441,
      "encodedSha256": "024c72749c3e3dd411b103f7040ae62633558608f480bce4b108cf5b2275bd24",
      "encodedSize": 237,
      "encryptionAlgorithm": "none",
      "packageName": "apm"
    }
  ]
}
删除源代码映射
编辑

删除先前上传的源代码映射。

权限编辑

访问此端点的用户需要 APM 和用户体验功能的 All Kibana 权限。有关更多信息,请参阅 Kibana 权限

请求编辑

DELETE /api/apm/sourcemaps/:id

示例编辑

以下示例删除 id 为 apm:foo-1.0.0-644fd5a9 的源代码映射

curl -X DELETE "https://127.0.0.1:5601/api/apm/sourcemaps/apm:foo-1.0.0-644fd5a9" \
-H 'Content-Type: application/json' \
-H 'kbn-xsrf: true' \
-H 'Authorization: ApiKey ${YOUR_API_KEY}'
响应主体编辑
{}