如何无需Lambda从CloudWatch Metrics获取Glue作业运行关键信息?
解决Glue作业关键信息无法通过CloudWatch Metrics获取的简便思路
方法1:直接用CloudWatch Insights查询Glue作业日志
Glue作业默认会把运行日志同步到CloudWatch Logs,你可以通过CloudWatch Insights写查询语句直接提取作业名称、状态、起止时间这些信息:
- 示例查询语句:
fields @timestamp, message | filter message matches /Job Name: .+/ or message matches /Job Run State: .+/ or message matches /Started running/ or message matches /Completed running/ | sort @timestamp desc
还能通过日志里的Job Run ID关联起止时间,计算作业耗时。如果需要定期统计,可将Insights查询保存为CloudWatch仪表盘,或者设置自动导出结果到S3做批量分析。
方法2:用AWS CLI/SDK拉取作业运行历史并推送自定义指标
无需Lambda,直接通过AWS CLI或SDK调用GetJobRuns接口获取作业运行数据,再手动/脚本推送CloudWatch自定义指标:
- 拉取作业运行信息的CLI命令:
aws glue get-job-runs --job-name your-target-job --max-items 20
提取返回结果里的JobName、JobRunState、StartedOn、CompletedOn字段,计算耗时后,用以下命令推送到CloudWatch:
aws cloudwatch put-metric-data --namespace "GlueJobCustomMetrics" --metric-data file://metric-data.json
适合非实时场景,比如每天定时跑一次本地脚本即可完成数据同步。
方法3:利用Glue Studio内置监控面板
如果用Glue Studio创建作业,控制台自带的作业监控面板可直接查看每个作业的运行状态、起止时间、耗时,无需额外配置。若要整合到自有监控系统,还能将该面板配置导出到CloudWatch仪表盘。
方法4:开启Glue作业报告功能
在Glue作业配置中启用作业报告,它会把作业的详细元数据(名称、状态、时间、耗时等)导出到指定S3路径(JSON/CSV格式)。你可以用Athena直接查询S3中的报告数据生成可视化报表,或通过Athena联合查询同步数据到CloudWatch Metrics。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

