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 密钥服务进行基于令牌的身份验证。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标头。
创建或更新源映射
编辑

为特定服务和版本创建或更新源映射。

权限编辑

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

请求编辑

POST /api/apm/sourcemaps

请求正文编辑
service_name
(必需,字符串) 服务映射应应用到的服务的名称。
service_version
(必需,字符串) 服务映射应应用到的服务的版本。
bundle_filepath
(必需,字符串) Web 应用程序中使用的最终 bundle 的绝对路径。
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 和用户体验功能的读取所有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 和用户体验功能的所有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}'
响应正文编辑
{}