我们使用机器学习技术将英文博客翻译为简体中文。您可以点击导航栏中的“中文(简体)”切换到英文版本。
使用 亚马逊云科技 Systems Manager 和 Ansible 自动创建亚马逊 CloudWatch 警报和控制面板
监控
在这篇文章中,我们描述了如何使用 亚马逊云科技 Systems Manager 创建状态管理器关联,当使用您选择的标签创建 EC2 实例时,这些关联可以触发 Ansible 手册自动创建 CloudWatch 控制面板和警报。创建的控制面板不仅显示 CloudWatch 提供的开箱即用的指标,还显示 CloudWatch 代理收集的指标。
先决条件
在本演练中,必须满足以下先决条件:
- 一个
亚马逊云科技 账户 - 目标实例应设置为托管实例。请点击
此链接 进行设置。 - 必须在实例上安装大于 2.9 的 Ansible 版本。请参阅
此链接 中的 “在目标实例上安装 Ansible” 部分。 - 应创建并订阅亚马逊 SNS 主题。请点击
此链接 进行设置。 - 使用
此链接 创建 Amazon S3 存储桶 ,以存储本文后面部分中提供的 Ansible 代码。 - 应使用
此链接 向创建的托管实例授予在实例配置文件中的访问权限 。
解决方案概述
为了通过提供一个简单而安全的平台来维护一组实例的状态和远程执行命令来自动执行管理任务,我们将使用
当您创建状态经理关联时,它将执行 Ansible 手册,该手册将根据分配给 EC2 实例的标签创建 CloudWatch 控制面板和警报,其中包含目标选择。因此,在创建带有选定标签的 EC2 实例时,会自动安装和创建 CloudWatch 代理、仪表板和警报,提供主动监控。

图 1:本博客中使用的 亚马逊云科技 服务架构。
下面列出了一些定期监控以解决实例问题的关键性能指标:
- CPU 利用率
- 内存利用率
- 交换利用率
- 磁盘利用率
- 平均负载
- 实例状态
- 网络状态
这篇文章重点介绍自动为上述指标设置 CloudWatch 控制面板和警报,这些指标涉及将 EC2 实例创建为已定义目标标签的托管实例。此源代码中提供的代码仅适用于 Linux 实例,不支持 Windows 操作系统。
草率排练
在本节中,我们将介绍使用状态管理器设置自动化的过程,状态管理器将执行安装 CloudWatch 代理并创建 CloudWatch 控制面板和警报的 Ansible Playbook。假设您有一组托管实例,想要在这些实例中设置主动监控和警报,并且已经为其分配了相应的 IAM 角色。
第 1 步:下载源代码
自动化用于创建仪表板和警报的源代码存储在 GITHUB 存储库中。可
步骤 2:编辑 CloudWatch 指标警报的阈值
这篇文章将介绍为仪表板上显示的以下关键性能指标定义的警报。
- CPU 利用率
- 内存利用率
- 交换利用率
- 磁盘利用率
- 实例状态
下载的源代码由一个变量文件组成,该文件定义了创建警报时发出的警报的阈值。它们是在文件
在现有代码中,针对不同指标发出警报的阈值定义如下:
- CPU 使用率
- 警告阈值:80%
- 临界阈
- 内存使用率
- 警告阈值:90%
- 临界阈
- 交换使用率
- 警告阈值:30%
- 临界阈
- 磁盘利用率
- 警告阈值:90%
- 临界阈
- 实例状态
- 临界阈值:100
这意味着,每当实例不可用时,都会触发警报。
以下代码段显示了 CPU 利用率和交换利用率及其警告阈值的指标示例。

图 2:云监视指标的阈值
步骤 3:将源代码上传到亚马逊 S3 存储桶
此源代码需要上传到作为先决条件的一部分而创建的 Amazon S3 存储桶。上传的代码片段如下所示。

图 3:上传到 s3 存储桶的代码的快照
步骤 4:创建州经理协会
登录 亚马逊云科技 控制台并在搜索框中搜索 “系统管理器” 服务。在系统管理器控制台上,单击左侧面板上的 “状态管理器”,然后单击 “创建关联”。
(可选)提供关联名称,然后选择 “aws-ApplyansiblePlayBooks” 文档。在 “参数” 部分中,选择 “源类型” 作为 S3,选择 “源信息” 作为 {“路径”:” https://s3.amazonaws.com/

图 4:源信息的参数
将 “安装依赖关系” 选为 True,这将安装 Python 和其他必需的软件。
对于 “剧本文件”,指定文件的名称。在这种情况下,是 “amazon-cloudwatch-dashboard-alarms-with-ssm-ansible-role-main/playbook.yml”。注意:文件的名称基于其与 S3 存储桶的相对位置。在下面的示例片段中,playbook.yml 文件位于 s3 存储桶 cloudwatch-blog-ansible 中的 amazon-cloudwatch-dashboard-alarms-with-ssm-ansible-role-main 目录中。

图 5:要执行的剧本细节
对于 “额外变量”,指定用空格分隔的键/值对。强制变量如下所示。
- warn_sns_topic_name=
- critical_sns_topic_name=
- ansible_python_interpreter='/usr/bin/env python3′
根据阈值进行区分的警告和严重警报都需要 SNS 主题名称。注意:请勿更改变量的密钥名称,因为这取决于源代码。
额外变量的示例如下面的片段所示:

图 6:自动化需要传递的额外变量
对于 “目标选择”,您可以选择指定实例标签、资源组、所有实例或手动选择实例。有关更多详细信息,请参阅
在此示例中,我们之所以选择将实例标签指定为我们的 “目标选择”,是因为我们希望监控和警报在创建带有特定标签的 EC2 实例时由触发机制创建。例如:标签 = cloudwatchansible: True,如下面的片段所示。

图 7:ansible 自动化执行的目标选择
您可以选择在特定的时间表中运行状态管理器关联,这样,每当使用所需标签创建新的 EC2 实例时,状态管理器都会触发自动化,按计划频率执行 Ansible playbook。在这篇文章中,我们将选择 “无时间表”,因为我们已经有了带有所需标签的实例。
或者,您可以选择将执行的输出保存到 S3 存储桶中。在这种情况下,选择 “启用向 S3 写入输出”。
您可以参考
第 5 步:验证 Ansible 剧本的执行情况
创建状态经理协会后,它将执行 Ansible 手册来安装和配置 CloudWatch 代理,并创建 CloudWatch 控制面板和警报。可以通过单击创建的关联并查看执行历史记录来验证执行状态,如下面的代码段所示。

图 8:验证剧本的执行情况
您可以根据每个执行 ID 和实例 ID 进一步检查输出,如以下代码段所示。

图 9:验证执行输出
步骤 6:查看 CloudWatch 控制面板和警报
要查看在 亚马逊云科技 控制台中创建的 CloudWatch 控制面板,请搜索 “CloudWatch” 服务,然后在左侧面板上选择 “控制面板”。您将找到以 “

图 10:cloudwatch 仪表板示例
要查看在 CloudWatch 服务控制台中创建的警报,请在左侧面板上选择 “所有警报”。您将找到在实例上创建的警报,如下图所示。

图 11:Cloudwatch 警报示例
摘要
监控实例问题并获得通知对客户至关重要。使用 CloudWatch 仪表板和警报的主动监控和警报机制是实现这一目标的简单方法。您可以使用这个 亚马逊云科技 Systems Manager 解决方案来创建状态管理器关联,当使用您选择的标签创建 EC2 实例时,这些关联可以触发 Ansible 行动手册自动创建 CloudWatch 控制面板和警报。
作者简介
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。