

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

# 可观测性
<a name="observability"></a>

 由于微服务架构本质上是由许多分布式组件组成的，因此所有这些组件的可观察性变得至关重要。Amazon CloudWatch 通过收集和跟踪指标、监控日志文件以及对 AWS 环境变化做出反应来实现这一点。它可以监控您的应用程序和服务生成的 AWS 资源和自定义指标。

**Topics**
+ [监控](monitoring.md)
+ [集中日志](centralizing-logs.md)
+ [分布式跟踪](distributed-tracing.md)
+ [开启日志分析 AWS](log-analysis-on-aws.md)
+ [其他分析选项](other-options-for-analysis.md)

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

 CloudWatch 提供对资源利用率、应用程序性能和运行状况的全系统可见性。在微服务架构中，通过自定义指标进行监控 CloudWatch 是有益的，因为开发人员可以选择要收集的指标。动态扩展也可以基于这些自定义指标。

 CloudWatch Container Insights 扩展了此功能，自动收集诸如 CPU、内存、磁盘和网络等许多资源的指标。它有助于诊断与容器相关的问题，简化解决方案。

 对于 Amazon EKS 来说，通常首选的是 Prometheus，这是一个提供全面监控和警报功能的开源平台。它通常与 Grafana 配合使用，以实现直观的指标可视化。[Amazon Prometheus 托管服务 (AMP) 提供与 Prometheus](https://aws.amazon.com/prometheus/) 完全兼容的监控服务，让您可以毫不费力地监督容器化应用程序。此外，[Amazon Managed Grafana (AMG) 简化了指标的分析和可视化，无需管理](https://aws.amazon.com/grafana/)底层基础设施。

![\[该图显示了带有监控组件的无服务器架构\]](http://docs.aws.amazon.com/zh_cn/whitepapers/latest/microservices-on-aws/images/serverless-arch-with-monitoring.png)


![\[带有监控组件的基于容器的架构\]](http://docs.aws.amazon.com/zh_cn/whitepapers/latest/microservices-on-aws/images/container-arch-with-monitoring.png)


# 集中日志
<a name="centralizing-logs"></a>

 记录是查明和解决问题的关键。借助微服务，您可以更频繁地发布并尝试新功能。 AWS 提供 Amazon S3、CloudWatch 日志和亚马逊 OpenSearch 服务等服务来集中管理日志文件。Amazon EC2 使用守护程序向发送日志 CloudWatch，而 Lambda 和 Amazon ECS 则在本地将其日志输出发送到那里。对于 Amazon EKS，[可以使用 Fluent Bit 或 Fluentd 将](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-EKS-logs.html)日志转发到，以便使用 OpenSearch 和 Kibana CloudWatch 进行报告。但是，由于占地面积较小且[具有性能优势](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-EKS-logs.html)，因此建议使用 Fluent Bit 而不是 Fluentd。

 图 12 说明了如何将来自各种 AWS 服务的日志定向到 Amazon S3 和 CloudWatch。可以使用亚马逊 OpenSearch 服务（包括用于数据可视化的 Kibana）对这些集中式日志进行进一步分析。此外，还可以使用 Amazon Athena 对存储在 Amazon S3 中的日志进行临时查询。

![\[该图显示了 AWS 服务的日志记录功能\]](http://docs.aws.amazon.com/zh_cn/whitepapers/latest/microservices-on-aws/images/logging-capabilities.png)


# 分布式跟踪
<a name="distributed-tracing"></a>

 微服务通常协同工作来处理请求。 AWS X-Ray 使用关联 ID 来跟踪跨这些服务的请求。X-Ray 可与亚马逊 EC2、亚马逊 ECS、Lambda 和 Elastic Beanstalk 配合使用。

![\[显示 AWS X-Ray 服务地图的示意图\]](http://docs.aws.amazon.com/zh_cn/whitepapers/latest/microservices-on-aws/images/xray-service-map.png)


 [AWS Distro](https://aws.amazon.com/otel/?otel-blogs.sort-by=item.additionalFields.createdDate&otel-blogs.sort-order=desc) for OpenTelemetry 是该 OpenTelemetry 项目的一部分，它提供开源 APIs 和代理来收集分布式跟踪和指标，从而改善您的应用程序监控。 它向多个合作伙伴监控解决方案发送指标 AWS 和跟踪。通过从您的 AWS 资源中收集元数据，它可以使应用程序性能与底层基础架构数据保持一致，从而加快问题的解决。另外，它与各种 AWS 服务兼容，可以在本地使用。

# 开启日志分析 AWS
<a name="log-analysis-on-aws"></a>

 Amazon Lo CloudWatch gs Insights 允许进行实时日志探索、分析和可视化。为了进一步分析日志文件，包括 Kibana 在内的亚马逊 OpenSearch 服务是一款功能强大的工具。 CloudWatch 日志可以将日志条目实时流式传输到 OpenSearch 服务。Kibana 与之无缝集成 OpenSearch，可视化这些数据，并提供直观的搜索界面。

![\[该图显示了使用 Amazon OpenSearch 服务进行日志分析\]](http://docs.aws.amazon.com/zh_cn/whitepapers/latest/microservices-on-aws/images/log-analysis-with-opensearch-service.png)


# 其他分析选项
<a name="other-options-for-analysis"></a>

 为了进一步进行日志分析，完全托管的数据仓库服务 Amazon Redshift 和可扩展的商业智能服务 [Quick](https://aws.amazon.com/quicksight/) 提供了有效的解决方案。 QuickSight 可轻松连接各种 AWS 数据服务，例如 Redshift、RDS、Aurora、EMR、DynamoDB、Amazon S3 和 Kinesis，从而简化了数据访问。

 CloudWatch 日志可以将日志条目流式传输到 Amazon Data Firehose，这是一项用于提供实时流数据的服务。 QuickSight 然后使用存储在 Redshift 中的数据进行全面分析、报告和可视化。

![\[该图显示了使用 Amazon Redshift 和 Quick 进行日志分析\]](http://docs.aws.amazon.com/zh_cn/whitepapers/latest/microservices-on-aws/images/log-analysis-redshift-quicksight.png)


 此外，当日志存储在对象存储服务 S3 存储桶中时，可以将数据加载到 Redshift 或 EMR（基于云的大数据平台）等服务中，从而可以对存储的日志数据进行全面分析。

![\[显示简化日志分析的示意图：从 AWS 服务到 QuickSight\]](http://docs.aws.amazon.com/zh_cn/whitepapers/latest/microservices-on-aws/images/streamlining-log-analysis.png)
