Glueジョブの監視
AWS Glueはジョブを実行することで大規模なデータ加工を行うことができます。
オンデマンドでAWSマネジメントコンソールなどからGlueジョブを実行するケースもよくありますが、本番環境等では日次でGlueジョブをスケジュール実行するなどがよく見られる状況かと思います。
その場合にGlueジョブが失敗した場合の検知や失敗する前の状況の把握をする必要が出てくるのでGlueジョブの監視方法をまとめてみました。
今回はGlueのバッチジョブを対象としておりストリーミングジョブは対象としていません。(ただし、ストリーミングジョブでも監視方法はそこまで大きく変わらないと思います)
Glueジョブの出力情報
Glueジョブではログ、メトリクスなどいくつかの情報を出力しますが、そのうち監視に使用するもの使用しなくても良いものを整理してみました。
出力情報 | 出力箇所 | 用途 | 監視対象 |
---|---|---|---|
イベント | EventBridge | ジョブの失敗等のステータス確認 | YES |
メトリクス | CloudWatch Metrics | ジョブの失敗数、実行時間等の確認 | YES |
ログ | CloudWatch Logs | ジョブが出力するログメッセージ | NO |
Spark History Server Logs | S3 | ジョブが出力するSparkの詳細内容に関するログ | NO |
ログとSpark History Server Logsは監視では使用せず、他の情報でジョブの失敗等を検知した後にそのジョブの失敗原因を調査する目的で使用することが多いかと思います。
イベント情報に関してはジョブの失敗を検知できるので、この情報が主要な監視項目となります。
メトリクスに関してはジョブの実行時間等が確認できるのでダッシュボードを作成して長期的な傾向、例えば徐々にジョブの実行時間が長くなっているなど問題が起きそうな予兆を確認するなどの目的で使用します。
Glueジョブの監視項目
Glueジョブの以下の項目を監視しています(他の出力情報も場合によっては監視した方が有用かもしれません)。
出力情報 | 項目 | 説明 | 監視対応 |
---|---|---|---|
イベント | Glue Job State Change | State =SUCCEEDED、FAILED、TIMEOUT で発生 | 失敗とタイムアウトを検知して通知 |
メトリクス | glue.driver.aggregate.elapsedTime | ETL の経過時間 (ミリ秒単位) | ダッシュボードでモニタリング |
メトリクス | glue.driver.aggregate.numFailedTasks | 失敗したタスクの数 | ダッシュボードでモニタリング |
参考