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 {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,除了以下情况

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}'

响应正文编辑

{}