AWS DataSync オンプレミスで稼働している DataSync Agent の死活監視を AWS 側で実現する方法
はじめに
オンプレミスから AWS DataSync でデータ転送するなら、DataSync Agent(仮想マシン)の状態をモニタリングしたくなりました。本記事では、ハイパーバイザー上で起動している DataSync Agent のモニタリング方法を紹介します。
なぜ DataSync Agent のモニタリングが必要になったのか
DataSync の CloudWatch メトリクスには DataSync Agent が死活に利用できる項目がありません。残念です。
当初は、タスク(バックアップのジョブ的なもの)の実行結果がERROR
になったときだけの判定で十分と考えていました。しかし、DataSync Agent がオフラインの場合、エラーにもならないことがわかりました。
詳細な動作については、以下の記事で解説されています。
エージェントがオフラインだとタスクが開始すらされませんね、困りました。
Lambda を定期実行してステータスをチェック
モニタリング方式の選定にあたり、以下の点を考慮しました。
- モニタリングは CloudWatch に集約したい
- オンプレミスの KVM ホストに AWS アクセスキーを保存する構成は極力避けたい
- ※ DataSync Agent を利用したデータ転送にはアクセスキーは不要です
- AWS の DataSync 側からステータスを確認する方式が望ましい
AWS SAM を使用して、以下のコンポーネントで Agent のモニタリングシステムを構築します。
- EventBridge による Lambda の定期実行
- AWS の DataSync 側で DataSync Agent のステータスチェック
- SNS 経由でのアラート通知
ソースコード
AWS SAM を使用しました。デプロイ方法は以下のリポジトリに README を参照してください。
デプロイ後に必要な作業
SNS
アラート通知先メールアドレスの登録は SNS の DataSyncAgentStatusNotification トピックにメールアドレスを登録してください。
エラーのときは以下の件名でメールが届きます。
ALARM: "DataSyncAgentOfflineAlarm" in Asia Pacific (Tokyo)
本文:
You are receiving this email because your Amazon CloudWatch Alarm "DataSyncAgentOfflineAlarm" in the Asia Pacific (Tokyo) region has entered the ALARM state, because "Threshold Crossed: 2 datapoints [0.0 (20/02/25 09:07:00), 0.0 (20/02/25 09:06:00)] were less than or equal to the threshold (0.0)." at "Thursday 20 February, 2025 09:08:33 UTC".
View this alarm in the AWS Management Console:
https://ap-northeast-1.console.aws.amazon.com/cloudwatch/deeplink.js?region=ap-northeast-1#alarmsV2:alarm/DataSyncAgentOfflineAlarm
Alarm Details:
- Name: DataSyncAgentOfflineAlarm
- Description:
- State Change: OK -> ALARM
- Reason for State Change: Threshold Crossed: 2 datapoints [0.0 (20/02/25 09:07:00), 0.0 (20/02/25 09:06:00)] were less than or equal to the threshold (0.0).
- Timestamp: Thursday 20 February, 2025 09:08:33 UTC
復旧時は以下の件名でメールが届きます。本文は同様の内容です。
OK: "DataSyncAgentOfflineAlarm" in Asia Pacific (Tokyo)
CloudWatch
毎時 00 分にエージェントの状態をチェックします。一度でもチェックが行われるとカスタム名前空間にDataSync
の表示がされます。
エージェントの ARN にチェックを入れてメトリクスが取れているか確認してください。0 がオフライン(異常)、1 がオンライン(正常)を示しています。
まとめ
おわりに
AWS SAM が大変便利でした。