RUM 源码映射 API
编辑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,您必须使用请求标头。支持的标头是 Authorization
、kbn-xsrf
和 Content-Type
。
-
Authorization: ApiKey {credentials}
-
Kibana 支持使用 Elasticsearch API 密钥服务进行基于令牌的身份验证。通过 Elasticsearch 创建 API 密钥 API 返回的 API 密钥可以通过发送带有
Authorization
标头的请求来使用,该标头的值为ApiKey
后跟{credentials}
,其中{credentials}
是id
和api_key
通过冒号连接的 base64 编码。或者,您可以创建一个用户并使用他们的用户名和密码来验证 API 访问:
-u $USER:$PASSWORD
。无论使用
Authorization: ApiKey {credentials}
还是-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
标头。
创建或更新源码映射编辑
为特定服务和版本创建或更新源码映射。
请求编辑
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 工件数组,包括源码映射上传。
请求编辑
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" } ] }
删除源码映射编辑
删除以前上传的源码映射。
请求编辑
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}'
响应正文编辑
{}