[英]Is there a way to publish custom metrics from AWS Glue jobs?
我正在使用 AWS Glue 作業跨 S3 存儲桶移動和轉換數據,我想構建自定義累加器來監控我接收和發送的行數以及其他自定義指標。 監控這些指標的最佳方式是什么? 根據此文檔: https://docs.aws.amazon.com/glue/latest/dg/monitoring-awsglue-with-cloudwatch-metrics.html我可以跟蹤膠水作業的一般指標,但沒有似乎是通過 cloudwatch 發送自定義指標的好方法。
考慮在您的 AWS Glue 作業上啟用連續日志記錄。 這將允許您通過進行自定義日志記錄。 雲觀察。 自定義日志記錄可以包括行數等信息。
進一步來說
logger = glueContext.get_logger()
logger.info("Custom logging message that will be sent to CloudWatch")
您要將信息記錄到 CloudWatch 的位置。 例如,如果我有一個名為df
的數據框,我可以通過添加logger.info("Row count of df " + str(df.count()))
將行數記錄到 CloudWatch 您的日志消息將位於 CloudWatch 日志組/aws-glue/jobs/logs-v2
下的日志 stream 名為glue_run_id
-driver
。
您還可以參考 AWS 文檔為 AWS Glue 作業啟用連續日志記錄的“使用自定義腳本記錄器記錄應用程序特定消息”部分,了解有關應用程序特定日志記錄的更多信息。
我做過很多類似的項目,每個微批次可以是:
您的用例可以分為三個問題:
task_id
metrics
,你需要為這個指標數據定義一個簡單的字典結構在某些業務用例中,您還需要存儲狀態信息以跟蹤每個輸入,它們是否成功? 失敗的? 進行中? 卡住? 並且您可能想要控制重試和並發控制(避免多個工作人員處理同一輸入)
DynamoDB 是此類用例的完美后端。 這是一個超級快,沒有操作,隨你付 go,自動縮放鍵值存儲。
有一個 Python 庫實現了這個模式https://github.com/MacHu-GWU/pynamodb_mate-project/blob/master/examples/patterns/status-tracker.ipynb
這是一個例子:
def glue_job() -> dict:
...
return your_metrics
給定一個輸入,計算task id
標識符,那么你只需要
tracker = Tracker.new(task_id)
# start the job, it will succeed
with tracker.start_job():
# do some work
your_metrics = glue_job()
# save your metrics in dynamodb
tracker.set_data(your_metrics)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.