自动创建基于标签的 Amazon CloudWatch 控制面板 - AWS Prescriptive Guidance

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

自动创建基于标签的 Amazon CloudWatch 控制面板

由 Janak Vadaria (AWS)、RAJNEESH TYAGI (AWS) 和 Vinodkumar Mandalapu (AWS) 创作

代码存储库:Gol densignals

环境:生产

技术:运营; CloudNative;管理和治理

AWS 服务:AWS CDK;亚马逊;AWS CloudWatch CodeBuild;AWS CodePipeline

Summary

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

在站点可靠性工程 (SRE) 中,Golden Signals是指一组全面的指标,这些指标可以从用户或消费者的角度提供服务的广阔视角。这些指标包括延迟、流量、错误和饱和度。有关更多信息,请参阅什么是站点可靠性工程 (SRE)? 在 AWS 网站上。

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

先决条件和限制

先决条件

限制

该解决方案目前仅为以下 AWS 服务创建自动控制面板:

架构

目标技术堆栈

目标架构

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

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

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

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

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

自动化和扩缩

该解决方案已通过使用实现自动化 AWS CDK。你可以在亚马逊 CloudWatch存储库的 GitHub 黄金信号仪表板中找到代码。为了进一步扩展和创建自定义仪表板,您可以配置多个标签键和值。

工具

Amazon 服务

  • Amazon EventBridge 是一项无服务器事件总线服务,可帮助您将应用程序与来自各种来源的实时数据连接起来,包括 AWS Lambda 函数、使用 API 目标的 HTTP 调用终端节点或其他来源的事件总线。 AWS 账户

  • AWS CodePipeline帮助您快速建模和配置软件发布的不同阶段,并自动执行持续发布软件更改所需的步骤。

  • AWS CodeBuild是一项完全托管的生成服务,可帮助您编译源代码、运行单元测试和生成可随时部署的工件。

  • AWS CodeCommit是一项版本控制服务,可帮助您私下存储和管理 Git 存储库,而无需管理自己的源代码控制系统。

  • AWS Command Line Interface (AWS CLI) 是一个开源工具,可帮助您通过命令行外壳中的命令与 AWS 服务进行交互。

  • AWS Identity and Access Management (IAM) 通过控制谁经过身份验证并有权使用 AWS 资源,从而帮助您安全地管理对资源的访问权限。

  • Amazon Simple Storage Service (Amazon S3) 是一项基于云的对象存储服务,可帮助您存储、保护和检索任意数量的数据。

最佳实践

作为安全最佳实践,您可以对连接到管道的源存储库使用加密和身份验证。有关其他最佳实践,请参阅 CodePipeline 文档中的CodePipeline 最佳实践和用例

操作说明

任务描述所需技能

配置和部署示例应用程序。

  1. 使用以下命令克隆 GitHub 示例代码存储库

    git clone https://github.com/aws-samples/golden-signals-dashboards-sample-app
  2. 导航到计算机上克隆的存储库,然后使用您选择的编辑器打开该src/project-settings.ts文件。

  3. 根据您的 AWS 资源标签和应用程序映射更改projectSettings常量值。

  4. 设置AWS_ACCOUNTAWS_REGION、和GS_DASHBOARD_INSTANCE环境变量:

    • 设置AWS_ACCOUNT为您账户的 AWS 账户 ID。

    • 设置AWS_REGION为要部署示例应用程序的区域。

    • 根据您的开发环境prod,设置为GS_DASHBOARD_INSTANCE、或。dev test(我们建议使用test此模式中描述的测试程序。)

  5. AWS CLI 使用您的 AWS 凭据进行设置。有关更多信息,请参阅 AWS CLI 文档中的使用命令设置和查看配置设置

  6. 运行以下命令以部署 Golden Signals 仪表板示例应用程序:

    sh deploy.sh
AWS DevOps

自动创建仪表板和警报。

部署示例应用程序后,您可以使用预期的标签值创建此解决方案支持的任何资源,这将自动创建指定的仪表板和警报。

要测试此解决方案,请创建一个 AWS Lambda 函数:

  1. AWS Management Console 登录到您部署示例应用程序 AWS 区域 的位置。

  2. https://console.aws.amazon.com/lambda/ 上打开 Lambda 控制台。

  3. 选择 “创建函数”,然后输入函数名称。

  4. 在 “高级设置” 窗格中,选择 “启用标签”,然后选择 “添加新标签”。输入以下键和值:

    • 键:AutoDashboard

    • 值:True

  5. 选择创建函数

    Lambda 函数会立即启动代码管道,该管道会自动为该特定 Lambda 函数创建仪表板和警报。

  6. 要查看自动仪表板和警报,请打开 CloudWatch 控制台,网址为 https://console.aws.amazon.com/cloudwatch/。您可以查看您在projectSettings常量中指定的函数的自定义仪表板和警报(默认为 App1-Lambda)。

  7. 选择 Lambda 函数的控制面板,查看作为此解决方案一部分创建的其他自动控制面板。

  8. 对其他服务(例如 Amazon RDS、Amazon SNS 和 DynamoDB)重复这些步骤以生成相关的控制面板。 AWS Auto Scaling有关 Amazon RDS 的示例,请参阅其他信息部分。

AWS DevOps
任务描述所需技能

移除golden-signals-dashboard构造。

  1. 要删除示例应用程序创建的所有 AWS CloudFormation 堆栈,必须重新配置AWS_ACCOUNTAWS_REGION、和GS_DASHBOARD_INSTANCE环境变量。该destroy.sh命令需要这些配置。

    • AWS_ACCOUNT是您账户的 AWS 账户 ID。

    • AWS_REGION是您部署示例应用程序的区域。

    • GS_DASHBOARD_INSTANCEdevtest、或prod,基于您之前的设置。

  2. AWS CLI 使用您的 AWS 凭据进行设置。

  3. 运行以下命令删除示例应用程序和所有关联 AWS CloudFormation 堆栈:

    sh destroy.sh
AWS DevOps

故障排除

问题解决方案

未找到 Python 命令(参见第 8 行)。findresources.sh

检查你的 Python 安装版本。如果您安装了 Python 版本 3,请pythonpython3换为resources.sh文件第 8 行,然后再次运行sh deploy.sh命令来部署解决方案。

相关资源

其他信息

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

亚马逊 RDS 的示例控制面板