在无服务器框架中有条件地为 API 网关和 Lambda 启用 x-ray
Conditionally enable x-ray for API Gateway and Lambda in serverless framework
我只是在需要省钱时才尝试启用 X 射线。以下 serverless.yml
从 .env
文件加载环境变量。但是,serverless 似乎只允许 true
、Active
和 PassThrough
。任何可能的方法来绕过这个?谢谢。
# serverless.yml
provider:
name: aws
runtime: nodejs10.x
logs:
restApi: ${env:ENABLE_X_RAY, false}
tracing:
apiGateway: ${env:ENABLE_X_RAY, false}
lambda: ${env:ENABLE_X_RAY, false}
plugins:
- serverless-dotenv-plugin
# .env
ENABLE_X_RAY=true
如果您的服务入口点是 API 网关,您可以在 AWS X-Ray 控制台上配置采样规则和限制,或者使用 API 来控制请求的数量X-Ray.
采样
有关 X-Ray 中采样的介绍,请参阅本文:
https://aws.amazon.com/blogs/aws/apigateway-xray/
如果您对此还有其他问题,请告诉我。
更新
只能在X-Ray中指定抽样规则。
https://docs.aws.amazon.com/xray/latest/devguide/xray-console-sampling.html
这允许您限制跟踪的数量,无论您有多少 API 网关或 EC2 实例来处理您的请求。
小提示:截至今天,仅当入口点为 API 网关或如果您拥有 >2.0 版本的 X-Ray 守护程序 运行 时,才支持这种采样模式在您的实例上(EC2 或其他)。如果入口点是 lambda,目前不支持此采样效果,但很快就会支持。
在您的情况下,您似乎正在使用 API 网关作为入口点,因此您绝对可以 configure sampling rules in X-Ray console 并在所有 API 网关端点上全局生效。
您还可以为不同的 URL 配置不同的采样规则,例如 /auth 以 5 TPS 采样,/products 配置为 1 TPS,并根据您的用例使用不同的水库。
我只是在需要省钱时才尝试启用 X 射线。以下 serverless.yml
从 .env
文件加载环境变量。但是,serverless 似乎只允许 true
、Active
和 PassThrough
。任何可能的方法来绕过这个?谢谢。
# serverless.yml
provider:
name: aws
runtime: nodejs10.x
logs:
restApi: ${env:ENABLE_X_RAY, false}
tracing:
apiGateway: ${env:ENABLE_X_RAY, false}
lambda: ${env:ENABLE_X_RAY, false}
plugins:
- serverless-dotenv-plugin
# .env
ENABLE_X_RAY=true
如果您的服务入口点是 API 网关,您可以在 AWS X-Ray 控制台上配置采样规则和限制,或者使用 API 来控制请求的数量X-Ray.
采样有关 X-Ray 中采样的介绍,请参阅本文:
https://aws.amazon.com/blogs/aws/apigateway-xray/
如果您对此还有其他问题,请告诉我。
更新
只能在X-Ray中指定抽样规则。 https://docs.aws.amazon.com/xray/latest/devguide/xray-console-sampling.html 这允许您限制跟踪的数量,无论您有多少 API 网关或 EC2 实例来处理您的请求。
小提示:截至今天,仅当入口点为 API 网关或如果您拥有 >2.0 版本的 X-Ray 守护程序 运行 时,才支持这种采样模式在您的实例上(EC2 或其他)。如果入口点是 lambda,目前不支持此采样效果,但很快就会支持。
在您的情况下,您似乎正在使用 API 网关作为入口点,因此您绝对可以 configure sampling rules in X-Ray console 并在所有 API 网关端点上全局生效。
您还可以为不同的 URL 配置不同的采样规则,例如 /auth 以 5 TPS 采样,/products 配置为 1 TPS,并根据您的用例使用不同的水库。