企业级Azure Data Factory与Azure Databricks日志管理方案咨询
企业级Azure Data Factory与Databricks日志管理规范建议
一、ADF侧日志管理
- 核心日志采集与存储
- 启用ADF的诊断设置,将管道运行日志、活动日志、触发器日志统一发送至Azure Storage Account或Azure Log Analytics Workspace。优先选择Log Analytics,支持后续的查询、告警与可视化。
- 按环境(生产/测试)、业务线划分日志存储容器或Log Analytics表,避免日志混乱。
- 日志增强
- 在ADF管道中添加自定义属性,比如业务ID、数据批次号、责任人信息,通过
@pipeline().RunId关联到每个活动日志,方便后续溯源。 - 利用ADF的Web活动或Execute Pipeline活动传递上下文信息,确保跨管道的日志链路完整。
- 在ADF管道中添加自定义属性,比如业务ID、数据批次号、责任人信息,通过
- 告警与监控
- 基于Log Analytics创建告警规则,针对管道失败、活动超时、数据量异常等场景触发通知(邮件/Teams)。
- 构建自定义仪表板,展示管道成功率、运行时长趋势、失败Top原因等关键指标。
二、Databricks侧日志管理
- 笔记本执行日志标准化
- 在Databricks笔记本开头定义统一的日志函数,比如使用Python的
logging模块,输出包含笔记本名称、运行ID、时间戳、日志级别的结构化日志。示例代码:import logging logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO) notebook_path = dbutils.notebook.entry_point.getDbutils().notebook().getContext().notebookPath().get() run_id = dbutils.notebook.entry_point.getDbutils().notebook().getContext().runId().get() logger = logging.getLogger(notebook_path) logger.info(f"Notebook started with run ID: {run_id}") - 将笔记本日志输出到ADF指定的存储位置,或者直接发送到Log Analytics,通过RunId与ADF日志关联。
- 在Databricks笔记本开头定义统一的日志函数,比如使用Python的
- 集群与作业日志管理
- 启用Databricks集群的日志配置,将集群日志、作业日志存储到Azure Storage的专用容器,按集群ID、作业ID分目录归档。
- 利用Databricks的作业API或Delta Lake记录作业的输入输出数据量、处理时长等元数据,补充日志维度。
- 权限与合规
- 限制日志目录的访问权限,仅允许运维、监控团队读取;对敏感日志(如数据内容)进行脱敏处理。
- 按企业合规要求设置日志保留周期,比如生产环境保留180天,测试环境保留30天。
三、跨平台日志关联与分析
- 通过ADF RunId和Databricks RunId作为关联键,在Log Analytics中编写Kusto查询串联整个数据流程的日志,比如:
AzureDiagnostics | where ResourceProvider == "Microsoft.DataFactory" and OperationName == "PipelineRunCompleted" | join kind=inner ( DatabricksWorkspaceLogs | where Category == "notebook" ) on $left.RunId == $right.adf_run_id | project TimeGenerated, PipelineName, NotebookPath, Status, Message - 定期进行日志审计,识别异常行为(如频繁失败、未授权访问),优化数据流程性能。
内容的提问来源于stack exchange,提问作者Mohamed Mokhtar
相关产品推荐
相关产品推荐

