RUM 源代码映射 API
编辑RUM 源代码映射 API
编辑此端点仅与 Elastic Agent 的 APM 集成兼容。
源代码映射允许将缩小后的文件映射回原始源代码 — 使您能够保持缩小代码的速度优势,而不会失去快速轻松调试应用程序的能力。
为了获得最佳结果,上传源代码映射应成为您的部署过程的一部分,而不是仅在看到无用的错误时才执行的操作。这是因为在错误发生后上传源代码映射不会使旧错误神奇地变得可读 — 必须再次发生错误才能进行源代码映射。
以下 API 可用
Kibana 的最大有效负载大小为 1mb。如果您尝试上传超出最大有效负载大小的源代码映射,您将收到 413
错误。
在上传超出此默认值的源代码映射之前,请使用 server.maxPayload
变量更改 Kibana 允许的最大有效负载大小。
展开以了解所需的标头、权限和使用详细信息
使用 cURL 或其他 API 工具与 APM API 交互。所有 APM API 都是 Kibana API,而不是 Elasticsearch API;因此,Kibana 开发工具控制台不能用于与 APM API 交互。
对于所有 APM API,您必须使用请求标头。支持的标头为 Authorization
、kbn-xsrf
和 Content-Type
。
-
Authorization: ApiKey {凭据}
-
Kibana 支持使用 Elasticsearch API 密钥服务进行基于令牌的身份验证。通过发送具有
Authorization
标头的请求,可以使用 Elasticsearch 创建 API 密钥 API 返回的 API 密钥,该标头的值为ApiKey
,后跟{凭据}
,其中{凭据}
是id
和api_key
以冒号连接的 base64 编码。或者,您可以创建一个用户并使用其用户名和密码来验证 API 访问权限:
-u $USER:$PASSWORD
。无论是使用
Authorization: ApiKey {凭据}
,还是-u $USER:$PASSWORD
,与 APM API 交互的用户都必须具有足够的权限。 -
kbn-xsrf: true
-
默认情况下,您必须对所有 API 调用使用
kbn-xsrf
,以下情况除外- API 端点使用
GET
或HEAD
操作 - 使用
server.xsrf.allowlist
设置允许该路径 - 使用
server.xsrf.disableProtection
设置禁用 XSRF 保护
- API 端点使用
-
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\":\"\"}"'
{ "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 和用户体验功能的 Read
或 All
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}'
{}