你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

将 Airflow 日志与 Azure Monitor 集成

本文介绍了如何开始将 Microsoft Azure Data Manager for Energy 实例的 Airflow 日志收集到 Azure Monitor 中。 此集成功能可帮助调试 Airflow DAG(定向无环图)运行失败的情况。

先决条件

  • 现有的 Log Analytics 工作区。 此工作区用于使用 Log Analytics 工作区中的 Kusto 查询语言 (KQL) 查询编辑器查询 Airflow 日志。 有用资源:在 Azure 门户中创建 Log Analytics 工作区

  • 现有存储帐户:它将用于存储 Airflow 日志的 JSON 转储。 存储帐户不必与 Log Analytics 工作区在同一订阅中。

启用诊断设置,可用于收集存储帐户中的日志

每个 Azure Data Manager for Energy 实例都内置了 Azure 数据工厂工作流编排管理器(由 Apache Airflow 提供支持)实例。 我们收集 Airflow 日志,用于内部故障排除和调试目的。 可以通过以下方式将 Airflow 日志与 Azure Monitor 集成:

  • 存储帐户
  • Log Analytics 工作区

若要通过上述两个选项中的任何一个访问日志,需要创建诊断设置。 每个诊断设置都有三个基本组成部分:

组成部分 说明
Name 这是诊断日志的名称。 确保为每个日志设置了一个唯一名称。
类别 要发送到每个目标的日志类别。 每个 Azure 服务的类别集将有所不同。 访问:支持的资源日志类别
目标 要将日志发送到的一个或多个目标。 所有 Azure 服务共享同一组可能的目标。 每个诊断设置都可以定义一个或多个目标,但不能定义特定类型的多个目标。 它应该是存储帐户、事件中心命名空间或事件中心。

请按照以下步骤设置诊断设置:

  1. 打开 Microsoft Azure Data Manager for Energy 的概述

  2. 从左侧面板中选择“诊断设置”

    Azure Monitor 诊断设置概述页的屏幕截图。该页面显示了现有诊断设置的列表以及添加新设置的选项。

  3. 选择“添加诊断设置”

  4. 在“日志”下选择“Airflow 任务日志”

  5. 选择“存档到存储帐户”

    创建诊断设置以将日志存档到存储帐户的屏幕截图。该图像显示了针对诊断设置选择的订阅和存储帐户。

  6. 验证要在其中存档日志的订阅和存储帐户。

创建用于将 Airflow 任务日志存档到存储帐户的诊断设置后,可以导航到存储帐户“概述”页。 然后,可以使用左侧面板中的“存储浏览器”查找要调查的正确的 JSON 文件。 从按年到按月再到按天,不同目录的浏览是很直观的。

  1. 浏览左侧面板上的“容器”

    浏览存储帐户的容器中已存档日志的屏幕截图。该容器将显示所有已设置源中的日志。

  2. 打开右侧的信息窗格。 它包含用于在本地保存日志文件的“下载”按钮。

  3. 可以在任何编辑器中分析已下载日志。

启用诊断设置可将日志与 Log Analytics 工作区集成

可以使用 Microsoft Azure Data Manager for Energy 实例概述页面左侧面板下的诊断设置,将 Airflow 日志与 Log Analytics 工作区集成。

用于创建诊断设置的屏幕截图。它显示了用于选择要与之集成的订阅和 Log Analytics 工作区的选项。

在 Log Analytics 工作区中使用集成 Airflow 日志

使用 Kusto 查询语言 (KQL) 从 Log Analytics 工作区检索有关收集的 Airflow 日志的所需数据。 可以将预生成的示例查询加载到 Log Analytics 工作区,也可以创建自己的查询。

Azure Monitor 中用于查看已收集日志的 Log Analytics 页的屏幕截图。在日志管理下会显示来自所有源的表。

  1. 加载预生成的查询:从资源菜单中选择日志。 Log Analytics 随即打开,其中包含“查询”窗口,该窗口中包括针对资源类型预生成的查询。 浏览可用的查询。 确定要运行的查询,然后选择“运行”。 该查询将添加到查询窗口,然后会返回结果。

  2. 在查询编辑器中编写查询:可以在 Log Analytics 工作区的查询编辑器中复制、粘贴和编辑以下查询,或以 KQL 编写查询。

示例查询

此查询返回属于错误级别的所有 Airflow 日志。 可以通过添加(取消评论)来筛选结果,其中包括适用于 Azure Data Manager for Energy 实例名称的子句和适用于 DAG 运行的相关 ID。


OEPAirFlowTask
| extend ResourceName = tostring(split(_ResourceId , '/')[-1])
// | where ResourceName == "<the name of ADME instance>"        // to filter on resourceName replace <...> and uncomment line
// | where CorrelationId == "<DAG run's runId>"                 // to filter on correlationID replace <...> with correlationId (same as runId) - we have created a duplicate for to maintain consistency of column name across all services 
| where LogLevel  == "ERROR"
| project TimeGenerated, DagName, LogLevel, DagTaskName, CodePath, Content

此查询列出了上述 Azure Data Manager for Energy 资源中的所有 DAG 运行及其相应的关联 ID。


OEPAirFlowTask
| extend ResourceName = tostring(split(_ResourceId , '/')[-1])
// | where ResourceName == "<the name of ADME instance>"        // to filter on resourceName replace <...> and uncomment line
| distinct DagName, CorrelationId                               // correlationId is same as runId - we have created a duplicate for consistency in search across logs of all services 
| sort by DagName asc

我们添加了文档,可帮助使用 Log Analytics 工作区中收集的 Airflow 日志对清单引入过程进行故障排除

后续步骤

收集资源日志后,请创建日志查询警报,以便在日志数据中识别出需要关注的数据时主动接收通知。