本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
监控 Amazon MWAA 上的控制面板和警报
适用于 Apache Airflow 的亚马逊托管工作流环境的环境详细信息页面包括内置 CloudWatch 指标控制面板和环境警报表。您可以使用这些功能直接在 Amazon MWAA 控制台中监控环境的运行状况,无需进行任何额外设置。
Apache Airflow 公开了几个进程的指标,包括 DAG 进程数、DAG 程序包的大小、当前正在运行的任务、任务失败和成功。当您创建环境时,Apache Airflow 会自动将您的亚马逊 MWAA 环境的指标发送到。 CloudWatch除了内置控制面板外,您还可以在亚马逊 CloudWatch 中构建自定义控制面板,并为特定指标添加警报。当警报出现在仪表板上时,它进入ALARM状态时会变成红色。这样可以更轻松地主动监控您的亚马逊 MWAA 环境的运行状况。
目录
查看指标仪表板
环境详细信息页面包括一个内置的 CloudWatch 指标仪表板,显示在控制台的CloudWatch 指标下方。此嵌入式 CloudWatch 仪表板无需任何额外设置即可显示您的环境的图表。
要在 CloudWatch 控制台中打开全套指标,请选择 “查看全部内容” CloudWatch 。
仪表板显示来自以下两个 CloudWatch 命名空间的指标:
-
AmazonMWAA— Apache 气流指标。 -
AWS/MWAA— 容器、队列和数据库指标。
您可以使用以下控件来更改仪表板的显示内容:
-
开启警报建议开关,仅显示推荐指标。当您打开此开关时,每个图表都会绘制其警报阈值作为注释。根据指标,注释显示如果
metric高于则为警报,如果metric低于则为警报。 -
使用指标分区过滤器仅显示特定组中的图表。可用组包括容器、数据库和队列、调度器、 DAG 处理、任务和触发器。
注意
如果您将环境配置为使用指标允许列表或阻止列表选项筛选其发布的 Apache Airflow 指标,则某些图表可能没有数据。
注意
要查看指标控制面板,您的 IAM 身份必须具有读取 CloudWatch 指标的权限cloudwatch:GetMetricData,包括cloudwatch:GetMetricStatistics、和cloudwatch:ListMetrics。没有这些权限,图表在没有数据的情况下呈现。
有关亚马逊 MWAA 发布的指标的完整列表,请参阅。中的 Apache Airflow 环境指标 CloudWatch
仪表板上显示的指标
仪表板将图表组织成六个部分,您可以使用指标部分进行筛选。它显示了一组精选的全环境指标;图表来自AmazonMWAA命名空间(Apache Airflow 指标)和AWS/MWAA命名空间(容器、队列和数据库指标)。下表列出了每个部分中的图表以及每个部分显示的 CloudWatch 指标。
| Section | 图表 | CloudWatch 指标 |
|---|---|---|
| 容器 | 调度器 CPU 利用率 | CPUUtilization |
| 容器 | 调度器内存利用率 | MemoryUtilization |
| 容器 | 工作程序 CPU 利用率 | CPUUtilization(BaseWorker 和 AdditionalWorker) |
| 容器 | 工作器内存利用率 | MemoryUtilization(BaseWorker 和 AdditionalWorker) |
| 容器 | Web 服务器 CPU 利用率 | CPUUtilization |
| 容器 | Web 服务器内存利用率 | MemoryUtilization |
| 容器 | 工作容器正在运行 | 源自CPUUtilization样本数 |
| 容器 | 工人心跳 | CeleryWorkerHeartbeat |
| 数据库和队列 | 数据库可用内存 | FreeableMemory |
| 数据库和队列 | 数据库 CPU 利用率 | CPUUtilization |
| 数据库和队列 | 数据库连接 | DatabaseConnections |
| 数据库和队列 | 数据库写入延迟 | WriteLatency |
| 数据库和队列 | 最早的排队任务年龄 | ApproximateAgeOfOldestTask |
| 调度器 | 调度器心跳 | SchedulerHeartbeat |
| 调度器 | 调度器关键部分持续时间 | CriticalSectionDuration |
| 调度器 | 调度器任务状态 | TasksExecutable, TasksStarving, TasksWithoutDagRun |
| 调度器 | 任务被外部杀死 | TasksKilledExternally |
| 调度器 | 执行者开启老虎机 | OpenSlots |
| DAG 处理 | DAG 解析时间 | TotalParseTime |
| DAG 处理 | DAG 袋尺寸 | DagBagSize |
| DAG 处理 | DAG 导入错误 | ImportErrors, DAGFileRefreshError |
| DAG 处理 | DAG 处理器运行状况 | ProcessorTimeouts, ManagerStalls |
| 任务 | 任务队列 | QueuedTasks, RunningTasks |
| 任务 | 任务成功与失败 | TaskInstanceSuccesses, TaskInstanceFailures |
| 任务 | 僵尸任务被杀死 | ZombiesKilled |
| 触发器 | 触发心跳 | TriggererHeartbeat |
| 触发器 | 触发结果 | TriggersSucceeded, TriggersFailed |
注意
触发器图表仅出现在较新的 Apache Airflow 版本上。触发结果需要 Apache Airflow v2.7.2 或更高版本,Triggerer 心跳需要 v2.8.1 或更高版本。
仪表板显示全环境的汇总指标。它不绘制 Apache Airflow 发布的每个 DAG、任务、池、操作员或 DAG 文件的高基数指标,它会绘制容器 CPU 和内存的图表,但不是每个容器指标。有关已发布指标的完整列表,请参阅中的 Apache Airflow 环境指标 CloudWatch和Amazon MWAA 的容器、队列和数据库指标。
创建和监控警报
环境详细信息页面包括一个警报窗格,您可以在其中创建和管理警报 CloudWatch,然后在上下文中对其进行监控。该窗格显示环境警报表,其中列出了归因于环境的 CloudWatch 警报。Amazon MWAA 按 CloudWatch 命名空间和Environment维度对这些警报进行匹配,因此该表包含您自己编写的警报,而不仅仅是推荐的警报。
窗格标题显示了当前处于该ALARM状态的环境警报数量的 In 警报计数。环境警报表包含以下各列。
| Name | Status | 条件 | 处理建议 | 上次更新时间 |
|---|---|---|---|---|
| 警报名称,链接到 CloudWatch 控制台中的警报。 | 警报状态:警报中、正常、数据不足。 | 警报条件,如其中的n数据点所示。duration |
警报的操作,例如通知 SNS 主题 topic,如果警报没有操作,则为 -。 |
上次更新警报的日期和时间。 |
注意
要查看此表中的警报,您必须具有cloudwatch:DescribeAlarms权限。
如果环境没有警报,则环境警报表为空,它为创建推荐警报以开始监控环境提供了指导。
警报窗格提供以下两个按钮:
-
创建推荐警报 -在新选项卡中打开 CloudFormation 快速创建堆栈。该堆栈被命名
MWAA-alarms-并为环境创建了一组标准的推荐警报。environment-name -
在控制台中管理 CloudWatch -在 CloudWatch 控制台中打开警报页面。
创建推荐警报
-
打开 Amazon MWAA 控制台
,然后选择您的环境以打开其详细信息页面。 -
在 “监控” 视图中,找到 “警报” 窗格。
-
选择创建推荐警报。 CloudFormation 快速创建堆栈将在新的浏览器选项卡中打开。
-
在 CloudFormation 控制台中查看堆栈。如果出现提示,请选择 CloudFormation 可能创建 IAM 资源的确认。
-
选择创建堆栈。
CloudFormation 创建堆栈后,警报会出现在环境警报表和 CloudWatch 控制台中。有关每种警报状态含义的更多信息,请参阅警报状态概述。
建议的警报
当您选择 “创建推荐警报” 时,该 CloudFormation 模板会创建以下警报。 CloudWatch 在 5 分钟(300 秒)的时间段内评估所有这些警报。
| 警报 | 指标 | 阈值条件 |
|---|---|---|
| 调度器心跳 | SchedulerHeartbeat |
2 个数据点中的 2 个的总和 < 1;丢失的数据被视为警报。 |
| 最早的排队任务年龄 | ApproximateAgeOfOldestTask |
3 个数据点中的 3 个的最大值大于 1800 秒。 |
| 调度器 CPU 利用率 | CPUUtilization(调度器) |
3 个数据点中 3 个的平均值大于 95%。 |
| 调度器内存利用率 | MemoryUtilization(调度器) |
3 个数据点中 3 个的平均值大于 95%。 |
| 工作程序 CPU 利用率 | CPUUtilization (BaseWorker) |
6 个数据点中的 6 个的平均值大于 95%。 |
| 工作器内存利用率 | MemoryUtilization (BaseWorker) |
6 个数据点中的 6 个的平均值大于 95%。 |
| Web 服务器 CPU 利用率 | CPUUtilization (WebServer) |
3 个数据点中 3 个的平均值大于 95%。 |
| Web 服务器内存利用率 | MemoryUtilization (WebServer) |
3 个数据点中 3 个的平均值大于 95%。 |
| 数据库 CPU 利用率 | CPUUtilization(作家) |
3 个数据点中 3 个的平均值大于 95%。 |
| 数据库可用内存 | FreeableMemory(作家) |
3 个数据点中的 3 个的平均值 < 512 MiB。 |
警报状态概述
指标警报可能具有以下几种状态:
-
OK– 指标或表达式在定义的阈值范围内。 -
ALARM– 指标或表达式超出定义的阈值。 -
INSUFFICIENT_DATA(数据不足) – 警报刚刚启动,指标不可用,或者指标没有足够的数据以确定警报状态。
自定义控制面板和警报示例
您可以将自己的控制面板和警报定义为基础设施即代码,以编程方式构建自定义仪表板或对多个 Amazon MWAA 环境的监控进行标准化。作为环境详细信息页面上的内置仪表板的替代方案,以下教程和 CloudFormation 模板创建了自定义监控面板。此控制面板显示您的亚马逊 MWAA 环境的选定指标图表。
关于这些指标
以下列表描述了通过本节中的教程和模板定义在自定义控制面板中创建的每个指标。
-
QueuedTasks-处于排队状态的任务数量。对应于
executor.queued_tasksApache Airflow 指标。 -
TasksPending-执行器中待处理的任务数量。对应于
scheduler.tasks.pendingApache Airflow 指标。注意
不适用于 Apache Airflow v2.2 及更高版本。
-
RunningTasks-在执行器中运行的任务数量。对应于
executor.running_tasksApache Airflow 指标。 -
SchedulerHeartbeat-Apache Airflow 在调度程序任务上执行的签入次数。与
scheduler_heartbeatApache Airflow 指标相对应。 -
TotalParseTime-一次扫描和导入所有 DAG 文件所花费的秒数。对应于
dag_processing.total_parse_timeApache Airflow 指标。
关于控制面板
下图显示了根据本节中的教程和模板定义创建的监控面板。
使用 AWS 教程
您可以使用以下 AWS 教程为当前部署的任何 Amazon MWAA 环境自动创建运行状况控制面板。它还会在所有 Amazon MWAA 环境中为不健康的工作人员和调度程序心跳故障创建 CloudWatch 警报。
使用 CloudFormation
您可以使用本节中的 CloudFormation 模板定义在中创建监控面板 CloudWatch,然后在 CloudWatch 控制台上添加警报,以便在指标超过特定阈值时接收通知。要使用此模板定义创建堆栈,请参阅在 CloudFormation 控制台上创建堆栈。要向控制面板添加警报,请参阅使用警报。
AWSTemplateFormatVersion: "2010-09-09" Description: Creates MWAA Cloudwatch Dashboard Parameters: DashboardName: Description: Enter the name of the CloudWatch Dashboard Type: String EnvironmentName: Description: Enter the name of the MWAA Environment Type: String Resources: BasicDashboard: Type: AWS::CloudWatch::Dashboard Properties: DashboardName: !Ref DashboardName DashboardBody: Fn::Sub: '{ "widgets": [ { "type": "metric", "x": 0, "y": 0, "width": 12, "height": 6, "properties": { "view": "timeSeries", "stacked": true, "metrics": [ [ "AmazonMWAA", "QueuedTasks", "Function", "Executor", "Environment", "${EnvironmentName}" ] ], "region": "${AWS::Region}", "title": "QueuedTasks ${EnvironmentName}", "period": 300 } }, { "type": "metric", "x": 0, "y": 6, "width": 12, "height": 6, "properties": { "view": "timeSeries", "stacked": true, "metrics": [ [ "AmazonMWAA", "RunningTasks", "Function", "Executor", "Environment", "${EnvironmentName}" ] ], "region": "${AWS::Region}", "title": "RunningTasks ${EnvironmentName}", "period": 300 } }, { "type": "metric", "x": 12, "y": 6, "width": 12, "height": 6, "properties": { "view": "timeSeries", "stacked": true, "metrics": [ [ "AmazonMWAA", "SchedulerHeartbeat", "Function", "Scheduler", "Environment", "${EnvironmentName}" ] ], "region": "${AWS::Region}", "title": "SchedulerHeartbeat ${EnvironmentName}", "period": 300 } }, { "type": "metric", "x": 12, "y": 0, "width": 12, "height": 6, "properties": { "view": "timeSeries", "stacked": true, "metrics": [ [ "AmazonMWAA", "TasksPending", "Function", "Scheduler", "Environment", "${EnvironmentName}" ] ], "region": "${AWS::Region}", "title": "TasksPending ${EnvironmentName}", "period": 300 } }, { "type": "metric", "x": 0, "y": 12, "width": 24, "height": 6, "properties": { "view": "timeSeries", "stacked": true, "region": "${AWS::Region}", "metrics": [ [ "AmazonMWAA", "TotalParseTime", "Function", "DAG Processing", "Environment", "${EnvironmentName}" ] ], "title": "TotalParseTime ${EnvironmentName}", "period": 300 } } ] }'
删除指标和控制面板
如果您删除亚马逊 MWAA 环境,相应的控制面板也会被删除。 CloudWatch 指标存储十五 (15) 个月,无法删除。 CloudWatch 控制台将指标搜索限制在上次采集指标后的两 (2) 周内,以确保显示您的亚马逊 MWAA 环境的最新实例。要了解更多信息,请参阅亚马逊 CloudWatch 常见问题解答
接下来做什么?
-
了解如何创建 DAG 来查询您的环境的 Amazon Aurora PostgreSQL 元数据数据库并将自定义指标发布到 CloudWatch 中。使用 DAG 在 CloudWatch 中编写自定义指标