使用 CloudWatch 应用程序图查看您的应用程序拓扑并监控运行状况
注意
CloudWatch 应用程序图取代了服务地图。要按 Amazon X-Ray 跟踪查看应用程序地图,请打开 X-Ray 跟踪地图。在 CloudWatch 控制台中,在左侧导航窗格的 X-Ray 部分下选择跟踪地图。
为 Application Signals 启用应用程序后,应用程序图将显示代表您的组的节点。然后,您可以在这些组中进行深入研究,查看您的服务及其依赖项。使用应用程序图查看应用程序客户端拓扑、Synthetics 金丝雀、服务和依赖项,并监控运行状况。要查看应用程序图,请打开 CloudWatch 控制台
在为 Application Signals 启用应用程序后,使用应用程序图可以更轻松地监控应用程序的运行状况:
-
查看客户端、Canary、服务和依赖项节点之间的连接,以便了解应用程序拓扑和执行流程。如果服务运营商不是您自己的开发团队,这一点尤其有用。
-
查看哪些服务达到或未达到您的服务级别目标(SLO)。如果某项服务未达到 SLO,则您可以快速确定是否有某个下游服务或依赖项导致此问题或影响多个上游服务。
-
选择单个客户端、Synthetics Canary、服务或依赖项节点以查看相关指标。服务详细信息页面显示有关操作、依赖项、Synthetics Canary 和客户端页面的更多详细信息。
-
筛选和缩放应用程序图,从而更便于重点关注应用程序拓扑的某一部分,或者查看整个地图。通过从筛选条件文本框中选择一个或多个属性来创建筛选条件。选择各个属性时,系统将引导您选择筛选条件。您将在筛选条件文本框下看到完整的筛选条件。随时选择清除筛选条件以移除筛选条件。
在单个统一的应用程序图中监控多个 Amazon 账户的服务。使用账户信息可以清楚地识别不同账户的服务,从而实现分布式应用程序的统一可观测性。
识别应用程序中尚未埋点的服务。Application Signals 会自动检测和显示尚未进行埋点的服务,从而帮助您实现全面的可观测性覆盖。未埋点服务在地图上以视觉方式区分,可帮助您确定埋点工作的优先顺序。
对服务进行分组和筛选以创建与工作流相匹配的自定义视图。此组织可帮助您快速查找和访问最常使用的服务
保存经过筛选和分组的视图,以便快速返回常用配置
浏览应用程序图
访问应用程序图时,默认情况下,地图会显示按相关服务分组的服务。相关服务根据依赖项对服务进行分组。例如,如果服务 A 调用服务 B,而服务 B 调用服务 C,则它们将分组到服务 A 下。您可以查看每个组中所有服务的 SLI 运行状况、指标和服务计数。
选择选项卡,了解有关浏览每种节点及其之间的边缘(连接)的信息。
动态分组和筛选
您可以单击分组依据下拉列表来使用不同的分组选项。默认情况下,应用程序图提供 2 个分组:
相关服务 – 根据服务依赖项对服务进行分组
环境 – 按服务环境对服务进行分组
如果要定义自己的自定义分组,请单击管理组以定义自定义组,然后使用组键标记服务或添加 OTEL 资源属性。
注意
要启用通过 OTEL 资源属性进行分组,CloudWatch 代理版本必须为 v1.300056.0 或更高版本。
Application Signals 中的默认分组会根据服务的下游依赖项自动整理服务。系统会分析服务依赖项图并创建组,其中根节点(没有上游依赖项的服务)变为组名称。所有直接或间接依赖于此根服务的服务都将自动包含在该组中。例如,如果服务 A 调用服务 B,而服务 B 调用服务 C,则所有三项服务将分组在一起,并将服务 A 作为组名称,因为它是依赖关系链的根。这种自动分组机制提供了一种自然的方法,可以根据相关服务的实际运行时交互和依赖项对这些服务进行可视化和管理。
组操作和见解
您可以为每个组执行以下操作:
-
单击查看更多可查看该组的指标图表、最近两个变更事件和上次部署时间
-
单击查看控制面板可查看该组的指标控制面板、变更事件表和服务列表
您可以使用左侧栏上的分组和筛选来筛选服务具有部署时间、SLI 运行状况或计算平台类型的组。
您还可以在跨账户可观测性设置中,按账户筛选以查看特定 Amazon 账户的服务。
使用搜索和筛选栏,按名称搜索组或搜索包含特定服务环境或依赖项的组。按账户 ID 筛选,重点关注特定账户的服务。
配置自定义组
通过自定义分组功能,可以根据业务需求和运营优先级以逻辑方式整理服务。此功能让您能够查看和保存按特定需求排定优先级的已定义视图,根据团队所有权创建组,并对关键业务交易所需的服务进行分组。
创建自定义组名称(将在用户界面中看到的组名称)和相应的组键名称。通过 Application Signals 用户界面或使用 PutGroupingConfiguration API 完成此步骤。
组键名称可以是服务的 Amazon 标签键,也可以是 OTEL 资源属性。在标签和 OTEL 资源属性之间作决定时,请考虑计算平台:
对于单一服务平台(例如 Lambda 或自动扩缩组),请使用 Amazon 标签
对于多服务平台(例如 Amazon EKS 集群),请使用 OTEL 资源属性,以便进行更精细的分组
添加 Amazon 标签
向 Amazon EKS 集群添加一个以自定义组键为键和值的 Amazon 标签。如果一个 Amazon EKS 集群中运行多项服务,则所有服务都使用相同的自定义组键进行标记。例如,如果 Amazon EKS 集群 A 运行服务 1、服务 2 和服务 3,则将带有 Team X 键的 Amazon 的标签添加到集群时,会将所有三项服务都添加到 Team X。要仅将特定服务添加到 Team X,请为服务添加 OTEL 资源属性,如下所示。
添加 OTEL 资源属性
要添加 OTEL 资源属性,请参阅以下配置:
常规配置
使用自定义组键值对在应用程序中配置 OTEL_RESOURCE_ATTRIBUTES 环境变量。键在 aws.application_signals.metric_resource_keys 下方列出,以 & 分隔。
例如,要使用 Application=PetClinic 和 Owner=Test 创建自定义组,请使用以下命令:
OTEL_RESOURCE_ATTRIBUTES=Application=PetClinic,Owner=Test,aws.application_signals.metric_resource_keys=Application&Owner
平台特定的配置
以下是部署规格。
Amazon EKS 和原生 Kubernetes
apiVersion: apps/v1 kind: Deployment metadata: ... spec: replicas: 1 ... template: spec: containers: - name: your-app image: your-app-image env: ... - name: OTEL_RESOURCE_ATTRIBUTES value: Application=PetClinic,Owner=Test,aws.application_signals.metric_resource_keys=Application&Owner
Amazon EC2
将 OTEL_RESOURCE_ATTRIBUTES 添加到应用程序启动脚本。有关完整示例,请参阅添加 OTEL_RESOURCE_ATTRIBUTES。
... OTEL_RESOURCE_ATTRIBUTES="service.name=$YOUR_SVC_NAME,Application=PetClinic,Owner=Test,aws.application_signals.metric_resource_keys=Application&Owner" \ java -jar $MY_JAVA_APP.jar
Amazon ECS
将 OTEL_RESOURCE_ATTRIBUTES 添加到 TaskDefinition。有关完整示例,请参阅在 Amazon ECS 上启用。
{ "name": "my-app", ... "environment": [ { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "service.name=$YOUR_SVC_NAME,Application=PetClinic,Owner=Test,aws.application_signals.metric_resource_keys=Applicationmanagement portalOwner" }, ... ] }
Lambda
将 OTEL_RESOURCE_ATTRIBUTES 添加到 Lambda 环境变量。
OTEL_RESOURCE_ATTRIBUTES="Application=PetClinic,Owner=Test,aws.application_signals.metric_resource_keys=Application&Owner"
查看组内的服务
要查看组中的服务及其依赖项,请单击组名称。随即将显示组内的服务地图。每个服务节点都将显示 SLI 运行状况、指标和平台详细信息。违反 SLI 的服务会突出显示以便于识别。
未埋点服务显示有独特的可视化指示器(例如虚线边框或不同的颜色)显示,以将其与已埋点服务区分开来。将鼠标悬停在未埋点服务节点上,查看埋点指南和设置文档的链接。
默认情况下,所有金丝雀、RUM 客户端和 Amazon 服务节点都将折叠起来。如果此组中的服务调用不属于此组的服务,则默认情况下,这些服务也将折叠起来。
如果地图仍然太大而无法进行有效调查,则可以应用嵌套分组来缩小调查范围。例如,在按业务部门对服务进行分组后,如果组中还有太多服务,请使用“分组依据”下拉列表选择团队,从而创建嵌套的分组结构。
服务见解和详细信息
在此页面上,还可以单击搜索栏旁边的保存视图来保存视图,这样下次就不必再次应用相同的分组和筛选。
单击服务节点中的查看更多,查看服务审计、变更事件、SLI 运行状况和指标图表。
如果要查看服务操作和其他服务详细信息,请单击查看控制面板转到服务概览页面。
或者,可以单击“边缘”查看服务的特定依赖项调用指标。
变更事件
借助 Application Signals 对 CloudTrail 事件的自动处理能力,全面跟踪应用程序中的变更事件。监控服务及其依赖项的配置和部署事件,为操作分析和问题排查提供即时背景信息。变更事件检测功能会随服务发现功能一同启用,可通过 CloudWatch 控制台或 StartDiscovery API 完成启用操作。对于 EKS 服务,部署检测需通过 Application Signals 埋点 SDK 为 EKS 服务进行埋点。Application Signals 会自动将部署时间与性能变化相关联,帮助您快速确定最近的部署是否导致了服务问题。无需进行额外的配置或设置,即可查看各项服务的变更事件历史记录和影响。
审计调查发现
通过 Application Signals 的审计调查发现,挖掘关键见解。该服务会对应用程序展开分析,反馈重要观测结果并识别潜在问题,大幅简化根本原因分析流程。这些自动化分析结果会整合相关跟踪数据,无需多次单击跳转即可查看。审计系统可帮助团队快速定位问题及其深层诱因,实现更快速解决问题。
应用程序图上的跨账户可观测性
Application Signals 支持跨账户可观测性,让您可在单个统一的应用程序图中监控和可视化分布在多个 Amazon 账户中的服务。对于采用多账户架构且遵循 Amazon 最佳实践的组织来说,此功能必不可少。
关键功能:
统一视图:可在单个应用程序图中查看多个 Amazon 账户的服务,全面了解您的分布式应用程序架构。
账户识别:每个服务节点都清晰显示其账户 ID 和区域,便于识别服务所有权和位置。
集中式监控:通过一个监控账户监控所有关联账户中服务的运行状况、性能和 SLO 状态。
跨账户筛选:按账户 ID 对服务进行筛选和分组,重点关注特定账户或查看跨账户互动。
工作原理:
Application Signals 使用 Amazon Organizations 和跨账户共享功能来实现跨多个账户的可观测性。要设置跨账户可观测性,请参阅 CloudWatch 跨账户可观测性。