本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Terraform 在 Amazon Managed Grafana 上自动摄取和可视化 Amazon MWAA 自定义指标
Faisal Abdullah 和 Satya Vajrapu,Amazon Web Services
Summary
此模式讨论如何使用 Amazon Managed Grafana 创建和监控 Amazon Managed Workflows for Apache Airflow(Amazon MWAA)摄取的自定义指标。Amazon MWAA 充当工作流程的协调器,它使用用 Python 编写脚本的有向无环图 (DAGs)。这种模式以监控自定义指标为中心,包括过去一小时内 DAGs 运行的总数、 DAGs 每小时通过和失败的计数以及这些进程的平均持续时间。此分析显示了 Amazon Managed Grafana 如何与 Amazon MWAA 集成,从而能够全面监控和洞察该环境中的工作流编排。
先决条件和限制
先决条件
AWS 账户 具有创建和管理以下内容所需的用户权限的活跃用户 AWS 服务:
AWS Identity and Access Management (IAM) 角色和策略
AWS Lambda
Amazon Managed Grafana
Amazon Managed Workflows for Apache Airflow (Amazon MWAA)
Amazon Simple Storage Service(Amazon S3)
Amazon Timestream
访问 Shell 环境,它可以是本地计算机上的终端,也可以是 AWS CloudShell。
安装了 Git 并安装和配置了最新版本的 AWS Command Line Interface (AWS CLI) 的 shell 环境。有关更多信息,请参阅 AWS CLI 文档 AWS CLI中的安装或更新到最新版本的。
安装了以下 Terraform 版本:
required_version = ">= 1.6.1, < 2.0.0"您可以使用 tfswitch在不同版本的 Terraform 之间切换。 已在中 AWS IAM Identity Center 为您配置身份源 AWS 账户。有关更多信息,请参阅 IAM Identity Center 文档中的在 IAM Identity Center 中确认身份源。您可以从默认 IAM Identity Center 目录的 Active Directory 或外部身份提供者 (IdP) 中进行选择,例如 Okta。有关更多信息,请参阅相关资源。
限制
有些 AWS 服务 并非全部可用 AWS 区域。有关区域可用性,请参阅按区域划分的AWS 服务
。有关特定端点,请参阅服务端点和配额,然后选择相应服务的链接。
产品版本
Terraform
required_version = ">= 1.6.1, < 2.0.0"Amazon Managed Grafana 9.4 或更高版本。此模式已在版本 9.4 上进行了测试。
架构
以下架构图重点介绍了解决方案中 AWS 服务 使用的架构。

上图中分步介绍了以下工作流:
Amazon MWAA 中的自定义指标源 DAGs 于在环境中执行的指标。指标以 CSV 文件格式上传到 Amazon S3 存储桶。以下内容 DAGs 使用 Amazon MWAA 的数据库查询功能:
run-example-dag– 此 DAG 包含定义一个或多个任务的示例 Python 代码。它每 7 分钟运行一次,并打印日期。打印日期后,DAG 会包含一项使执行的任务睡眠或暂停特定持续时间的任务。other-sample-dag– 此 DAG 每 10 分钟运行一次,并打印日期。打印日期后,DAG 会包含一项使执行的任务睡眠或暂停特定持续时间的任务。data-extract– 此 DAG 每小时运行一次,查询 Amazon MWAA 数据库并收集指标。收集完指标后,此 DAG 会将其写入到 Amazon S3 存储桶,以便进一步处理和分析。
为了简化数据处理,Lambda 函数在被 Amazon S3 事件触发时运行,这样便于将指标加载到 Timestream 中。
Timestream 作为数据来源集成到 Amazon Managed Grafana 中,来自 Amazon MWAA 的所有自定义指标都存储在那里。
用户可以查询数据并构造自定义控制面板,以可视化关键绩效指标,深入了解 Amazon MWAA 中的工作流编排。
工具
AWS 服务
AWS IAM Identity Center帮助您集中管理对所有应用程序 AWS 账户 和云应用程序的单点登录 (SSO) 访问权限。
AWS Lambda 是一项计算服务,可帮助您运行代码,无需预调配或管理服务器。它只在需要时运行您的代码,并自动进行扩展,因此您只需为使用的计算时间付费。在这种模式下, AWS Lambda 运行 Python 代码以响应 Amazon S3 事件并自动管理计算资源。
Amazon Managed Grafana 是一种完全托管式数据可视化服务,您可以使用该服务查询、关联和可视化您的指标、日志和跟踪,并发出提醒。此模式使用 Amazon Managed Grafana 创建用于指标可视化和提醒的控制面板。
Amazon Managed Workflows for Apache Airflow(Amazon MWAA)是 Apache Airflow 的托管式编排服务,让您能够更轻松地在云中大规模设置和操作数据管道。Apache Airflow
是一种开源工具,用于以编程方式编写、调度和监视统称为工作流的各种流程和任务序列。在这种模式中,示例 DAGs 和指标提取器 DAG 部署在 Amazon MWAA 中。 Amazon Simple Storage Service(Amazon S3)是一项基于云的对象存储服务,可帮助您存储、保护和检索任意数量的数据。在这种模式中,Amazon S3 用于以 CSV 格式存储 DAGs、脚本和自定义指标。
Amazon Timestream for LiveAnalytics 是一个快速、可扩展、完全托管、专门构建的时间序列数据库,可轻松存储和分析每天数万亿个时间序列数据点。Timestream LiveAnalytics 还与用于数据收集、可视化和机器学习的常用服务集成。在此模式中,它用于摄取生成的 Amazon MWAA 自定义指标。
其他工具
HashiCorp Terraform
是一款基础设施即代码(IaC)工具,可帮助您使用代码来预调配和管理云基础设施和资源。此模式使用 Terraform 模块在 AWS中自动预调配基础设施。
代码存储库
此模式的代码可在 visualize-amazon-mwaa-custom-metrics-stacks/Infra 文件夹包含以下内容:
所有资源的 Terraform 配置文件 AWS
grafana文件夹中的 Grafana 控制面板 .json 文件文件夹中的 Apache A DAGs irflow 的亚马逊托管工作流程
mwaa/dagsLambda 代码,用于解析 .csv 文件并将指标存储在 Timestream 数据库的
src文件夹中templates文件夹中的 IAM 策略 .json 文件
最佳实践
Terraform 必须存储有关您的托管基础设施和配置的状态,这样它才能将现实世界的资源映射到您的配置。默认情况下,Terraform 将状态存储在本地名为 terraform.tfstate 的文件中。确保 Terraform 状态文件的安全性和完整性至关重要,因为它可以保持基础设施的当前状态。有关更多信息,请参阅 Terraform 文档中的远程状态
操作说明
| Task | 说明 | 所需技能 |
|---|---|---|
部署基础设施。 | 要部署该解决方案基础设施,请执行以下操作:
| AWS DevOps |
| Task | 说明 | 所需技能 |
|---|---|---|
验证 Amazon MWAA 环境。 | 要验证 Amazon MWAA 环境,请执行以下操作:
| AWS DevOps,数据工程师 |
验证 DAG 计划。 | 要查看每个 DAG 时间表,请转到 Airflow UI 中的时间表选项卡。 以下 DAGs 每项都有预先配置的计划,该计划在 Amazon MWAA 环境中运行并生成自定义指标:
您还可以在运行列下查看每个 DAG 是否成功运行。 | AWS 数据工程师 DevOps |
| Task | 说明 | 所需技能 |
|---|---|---|
配置对 Amazon Managed Grafana 工作区的访问权限。 | Terraform 脚本创建了所需的 Amazon Managed Grafana 工作区、控制面板和指标页面。要配置访问权限以便于您查看它们,请执行以下操作:
| AWS DevOps |
安装 Amazon Timestream 插件。 | Amazon MWAA 自定义指标已加载到 Timestream 数据库中。您可以使用 Timestream 插件通过 Amazon Managed Grafana 控制面板对指标进行可视化。 要安装 Timestream 插件,请执行以下操作:
有关更多信息,请参阅 Amazon Managed Grafana 文档中的使用插件扩展您的工作区。 | AWS DevOps, DevOps 工程师 |
| Task | 说明 | 所需技能 |
|---|---|---|
查看 Amazon Managed Grafana 控制面板。 | 要查看摄取到 Amazon Managed Grafana 工作区的指标,请执行以下操作:
该控制面板指标页面显示以下信息:
| AWS DevOps |
自定义 Amazon Managed Grafana 控制面板。 | 要自定义控制面板以便将来进一步增强,请执行以下操作:
或者,此仪表板的源代码可在GitHub 存储库 | AWS DevOps |
| Task | 说明 | 所需技能 |
|---|---|---|
暂停 Amazon MWAA DAG 运行。 | 要暂停 DAG 运行,请执行以下操作:
| AWS DevOps,数据工程师 |
从 Amazon S3 存储桶中删除对象。 | 要删除 Amazon S3 存储桶 mwaa-events-bucket-* 和 mwaa-metrics-bucket-*,请按照 Amazon S3 文档中删除存储桶中有关使用 Amazon S3 控制台的说明进行操作。 | AWS DevOps |
销毁由 Terraform 创建的资源。 | 要销毁由 Terraform 创建的资源以及关联的本地 Terraform 状态文件,请执行以下操作:
| AWS DevOps |
问题排查
| 问题 | 解决方案 |
|---|---|
| AWS CLI 将您的版本升级到最新版本。 |
加载数据来源错误 -
| 这是间歇性错误。等待几分钟,然后刷新您的数据来源以查看列出的 Timestream 数据来源。 |
相关资源
AWS 文档
AWS 视频
使用 Amazon Managed Grafana 配置 IAM Identity Center 进行身份验证,如下面的视频
所示。
https://www.youtube-nocookie.com/embed/XX2Xcz-Ps9U? 控件=0
如果 IAM Identity Center 不可用,您还可以使用 Okta 之类的外部身份提供者(IdP)来集成 Amazon Managed Grafana 身份验证,如下面的视频
所示。
https://www.youtube-nocookie.com/embed/Z4 JHxl2xp Og? 控件=0
附加信息
您可以为您的 Amazon MWAA 环境创建全面的监控和提醒解决方案,从而实现主动管理并对潜在问题或异常情况做出快速响应。Amazon Managed Grafana 包括以下功能:
提醒 – 您可以根据预定义的阈值或条件在 Amazon Managed Grafana 中配置提醒。设置电子邮件通知,以便在某些指标超过或低于指定阈值时提醒相关的利益相关者。有关更多信息,请参阅 Amazon Managed Grafana 文档中的 Grafana 提醒。
集成 — 您可以将 Amazon Managed Grafana 与各种第三方工具( OpsGenie例如 PagerDuty、或 Slack)集成,以增强通知功能。例如,您可以设置 webhook 或与集成, APIs 以便根据在 Amazon Managed Grafana 中生成的警报在这些平台上触发事件和通知。此外,此模式还提供了用于创建 AWS 资源的GitHub 存储库