

# 监控
<a name="a-monitoring"></a>

**Topics**
+ [PERF 7  如何监控资源以确保其性能？](w2aac19c11b9b5.md)

# PERF 7  如何监控资源以确保其性能？
<a name="w2aac19c11b9b5"></a>

 系统性能会随着时间的推移而降低。监控系统性能，以发现性能降低的情况，并针对内部或外部因素（例如操作系统或应用程序负载）采取修复措施。 

**Topics**
+ [PERF07-BP01 记录与性能相关的指标](perf_monitor_instances_post_launch_record_metrics.md)
+ [PERF07-BP02 在发生事件或意外事件时分析各项指标](perf_monitor_instances_post_launch_review_metrics.md)
+ [PERF07-BP03 建立关键性能指标（KPI）来衡量工作负载性能](perf_monitor_instances_post_launch_establish_kpi.md)
+ [PERF07-BP04 借助监控来生成基于警报的通知](perf_monitor_instances_post_launch_generate_alarms.md)
+ [PERF07-BP05 定期检查指标：](perf_monitor_instances_post_launch_review_metrics_collected.md)
+ [PERF07-BP06 主动监控和警报](perf_monitor_instances_post_launch_proactive.md)

# PERF07-BP01 记录与性能相关的指标
<a name="perf_monitor_instances_post_launch_record_metrics"></a>

 使用监控和可观察性服务来记录性能相关的指标。指标示例包括记录数据库事务、速度缓慢的查询、I/O 延迟、HTTP 请求吞吐量、服务延迟或其他关键数据。 

 确定对工作负载至关重要的性能指标并记录下来。这些数据对于确定影响工作负载整体性能或效率的组件非常重要。 

 回顾客户体验，确定至关重要的指标。确定每个指标的目标、衡量方式和优先程度。根据这些信息创建警报和通知，以主动解决与性能相关的问题。 

 **常见反模式：** 
+  您只需监控操作系统级别的指标，即可深入了解您的工作负载。 
+  您需要为峰值工作负载要求设计您的计算需求。 

 **建立此最佳实践的好处：** 要优化性能和提高资源利用率，您需要一个关于关键性能指标的统一运营视图。您可以创建控制面板并对数据执行指标计算，以获得运营和利用率见解。 

 **未建立这种最佳实践的情况下暴露的风险等级：** 高 

## 实施指导
<a name="implementation-guidance"></a>

 确定与工作负载相关的性能指标并记录下来。这些数据可以帮助确定哪些组件会影响工作负载的整体性能或效率。 

 确定性能指标：根据客户体验来确定最重要的指标。确定每个指标的目标、衡量方式和优先程度。根据这些数据创建警报和通知，以主动解决与性能相关的问题。 

## 资源
<a name="resources"></a>

 **相关文档：** 
+  [CloudWatch 文档](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 
+  [使用 CloudWatch 代理从 Amazon EC2 实例和本地服务器收集指标和日志](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html?ref=wellarchitected) 
+  [发布自定义指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html?ref=wellarchitected) 
+  [监控、日志记录和性能 APN 合作伙伴](https://aws.amazon.com/devops/partner-solutions/#_Monitoring.2C_Logging.2C_and_Performance) 
+  [X-Ray 文档](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) 
+  [Amazon CloudWatch RUM](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM.html) 

 **相关视频：** 
+  [摆脱混乱：获得运营可见性和见解 (MGT301-R1)](https://www.youtube.com/watch?v=nLYGbotqHd0) 
+  [AWS 上的应用程序性能管理](https://www.youtube.com/watch?v=5T4stR-HFas&ref=wellarchitected) 
+  [制定监控计划](https://www.youtube.com/watch?v=OMmiGETJpfU&ref=wellarchitected) 

 **相关示例：** 
+  [第 100 级：使用 CloudWatch 控制面板进行监控](https://wellarchitectedlabs.com/performance-efficiency/100_labs/100_monitoring_with_cloudwatch_dashboards/) 
+  [第 100 级：使用 CloudWatch 控制面板监控 Windows EC2 实例](https://wellarchitectedlabs.com/performance-efficiency/100_labs/100_monitoring_windows_ec2_cloudwatch/) 
+  [第 100 级：使用 CloudWatch 控制面板监控 Amazon Linux EC2 实例](https://wellarchitectedlabs.com/performance-efficiency/100_labs/100_monitoring_linux_ec2_cloudwatch/) 

# PERF07-BP02 在发生事件或意外事件时分析各项指标
<a name="perf_monitor_instances_post_launch_review_metrics"></a>

 在某个事件或意外事件发生后（或发生过程中），使用监控控制面板或报告来了解和诊断影响。这些视图可让您了解工作负载哪些部分的性能没有达到预期。 

 针对架构编写重要用户案例时，请纳入性能要求，例如指定每个重要案例应以多快速度执行。对于这些重要案例，实施额外的脚本化用户体验，以便确保您知道这些案例是如何根据您的要求执行的。 

 **常见反模式：** 
+  您可以假设性能事件是一次性问题，并且只与异常有关。 
+  对性能事件进行响应时，只需评估现有性能指标。 

 **建立此最佳实践的好处：** 要确定您的工作负载是否按预期运行，您必须通过收集其他指标数据进行分析，从而对性能事件做出响应。这些数据用于了解性能事件的影响，并建议更改来提高工作负载的性能。 

 **未建立这种最佳实践的情况下暴露的风险等级：** 高 

## 实施指导
<a name="implementation-guidance"></a>

 优先考虑重要用户案例的体验问题：针对架构编写重要用户案例时，请纳入性能要求，例如指定每个重要案例应以多快速度实施。对于这些重要案例，实施额外的脚本用户历程，以确保您知道这些用户案例如何根据您的要求执行。 

## 资源
<a name="resources"></a>

 **相关文档：** 
+  [CloudWatch 文档](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 
+  [Amazon CloudWatch Synthetics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries.html) 
+  [监控、日志记录和性能 APN 合作伙伴](https://aws.amazon.com/devops/partner-solutions/#_Monitoring.2C_Logging.2C_and_Performance) 
+  [X-Ray 文档](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) 

 **相关视频：** 
+  [摆脱混乱：获得运营可见性和见解 (MGT301-R1)](https://www.youtube.com/watch?v=nLYGbotqHd0) 
+  [通过 Amazon CloudWatch RUM 优化应用程序](https://www.youtube.com/watch?v=NMaeujY9A9Y) 
+  [Amazon CloudWatch Synthetics 演示](https://www.youtube.com/watch?v=hF3NM9j-u7I) 

 **相关示例：** 
+  [使用 Amazon CloudWatch Synthetics 测量页面加载时间](https://github.com/aws-samples/amazon-cloudwatch-synthetics-page-performance) 
+  [Amazon CloudWatch RUM Web 客户端](https://github.com/aws-observability/aws-rum-web) 

# PERF07-BP03 建立关键性能指标（KPI）来衡量工作负载性能
<a name="perf_monitor_instances_post_launch_establish_kpi"></a>

 确定定量和定性地衡量工作负载性能的 KPI。KPI 有助于衡量与业务目标相关的工作负载的运行状况。利用 KPI，业务和工程团队可在衡量目标和战略以及如何将二者结合来取得业务成果方面保持一致。当业务目标、战略或最终用户需求发生变化时，应重访 KPI。   

 例如，网站工作负载可能会将页面加载时间用作总体性能指示。该指标是用来衡量最终用户体验的多个数据点之一。除了确定页面加载时间阈值之外，您还应记录未达到性能要求时的预期成果或业务风险。较长的页面加载时间会直接影响最终用户的体验，降低他们的用户体验评分，并可能导致客户流失。在定义 KPI 阈值时，请结合考虑行业基准和最终用户期望。例如，如果当前行业基准是两秒内加载网页，而您的最终用户希望网页在一秒内加载，那么您在建立 KPI 时应考虑这两个数据点。KPI 的另一个示例可能侧重于满足内部绩效需求。在生成生产数据后的一个工作日内，在生成销售报告时可以确立 KPI 阈值。这些报告可能会直接影响日常决策和业务成果。  

 **期望结果：** 确立 KPI 涉及不同的部门和利益相关者。您的团队必须使用实时细粒度数据和历史数据作为参考来评估工作负载 KPI，并创建控制面板来对 KPI 数据执行指标计算，以获得运营和利用率见解。应记录 KPI，这可以说明议定的 KPI 和阈值，用于支持业务目标和战略，并且与所监控的指标对应起来。KPI 确定了绩效要求，所有团队应专门审查并经常分享和了解这些指标。清楚地确定风险和权衡机制，并了解未达到 KPI 阈值将产生的业务影响。 

 **常见反模式：** 
+  您仅监控系统级指标以获得工作负载见解，而不了解业务对这些指标产生的影响。 
+  您可以假设您的 KPI 已作为标准指标数据发布和共享。 
+  定义 KPI，但未与所有团队共享。 
+  未定义量化的、可衡量的 KPI。 
+  未使 KPI 与业务目标或战略保持一致。 

 

 **建立此最佳实践的好处：** 通过确定代表工作负载运行状况的具体指标，有助于使团队在其优先事项上保持一致和定义业务成果成功的标准。与所有部门共享这些指标可让所有人了解并一致认可阈值、期望值和业务影响。 

 **未建立这种最佳实践的情况下暴露的风险等级：** 高 

## 实施指导
<a name="implementation-guidance"></a>

 所有受工作负载运行状况影响的部门和业务团队应共同努力确立 KPI。由专人负责推动与组织 KPI 相关的协作、时间表、文档和信息。此单线负责人会经常分享业务目标和战略，并向业务利益相关者分配任务，以在各自的部门创建 KPI。在定义 KPI 后，运维团队通常会帮助定义指标，用于支持达成不同的 KPI 并通知成功情况。只有支持工作负载的所有团队成员都了解 KPI 时，KPI 才会有效。 

 **实施步骤** 

1.  确定并记录业务利益相关者。 

1.  确定公司目标和战略。 

1.  审查符合公司目标和战略的常见行业 KPI。 

1.  审查最终用户对您工作负载的期望。 

1.  定义和记录支持公司目标和战略的 KPI。 

1.  确定并记录为实现 KPI 而批准的权衡策略。 

1.  确定并记录可提供 KPI 信息的指标。 

1.  确定并记录严重性或警报级别的 KPI 阈值。 

1.  确定并记录未满足 KPI 时带来的风险和影响。 

1.  确定每个 KPI 的审查频率。 

1.  与所有支持工作负载的团队交流 KPI 文档内容。 

** 实施指导的工作量级别：** 定义和交流 KPI 所需的工作量为 *低* 。通常，可以在几周内与业务利益相关者会面，并审查目标、战略和工作负载指标来完成这项工作。

## 资源
<a name="resources"></a>

 **相关文档：** 
+ [CloudWatch 文档 ](http://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 
+  [监控、日志记录和性能 APN 合作伙伴](https://aws.amazon.com/devops/partner-solutions/#_Monitoring.2C_Logging.2C_and_Performance) 
+ [X-Ray 文档 ](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) 
+  [使用 Amazon CloudWatch 控制面板](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html?ref=wellarchitected) 
+  [Quick KPI](https://docs.aws.amazon.com/quicksight/latest/user/kpi.html) 

 **相关视频：** 
+  [AWS re:Invent 2019：扩展到第一个 1000 万用户（ARC211-R）](https://www.youtube.com/watch?v=kKjm4ehYiMs&ref=wellarchitected) 
+  [摆脱混乱：获得运营可见性和见解 (MGT301-R1)](https://www.youtube.com/watch?v=nLYGbotqHd0&ref=wellarchitected) 
+  [制定监控计划](https://www.youtube.com/watch?v=OMmiGETJpfU&ref=wellarchitected) 

 

 **相关示例：** 
+  [使用 Quick 创建控制面板](https://github.com/aws-samples/amazon-quicksight-sdk-proserve) 

# PERF07-BP04 借助监控来生成基于警报的通知
<a name="perf_monitor_instances_post_launch_generate_alarms"></a>

 根据您定义的与性能相关的关键性能指标 (KPI)，使用当测量值超出预期范围时能够自动生成警报的监控系统。 

 Amazon CloudWatch 可以收集架构中各种资源的指标。您也可以收集和发布自定义指标，用于显示业务指标或派生指标。使用 CloudWatch 或第三方监控服务设置表明超出阈值的警报；警报表明某个指标超出预期范围。 

 **常见反模式：** 
+  您可以依靠工作人员来观察指标，并在他们发现问题时做出响应。 
+  您仅依赖于运维手册，但可以触发无服务器工作流来完成相同的任务。 

 **建立此最佳实践的好处：** 您可以根据预定义的阈值，或根据可识别您的指标中的异常行为的机器学习算法，设置警报并自动执行操作。这些警报还可以触发无服务器工作流，从而修改工作负载的性能特性（例如，增加计算容量、更改数据库配置）。 

 **未建立这种最佳实践的情况下暴露的风险等级：** 中 

## 实施指导
<a name="implementation-guidance"></a>

 监控指标：Amazon CloudWatch 可以收集架构中各种资源的指标。您可以收集和发布自定义指标，用于显示业务指标或派生指标。可以使用 CloudWatch 或第三方监控服务来设置指示超出阈值的警报。 

## 资源
<a name="resources"></a>

 **相关文档：** 
+  [CloudWatch 文档](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 
+  [监控、日志记录和性能 APN 合作伙伴](https://aws.amazon.com/devops/partner-solutions/#_Monitoring.2C_Logging.2C_and_Performance) 
+  [X-Ray 文档](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) 
+  [在 CloudWatch 中使用警报和警报操作](https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/cw-example-using-alarm-actions.html) 

 **相关视频：** 
+  [AWS re:Invent 2019：扩展到第一个 1000 万用户（ARC211-R）](https://www.youtube.com/watch?v=kKjm4ehYiMs&ref=wellarchitected) 
+  [摆脱混乱：获得运营可见性和见解 (MGT301-R1)](https://www.youtube.com/watch?v=nLYGbotqHd0&ref=wellarchitected) 
+  [制定监控计划](https://www.youtube.com/watch?v=OMmiGETJpfU&ref=wellarchitected) 
+  [将 AWS Lambda 与 Amazon CloudWatch Events 配合使用](https://www.youtube.com/watch?v=WDBD3JmpLqs) 

 **相关示例：** 
+  [Cloudwatch Logs 自定义警报](https://github.com/awslabs/cloudwatch-logs-customize-alarms) 

# PERF07-BP05 定期检查指标：
<a name="perf_monitor_instances_post_launch_review_metrics_collected"></a>

 在例行维护时，或者事件或意外事件发生后，检查收集到了哪些指标。通过这些检查，找出哪些指标对于解决问题至关重要，以及跟踪哪些其他指标会有助于发现、解决问题或预防问题发生。 

 在响应意外事件或事件的过程中，评估哪些指标有助于解决问题、哪些目前没有跟踪的指标会有助于解决问题。这样，您可以提高收集的指标的质量，从而预防或更快速地解决未来发生的意外事件。 

 **常见反模式：** 
+  您可以允许指标保持警报状态较长时间。 
+  您可以创建自动化系统无法操作的警报。 

 **建立此最佳实践的好处：** 不断检查收集的指标，以确保它们能够帮助正确地发现、解决问题或预防问题发生。如果您让指标保持警报状态过长时间，这些指标也会过时。 

 **未建立此最佳实践暴露的风险等级：** 中 

## 实施指导
<a name="implementation-guidance"></a>

 不断改进指标收集和监控：在响应意外事件或事件的过程中，评估哪些指标有助于解决问题、哪些目前没有跟踪的指标会有帮助。通过这种方法，您可以提高收集的指标的质量，从而预防或更快速地解决未来发生的意外事件。 

## 资源
<a name="resources"></a>

 **相关文档：** 
+  [CloudWatch 文档](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 
+  [使用 CloudWatch 代理从 Amazon EC2 实例和本地服务器收集指标和日志](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html?ref=wellarchitected) 
+  [监控、日志记录和性能 APN 合作伙伴](https://aws.amazon.com/devops/partner-solutions/#_Monitoring.2C_Logging.2C_and_Performance) 
+  [X-Ray 文档](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) 

 **相关视频：** 
+  [摆脱混乱：获得运营可见性和见解 (MGT301-R1)](https://www.youtube.com/watch?v=nLYGbotqHd0) 
+  [AWS 上的应用程序性能管理](https://www.youtube.com/watch?v=5T4stR-HFas&ref=wellarchitected) 
+  [制定监控计划](https://www.youtube.com/watch?v=OMmiGETJpfU&ref=wellarchitected) 

 **相关示例：** 
+  [使用 Quick 创建控制面板](https://github.com/aws-samples/amazon-quicksight-sdk-proserve) 
+  [第 100 级：使用 CloudWatch 控制面板进行监控](https://wellarchitectedlabs.com/performance-efficiency/100_labs/100_monitoring_with_cloudwatch_dashboards/) 

# PERF07-BP06 主动监控和警报
<a name="perf_monitor_instances_post_launch_proactive"></a>

 使用关键性能指标 (KPI) 并结合监控和警报系统，主动解决与性能相关的问题。使用警报触发自动操作，以便在可能的情况下修复问题。如果无法实现自动响应，则将警报上报给能够响应的人员。例如，您的系统在关键性能指标 (KPI) 超出特定阈值时，能够预测预期 KPI 值并发出警报；或者您的工具在 KPI 超出预期值时，能够自动停止或回滚部署。 

 实施相应流程，让您在工作负载运行期间了解其性能。构建监控控制面板并确定预期性能基准，以确定工作负载的性能是否达到最佳。 

 **常见反模式：** 
+  您可以只允许运营人员对工作负载进行运营更改。 
+  您可以通过设置筛选器将所有没有主动修复行为的警报发送给运营团队。 

 **建立此最佳实践的好处：** 主动修复警报行为使支持人员能够集中精力处理那些无法自动完成的工作。这可确保运营人员不需要花费精力处理所有警报，而是能够集中精力处理重要警报。 

 **未建立此最佳实践暴露的风险等级：** 低 

## 实施指导
<a name="implementation-guidance"></a>

 在运维期间监控性能：实施相应流程，让您在工作负载运行期间了解其性能。构建监控控制面板并建立性能预期基准。 

## 资源
<a name="resources"></a>

 **相关文档：** 
+  [CloudWatch 文档](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) 
+  [监控、日志记录和性能 APN 合作伙伴](https://aws.amazon.com/devops/partner-solutions/#_Monitoring.2C_Logging.2C_and_Performance) 
+  [X-Ray 文档](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) 
+  [在 CloudWatch 中使用警报和警报操作](https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/cw-example-using-alarm-actions.html) 

 **相关视频：** 
+  [摆脱混乱：获得运营可见性和见解 (MGT301-R1)](https://www.youtube.com/watch?v=nLYGbotqHd0) 
+  [AWS 上的应用程序性能管理](https://www.youtube.com/watch?v=5T4stR-HFas&ref=wellarchitected) 
+  [制定监控计划](https://www.youtube.com/watch?v=OMmiGETJpfU&ref=wellarchitected) 
+  [将 AWS Lambda 与 Amazon CloudWatch Events 配合使用](https://www.youtube.com/watch?v=WDBD3JmpLqs) 

 **相关示例：** 
+  [Cloudwatch Logs 自定义警报](https://github.com/awslabs/cloudwatch-logs-customize-alarms) 