

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

# 自动创建基于标签的 Amazon CloudWatch 控制面板
<a name="create-tag-based-amazon-cloudwatch-dashboards-automatically"></a>

*Janak Vadaria、Vinodkumar Mandalapu 和 RAJNEESH TYAGI，Amazon Web Services*

## Summary
<a name="create-tag-based-amazon-cloudwatch-dashboards-automatically-summary"></a>

手动创建不同的 Amazon CloudWatch 控制面板可能很耗时，尤其是在您必须创建和更新多个资源以自动扩展环境时。自动创建和更新 CloudWatch 仪表板的解决方案可以为您节省时间。这种模式可以帮助您部署一个全自动 AWS Cloud Development Kit (AWS CDK) 管道，该管道根据标签更改事件为您的 AWS 资源创建和更新 CloudWatch 仪表板，以显示黄金信号指标。

在站点可靠性工程（SRE）中，黄金信号是指一组全面的指标，这些指标可以从用户或使用者的角度来帮助我们了解服务。这些指标包括延迟、流量、错误和饱和度。有关更多信息，请参阅[什么是站点可靠性工程 (SRE)？](https://aws.amazon.com/what-is/sre/) 在 AWS 网站上。

此模式提供的解决方案属于事件驱动型。部署后，它会持续监控标签变更事件，并自动更新 CloudWatch 仪表板和警报。

## 先决条件和限制
<a name="create-tag-based-amazon-cloudwatch-dashboards-automatically-prereqs"></a>

**先决条件**
+ 活跃的 AWS 账户
+ AWS Command Line Interface (AWS CLI)，[已安装并配置](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
+  AWS CDK v@@ [2 的先决条件](https://docs.aws.amazon.com/cdk/v2/guide/work-with.html#work-with-prerequisites)
+ 已[启动的环境已启用](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html) AWS
+ [Python 版本 3](https://www.python.org/downloads/)
+ [AWS 适用于 Python 的 SDK (Boto3)，已安装](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html)
+ [Node.js 版本 18](https://nodejs.org/en/download/current) 或更高版本
+ 节点包管理器 (npm)，[已安装并配置为](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) AWS CDK
+ 对和的熟悉程度中等（200 级） AWS CDK AWS CodePipeline

**限制**

该解决方案目前仅为以下 AWS 服务创建自动化控制面板：
+ [Amazon Relational Database Service (Amazon RDS)](https://aws.amazon.com/rds/)
+ [AWS Auto Scaling](https://aws.amazon.com/autoscaling/)
+ [Amazon Simple Notification Service (Amazon SNS)](https://aws.amazon.com/sns/)
+ [Amazon DynamoDB](https://aws.amazon.com/dynamodb/)
+ [AWS Lambda](https://aws.amazon.com/lambda/)

## 架构
<a name="create-tag-based-amazon-cloudwatch-dashboards-automatically-architecture"></a>

**目标技术堆栈**
+ [CloudWatch 仪表板](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)
+ [CloudWatch 警报](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)

**目标架构**

![用于创建基于标签 CloudWatch 的仪表板的目标架构](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/f234fe30-87db-446f-a291-d33928ca2ccb/images/f63ca697-f252-416d-8a1b-0239f38c10c5.png)


1. 配置的应用程序 AWS 标签或代码更改的标签更改事件会启动管道， AWS CodePipeline 以构建和部署更新的 CloudWatch 仪表板。

1. AWS CodeBuild 运行 Python 脚本来查找已配置标签的资源，并将资源存储 IDs 在 CodeBuild 环境中的本地文件中。

1. CodeBuild 运行 **cdk synth** 以生成用于部署 CloudWatch 仪表板和警报的 CloudFormation 模板。

1. CodePipeline 将 CloudFormation 模板部署到指定的 AWS 账户 和区域。

1. 成功部署 CloudFormation 堆栈后，您可以查看 CloudWatch 仪表板和警报。

**自动化和扩展**

该解决方案已通过使用实现自动化 AWS CDK。你可以在[亚马逊 CloudWatch存储库的 GitHub 黄金信号仪表板中](https://github.com/aws-samples/golden-signals-dashboards-sample-app)找到代码。为了进一步扩缩和创建自定义控制面板，您可以配置多个标签键和值。

## 工具
<a name="create-tag-based-amazon-cloudwatch-dashboards-automatically-tools"></a>

**Amazon 服务**
+ [Amazon EventBridge](https://aws.amazon.com/eventbridge/) 是一项无服务器事件总线服务，可帮助您将应用程序与来自各种来源的实时数据连接起来，包括 AWS Lambda 函数、使用 API 目标的 HTTP 调用终端节点或其他来源的事件总线。 AWS 账户
+ [AWS CodePipeline](https://aws.amazon.com/codepipeline/) 可帮助您快速对软件发布过程的不同阶段进行建模和配置，并自动执行持续发布软件变更所需步骤。
+ [AWS CodeBuild](https://aws.amazon.com/codebuild/) 是一项完全托管式构建服务，可编译源代码、运行单元测试和生成部署就绪的构件。
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) 是一个开源工具，可帮助您通过命令行外壳中的命令与 AWS 服务进行交互。
+ [AWS Identity and Access Management (IAM)](https://aws.amazon.com/iam/) 通过控制谁经过身份验证并有权使用 AWS 资源，从而帮助您安全地管理对资源的访问权限。
+ [Amazon Simple Storage Service（Amazon S3）](https://aws.amazon.com/s3/)是一项基于云的对象存储服务，可帮助您存储、保护和检索任意数量的数据。

## 最佳实践
<a name="create-tag-based-amazon-cloudwatch-dashboards-automatically-best-practices"></a>

作为安全最佳实践，您可以对连接到管道的源存储库使用加密和身份验证。有关其他最佳实践，请参阅 CodePipeline 文档中的[CodePipeline 最佳实践和用例](https://docs.aws.amazon.com/codepipeline/latest/userguide/best-practices.html)。

## 操作说明
<a name="create-tag-based-amazon-cloudwatch-dashboards-automatically-epics"></a>

### 配置并部署应用程序
<a name="configure-and-deploy-the-sample-application"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 配置并部署示例应用程序。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/create-tag-based-amazon-cloudwatch-dashboards-automatically.html) | AWS DevOps | 
| 自动创建控制面板和警报。 | 部署示例应用程序后，您可以使用预期的标签值创建此解决方案支持的任何资源，因此也就会自动创建指定的控制面板和警报。<br />要测试此解决方案，请创建一个 AWS Lambda 函数：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/create-tag-based-amazon-cloudwatch-dashboards-automatically.html) | AWS DevOps | 

### 移除示例应用程序
<a name="remove-the-sample-application"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 移除 `golden-signals-dashboard` 构造。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/create-tag-based-amazon-cloudwatch-dashboards-automatically.html) | AWS DevOps | 

## 问题排查
<a name="create-tag-based-amazon-cloudwatch-dashboards-automatically-troubleshooting"></a>


| 问题 | 解决方案 | 
| --- | --- | 
| 找不到 Python 命令（请参阅第 8 行的 `findresources.sh`）。 | 检查您的 Python 安装版本。如果您安装了 Python 版本 3，请将 `resources.sh` 文件第 8 行的 `python` 替换为 `python3`，然后再次运行 `sh deploy.sh` 命令，以部署解决方案。 | 

## 相关资源
<a name="create-tag-based-amazon-cloudwatch-dashboards-automatically-resources"></a>
+ [引导（文档](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html)）AWS CDK 
+ [使用命名配置](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-methods)AWS CLI 文件（文档）
+ [AWS CDK 工作坊](https://cdkworkshop.com/)

## 附加信息
<a name="create-tag-based-amazon-cloudwatch-dashboards-automatically-additional"></a>

下图显示了作为本解决方案一部分创建的 Amazon RDS 控制面板示例。

![Amazon RDS 的示例控制面板](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/f234fe30-87db-446f-a291-d33928ca2ccb/images/706a262f-8650-47ff-ac44-e04ce5f4023e.png)
