使用 Amazon QuickSight 实现 AWS Systems Manager Patch Manager 信息可视化

Olawale Olaleye
难度
200 - 中级
时间
30 分钟
前提条件

海外区域: 注册 / 登录 亚马逊云科技

上次更新时间
2024 年 9 月 5 日

本文介绍如何构建 Amazon QuickSight 仪表板,用于实现关键补丁和清单 (Inventory) 信息可视化,从而缩短平均修复时间 (MTTR)。还可以在仪表板上使用筛选器来搜索特定的 AWS 账户、特定的 AWS 区域、Amazon Elastic Compute Cloud ( Amazon EC2 ) 实例名称,或者查看已安装或缺失的软件包。

此解决方案适用于以下场景:通过可视化图表查看在多个 AWS 账户中运行的多个 Amazon EC2 实例的系统补丁信息;通过一个统一、集中的仪表板查找特定的软件包或排查未安装某些软件包的系统;了解运行特定操作系统 ( OS ) 版本的 EC2 实例数量,按 AWS 账户过滤实例,或者查看每个 AWS 账户在各个 AWS 区域的实例分布。

另外,这一解决方案不仅适用于 Amazon EC2 实例,还可以用于混合环境中的服务器和虚拟机 ( VM ) 的系统补丁信息可视化。

解决方案概述

图 1:架构概览

AWS CloudFormation 模板会动态创建以下资源:

  • Amazon Simple Storage Service (Amazon S3)
  • Amazon S3 存储桶策略:S3BucketPolicy
  • AWS Glue 数据库:GlueDatabase
  • AWS Glue 爬网程序:GlueCrawler
  • AWS IAM 角色:GlueCrawlerRole
  • AWS IAM 角色:DeleteGlueTableColumnFunctionRole
  • AWS Lambda 函数:DeleteGlueTableColumnFunction
  • AWS EventBridge 规则:DeleteGlueTableColumnFunctionEventRule
  • AWS Lambda 权限:DeleteGlueTableColumnFunctionCloudWatchPermission
  • AWS CloudFormation StackSet
    • AWS Systems Manager 资源数据同步:ResourceDataSync
  • AWS IAM 角色 – QuicksightLambdaExecutionRole
  • AWS Lambda 函数 – QuickSightFunction
  • 自定义函数 – QuickSight
    • QuickSight 数据源
    • QuickSight 数据集

先决条件

在创建 QuickSight 仪表板之前,需要满足以下条件:

操作步骤

我将使用一个 AWS CloudFormation (CFN) 模板动态构建基础设施。该模板会在主 AWS 账户中创建一个 Amazon S3 存储桶,并在 CFN 模板中指定的 AWS 账户区域设置 Systems Manager 资源数据同步,从而把 Systems Manager 上的补丁和清单数据发送至 S3 存储桶。接下来,创建一个 Amazon Athena 表用于实现数据可视化。最后,创建 QuickSight 数据集、可视化图表和仪表板。

确认满足所有前提条件后,部署 AWS CloudFormation 模板:BlogCFN.yaml

         重要说明:Amazon S3 存储桶的区域必须与部署 CFN 的区域相同。

连接 QuickSight 并添加 Athena 的访问权限

  1. 登录 Amazon QuickSight 控制台。
  2. 选择 Admin/username(管理员/用户名),然后选择 Manage QuickSight(管理 QuickSight)。
  3. 选择 Security & Permissions(安全性和权限)。
  4. 在 QuickSight access to AWS services(QuickSight 访问 AWS 服务的权限)下,选择 Manage(管理)。
  5. 选择 Amazon Athena 和 Amazon S3,然后选择用于 Systems Manager 资源数据同步的 S3 存储桶,并选择默认权限(只读)。

创建“Systems Manager 补丁概览”仪表板的可视化图表

创建 PatchComplianceItem 分析

  1. 在 QuickSight 控制台中,选择 Analyses(分析),然后选择 New analysis(新建分析)。
  2. 选择 ssm_aws_complianceitem,然后点击 Create analysis(创建分析)或 Use in Analysis(在分析中使用)。

第一个可视化图表:展示实例所属账户

  1. 在 Dataset(数据集)中,确认已选择 ssm_aws_complianceitem。
  2. 在工作表 1 中选择可视化元素,然后点击 Fields list(字段列表)中的 accountid 字段。
  3. 选择 resourceid,并将其拖拽至 ADD DATA(添加数据)中的 Value(值)字段。
  4. 更改 resourceid 值。在 Value Options(值选项)中,点击 Value(值)字段 resourceid 旁的下拉箭头,选择 Aggregate: Count(聚合:计数),然后选择 Count distinct(去重计数)。
  5. 在 Visual types(可视化元素类型)中,选择 Pie chart(饼图)。
  6. 在可视化图表中,点击菜单选项 (...),然后选择 Hide legend(隐藏图例)。
  7. 双击可视化图表,将标题修改为 AccountIDs。

第二个可视化图表:展示实例的地域分布

  1. 取消选择当前可视化图表,然后点击空白区域,创建新的可视化图表。
  2. 在 Fields list(字段列表)中,选择 region 字段。
  3. 选择 resourceid,并将其拖拽至 ADD DATA(添加数据)中的 Value(值)字段。
  4. 更改 resourceid 值。在 Value Options(值选项)中,点击 Value(值)字段resourceid 旁的下拉箭头,选择 Aggregate: Count(聚合:计数),然后选择 Count distinct(去重计数)。
  5. 在 Visual types(可视化元素类型)中,选择 Pie chart(饼图)。
  6. 在可视化图表中,点击菜单选项 (...),然后选择 Hide legend(隐藏图例)。
  7. 双击可视化图表,将标题修改为 Regions。

第三和第四个可视化图表:

  1. 请按照上面的步骤(1 到 6)创建以下新的可视化图表:
  2. PatchSeverity:Y axis(Y 轴)选择为 patchseverity 字段,Value(值)选择为 resourceid 字段。
  3. PatchBaselineId:Y axis(Y 轴)选择为 patchbaselineid 字段,Value(值)选择为 patchstate 字段。

第五个可视化图表:Patch Details

  1. 取消选择当前可视化图表,然后点击空白区域,创建新的可视化表格。
  2. 点击 Fields list(字段列表)中的 installedtime 字段,然后在 Visuals(可视化元素)中选择 Table(表格)。
  3. 从 Fields list(字段列表)中选择以下字段:accountid、region、patchbaselineid、resourceid、patchseverity、status 和 title。
  4. 双击可视化图表,将标题改为 Patch Details,并设置为居中对齐。
  5. 选择 Patch Details 表,然后点击面板顶部的 Filter(筛选器)选项。
  6. 创建一个新的筛选器,选择 patchbaselineid。
  7. 创建筛选器后,打开该筛选器,将过滤条件改为 Exclude(排除),然后选择空的补丁基准,以便只保留有 patchbaselineid 关联的条目。

添加 Tags(标签)表

  1. 在左上角,点击 Dataset(数据集)下拉菜单,然后选择 Add a new dataset(添加新的数据集)。
  2. 添加数据集,选择 ssm_aws_tag。
  3. 在 Dataset(数据集)中,确认已选择 ssm_aws_tags。
  4. 取消选择当前可视化图表,然后点击空白区域,创建新的可视化表格。
  5. 点击 Fields list(字段列表)中的 capturetime 字段,然后在 Visuals(可视化元素)中选择 Table(表格)。
  6. 从 Fields list(字段列表)中选择以下字段:accountid、resourceid、region、key 和 value。
  7. 双击可视化图表,将标题改为 Tag Details,并设置为居中对齐。

筛选器

  1. 选择 Patch Details 表,然后点击面板顶部的 Filter(筛选器)选项。
  2. 创建新的筛选器,并选择 CaptureDateTime。
  3. 创建筛选器后,点击菜单选项 (...),然后选择 Add to sheet(添加至工作表)。
  4. 打开 CaptureDateTime 筛选器,在顶部选择 All applicable visuals(所有适用的可视化元素)。
  5. 将筛选器添加至工作表后,在工作表中选择该筛选器,点击菜单选项 (...),然后选择 Pin to top(固定至顶部)。将在顶部创建一个包含筛选器的 Control(控件)面板。
  6. 按照上述步骤(1 到 4)创建一个新的 accountid 筛选器。
  7. 按照上述步骤(1 到 4)创建一个新的 resourceid 筛选器。
  8. 按照上述步骤(1 到 4)创建一个新的 region 筛选器。
  9. 按照上述步骤(1 到 4)创建一个新的 status 筛选器。
  10. 选择 Tag Details 表,然后点击面板顶部的 Filter(筛选器)选项。
  11. 按照上述步骤(1 到 4)创建一个新的 key 筛选器。
  12. 按照上述步骤(1 到 4)创建一个新的 value 筛选器。
  13. 建立筛选器之间的关联。对 accountid、resourceid、region、status、key和 value 这些筛选器执行以下步骤:
  14. 展开工作表顶部的 Controls(控件),选择筛选器,点击菜单 (...),然后选择 Edit(编辑)。
  15. 修改控件名称,使其与筛选器名称一致。
  16. 点击 Control Options(控件选项),选择 Show relevant values only(仅显示相关值),然后勾选选择所有筛选器的复选框,最后点击 Update(更新)和 Apply(应用)。

注意:对于 CaptureDateTime 筛选器的相关值,请选择与文本框值 CaptureDateTime 匹配的字段。

发布 Systems Manager 补丁概览仪表板

  1. 在 Analysis(分析)面板的右上角,点击 Share(共享),然后选择 Publish dashboard(发布仪表板)。
  2. 输入仪表板名称:SSM 补丁概览,然后点击 Publish dashboard(发布仪表板)。

图 2:QuickSight 仪表板 – Systems Manager 补丁概览

创建 Systems Manager 实例概览仪表板的可视化图表

创建 InstanceCompliance 分析

  1. 在 QuickSight 控制台中,选择 Analyses(分析),然后选择 New analysis(新建分析)。
  2. 选择 instances_compliance,然后点击 Create analysis(创建分析)或 Use in Analysis(在分析中使用)。

第一个可视化图表:OS Platform

  1. 在 Dataset(数据集)中,确认已选择 instances_compliance。
  2. 在工作表 1 中选择可视化元素,然后点击 Fields list(字段列表)中的 accountid。
  3. 选择 resourceid,并将其拖拽至 ADD DATA(添加数据)中的 Value(值)字段。
  4. 选择 platformname,并将其拖拽至 Group/Color(组/颜色)字段。
  5. 修改 resourceid 的值:在 Value Options(值选项)中,点击 Value(值)字段 resourceid 旁的下拉箭头,选择 Aggregate: Count(聚合:计数),然后选择 Count distinct(去重计数)。
  6. 在 Visual types(可视化元素类型)中,选择 Vertical stacked bar chart(垂直堆叠柱状图)。
  7. 在可视化图表中,点击菜单选项 (...),然后选择 Hide legend(隐藏图例)。
  8. 选择该可视化元素,然后打开顶部面板中的 Properties(属性)选项。
  9. 将标题编辑为 OS Platform。
  10. 展开 Legend(图例)选项,勾选 Show legend(显示图例)、Hide legend title(隐藏图例标题),并将 Position(位置)设为 Top(顶部)。
  11. 展开 Data labels(数据标签)选项,勾选 Show data labels(显示数据标签)和 Show totals(显示总计)。

第二个可视化图表:Regions

  1. 取消选择当前可视化图表,然后点击空白区域。创建新的可视化图表。
  2. 点击 Fields list(字段列表)中的 accountid 字段。
  3. 选择 resourceid,并将其拖拽至 ADD DATA(添加数据)中的 Value(值)字段。
  4. 选择 region,将其拖拽至 Group/Color(分组/颜色)字段。
  5. 修改 resourceid 值。在 Value Options(值选项)中,点击 Value(值)字段 resourceid 旁的下拉箭头,选择 Aggregate: Count(聚合:计数),然后选择 Count distinct(去重计数)。
  6. 在 Visual types(可视化元素类型)中选择 Vertical stacked bar chart(垂直堆叠柱状图)。
  7. 在可视化图表中,点击菜单选项 (...),然后选择 Hide legend(隐藏图例)。
  8. 选择该可视化元素,然后展开顶部面板中的 Properties(属性)选项。
  9. 将标题设置为 Regions。
  10. 展开 Legend(图例)选项,勾选 Show legend(显示图例)、Hide legend title(隐藏图例标题),并将 Position(位置)设为 Top(顶部)。
  11. 展开 Data labels(数据标签)选项,勾选 Show data labels(显示数据标签)和 Show totals(显示总计)。

第三个可视化图表:Instances status

  1. 取消选择当前可视化图表,然后点击空白区域,创建新的可视化图表。
  2. 点击 Fields list(字段列表)中的 instancestatus 字段。
  3. 选择 resourceid,并将其拖拽至 ADD DATA(添加数据)中的 Value(值)字段。
  4. 选择 accountid,将其拖拽至 Group/Color(分组/颜色)字段。
  5. 修改 resourceid 值。在 Fields list(字段列表)中,点击 Value(值)字段 resourceid 旁的下拉箭头,选择 Aggregate: Count(聚合:计数),然后选择 Count distinct(去重计数)。
  6. 在 Visual types(可视化元素类型)中,选择 Vertical stacked bar chart(垂直堆叠柱状图)。
  7. 在可视化图表中,点击菜单选项 (...),然后选择 Hide legend(隐藏图例)。
  8. 选择该可视化元素,然后展开顶部面板中的 Properties(属性)选项。
  9. 将标题设置为 Instances status。
  10. 展开 Legend(图例)选项,勾选 Show legend(显示图例)、Hide legend title(隐藏图例标题),并将 Position(位置)设为 Top(顶部)。
  11. 展开 Data labels(数据标签)选项,勾选 Show data labels(显示数据标签)和 Show totals(显示总计)。

第四个可视化图表:Compliance Status

  1. 取消选择当前可视化图表,然后点击空白区域,创建新的可视化图表。
  2. 点击 Fields list(字段列表)中的 status 字段。
  3. 选择 resourceid,并将其拖拽至 ADD DATA(添加数据)中的 Value(值)字段。
  4. 选择 accountid,将其拖拽至 Group/Color(分组/颜色)字段。
  5. 修改 resourceid 值。在 Fields list(字段列表)中,点击 Value(值)字段 resourceid旁的下拉箭头,选择 Aggregate: Count(聚合:计数),然后选择 Count distinct(去重计数)。
  6. 在 Visual types(可视化元素类型)中选择 Vertical stacked bar chart(垂直堆叠柱状图)。
  7. 在可视化图表中,点击菜单选项 (...),然后选择 Hide legend(隐藏图例)。
  8. 选择该可视化元素,然后打开顶部面板中的 Properties(属性)选项。
  9. 将标题设置为 Compliance Status。
  10. 展开 Legend(图例)选项,勾选 Show legend(显示图例)、Hide legend title(隐藏图例标题),并将 Position(位置)设为 Top(顶部)。
  11. 展开 Data labels(数据标签)选项,勾选 Show data labels(显示数据标签)和 Show totals(显示总计)。

实例详情

  1. 取消选择当前可视化图表,然后点击空白区域,创建新的可视化表格。
  2. 在 Fields list(字段列表)中点击 resourceid,然后在 Visual types(可视化元素类型)中选择 Table(表格)。
  3. 从 Fields list(字段列表)选择以下字段:accountid、region 和 name。
  4. 双击该可视化元素,将标题修改为 Instance Details,并设置为居中对齐。

筛选器

  1. 选择 OS Platform 可视化图表,然后点击顶部面板中的 Filter(筛选器)选项。
  2. 创建新的筛选器,并选择 CaptureDateTime。
  3. 创建筛选器后,点击菜单 (...),选择 Add to sheet(添加至工作表)。
  4. 打开 CaptureDateTime 筛选器,在顶部选择 All applicable visuals(所有适用的可视化元素)。
  5. 将筛选器添加至工作表后,在工作表中选择该筛选器,点击菜单 (...),然后选择 Pin to top(固定至顶部)。将在顶部创建一个包含筛选器的 Control(控件)面板。
  6. 按照上述步骤(1 至 5)创建新的 accountid 筛选器。
  7. 按照上述步骤(1 至 5)创建新的 region 筛选器。
  8. 按照上述步骤(1 至 5)创建新的 resourceid 筛选器。
  9. 按照上述步骤(1 至 5)创建新的 platformname 筛选器。
  10. 按照上述步骤(1 至 5)创建新的 status 筛选器。
  11. 按照上述步骤(1 至 5)创建新的 Name 筛选器。
  12. 建立筛选器之间的关联。对 accountid、region、resourceid、platformname、status和 Name筛选器执行以下步骤:
  13. 展开工作表顶部的 Controls(控件),选择筛选器,点击菜单 (...),然后选择 Edit(编辑)。
  14. 修改控件名称,使其与筛选器名称一致。
  15. 点击 Control Options(控件选项),选择 Show relevant values only(仅显示相关值),然后勾选选择所有筛选器的复选框,最后点击 Update(更新)和 Apply(应用)。

注意:对于 CaptureDateTime 筛选器的相关值,请选择与文本框值 CaptureDateTime 匹配的字段。

发布新建的 Systems Manager 实例概览仪表板

  1. 在 Analysis(分析)面板的右上角,点击 Share(共享),然后选择 Publish dashboard(发布仪表板)。
  2. 输入仪表板名称:SSM 实例概览,然后点击 Publish dashboard(发布仪表板)。

图 3:QuickSight 仪表板 – Systems Manager 实例概览

清理资源

测试完此解决方案后,请删除所有资源,以避免产生不必要的 AWS 资源费用。

删除管道

要删除所有资源,请按照从 AWS CloudFormation 控制台删除堆栈中的说明进行操作。删除堆栈时会删除所有相关资源。在删除堆栈之前,必须先删除 Amazon S3 存储桶中的所有对象。

总结

在本文中,我提供了一个 AWS CloudFormation 模板,用于动态构建 QuickSight 仪表板,可以使用该仪表板来实现 Systems Manager 的补丁和清单信息可视化。此外,本文还介绍了创建带有筛选器的 QuickSight 仪表板的详细步骤。

你可以直接使用这一模板,并按照步骤构建带有筛选器的 QuickSight 仪表板。不过,我建议根据自身需求开发自己的仪表板和筛选器。

如需了解更多信息,请参阅设置 AWS Systems Manager 用户指南、创建你的第一个堆栈操作指南和 Amazon QuickSight 数据分析入门指南。

更多教程

快速搭建容量高达 35GB 的免费个人网盘

本教程将介绍如何搭建一个没有使用限制的免费私人网盘。

构建企业专属智能客服机器人

本文将演示如何结合多种服务,打造企业专属的智能客服。

使用生成式 AI 构建多语言问答知识库

使用多种服务,构建可汇总搜索结果的多语言知识库。

查看全部教程 >>

免费套餐

AWS 海外区域

拓展海外业务或个人体验
免费使用 100 余种云产品或服务, 长达 12 个月

AWS 中国区域

发展中国业务
免费使用 40 余种核心云服务产品,长达 12 个月