App Mesh 可观测性故障排除 - AWS App Mesh

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

App Mesh 可观测性故障排除

本主题详细介绍了您在 App Mesh 可观测性方面可能遇到的常见问题。

看不到我的应用程序的 AWS X-Ray 痕迹

症状

您在 App Mesh 中的应用程序未在 X-Ray 控制台或 API 中显示 X-Ray 跟踪信息。

解决方案

要在 App Mesh 中使用 X-Ray,必须正确配置组件,以实现应用程序、sidecar 容器和 X-Ray 服务之间的通信。请执行以下步骤确认 X-Ray 已正确设置:

  • 确保 App Mesh 虚拟节点侦听器协议未设置为 TCP

  • 确保与您的应用程序一起部署的 X-Ray 容器公开 UDP 端口2000并以用户身份运行。1337有关更多信息,请参阅上的 Amazon ECS X-Ray 示例 GitHub。

  • 确保 Envoy 容器已启用追踪。如果您使用的是 App Mesh Envoy 镜像,则可以通过将环境变量设置为将ENABLE_ENVOY_XRAY_TRACING环境变量设置为1 并将 XRAY_DAEMON_PORT环境变量设置为2000来启用 X-Ray。

  • 如果您使用某个特定语言的 SDK 在应用程序代码中对 X-Ray 进行了检测,请按照您的语言指南确保其配置正确。

  • 如果前面的所有项目都配置正确,请查看 X-Ray 容器日志中是否存在错误,并按照疑难解答中的指导进行操作 AWS X-Ray。有关在 App Mesh 中集成 X-Ray 的更详细说明,请参阅将 X-Ray 与 App Mesh 集成

如果您的问题仍未解决,请考虑GitHub 提出问题或联系 Su AWS pport

无法在 Amazon 指标中查看我的应用程序的 Envoy CloudWatch 指标

症状

你在 App Mesh 中的应用程序没有向指标发出 Envoy 代理生成的 CloudWatch指标。

解决方案

在 App Mesh 中使用 CloudWatch 指标时,必须正确配置多个组件,以实现您的 Envoy 代理、 CloudWatch 代理 sidecar 和 CloudWatch 指标服务之间的通信。请执行以下步骤确认 Envoy 代理的 CloudWatch 指标设置正确:

  • 确保您使用的是 App Mesh 的 CloudWatch 代理映像。有关更多信息,请参阅上的 App Mesh CloudWatch 代理 GitHub。

  • 确保按照平台特定的使用说明正确配置了 App Mesh 的 CloudWatch 代理。有关更多信息,请参阅上的 App Mesh CloudWatch 代理 GitHub。

  • 如果前面的所有项目都配置正确,请查看 CloudWatch 代理容器日志中是否存在错误,并按照 CloudWatch 代理故障排除中提供的指导进行操作。

如果您的问题仍未解决,请考虑GitHub 提出问题或联系 Su AWS pport

无法为 AWS X-Ray 跟踪配置自定义采样规则

症状

您的应用程序正在使用 X-Ray 跟踪,但您无法为跟踪配置采样规则。

解决方案

由于 App Mesh Envoy 目前不支持动态 X-Ray 采样配置,因此可以使用以下解决方法。

如果您的 Envoy 版本为 1.19.1 或更高版本,您可以选择以下选项。

  • 要仅设置采样率,请使用 Envoy 容器上的 XRAY_SAMPLING_RATE 环境变量。该值应指定为介于 0 和之间的小数 1.00 (100%)。有关更多信息,请参阅 AWS X-Ray 变量

  • 要为 X-Ray tracer 配置本地化的自定义采样规则,请使用 XRAY_SAMPLING_RULE_MANIFEST 环境变量指定 Envoy 容器文件系统中的文件路径。有关更多信息,请参阅《AWS X-Ray 开发人员指南》中的采样规则

如果您的 Envoy 版本早于 1.19.1,请执行以下操作。

  • 使用 ENVOY_TRACING_CFG_FILE 环境变量来更改采样率。有关更多信息,请参阅 Envoy 配置变量。指定自定义跟踪配置并定义本地采样规则。有关更多信息,请参阅 Envoy Cay 配置

  • ENVOY_TRACING_CFG_FILE 环境变量的自定义跟踪配置示例:

    tracing: http: name: envoy.tracers.xray typedConfig: "@type": type.googleapis.com/envoy.config.trace.v3.XRayConfig segmentName: foo/bar segmentFields: origin: AWS::AppMesh::Proxy aws: app_mesh: mesh_name: foo virtual_node_name: bar daemonEndpoint: protocol: UDP address: 127.0.0.1 portValue: 2000 samplingRuleManifest: filename: /tmp/sampling-rules.json
  • 有关 samplingRuleManifest 属性中采样规则清单配置的详细信息,请参阅配置 X-Ray SDK for Go

如果您的问题仍未解决,请考虑GitHub 提出问题或联系 Su AWS pport