AWS Database Migration Service
ユーザーガイド (Version API Version 2016-01-01)

AWS DMS タスクのモニタリング

タスクのステータスを確認し、タスクの統制テーブルをモニタリングすることで、タスクの進行状況を監視できます。統制テーブルの詳細については、「制御テーブルタスク設定」を参照してください。

Amazon CloudWatch を使用して、タスクの進行状況をモニタリングすることもできます。AWS マネジメントコンソール、AWS コマンドラインインターフェイス (CLI)、または AWS DMS API を使用して、タスクの進行状況、使用されているリソースとネットワーク接続をモニタリングできます。

最後に、テーブルの状態を表示することにより、タスクのソーステーブルの状態をモニタリングできます。

DMS コンソールの「最終更新」列は、テーブルに対して AWS DMS が最後にテーブル統計レコードを更新した時刻を示すのみであることに注意してください。これはテーブルの最終更新時間を示すものではありません。

詳細については、以下のトピックを参照してください。

タスクのステータス

タスクのステータスはタスクの状態を表します。以下の表では、タスクがなる得るステータスを示しています。

タスクのステータス 説明

作成

AWS DMS がタスクを作成中です。

実行中

タスクが指定された移行処理を実行中です。

停止

タスクが停止されました。

停止中

タスクが停止中です。これは通常、タスクでのユーザーによる介入を示します。

削除

タスクが (通常はユーザーによる介入のためリクエストから) 削除中です。

Failed

タスクが失敗しました。詳細については、タスクのログファイルを参照してください。

Starting

タスクがレプリケーションインスタンスに、さらにソースおよびターゲットエンドポイントに接続中です。フィルタと変換を適用中です。

準備完了

タスクの実行準備ができました。このステータスになるのは通常、"creating" 状態の後です。

変更中

タスクが (通常はユーザーによるタスク設定の変更アクションのため) 変更中です。

タスクのステータスバーで、タスクの進捗状況を予測できます。この予測の正確さはソースデータベースのテーブル統計の正確さによって異なります。テーブル統計が正確であればあるほど、正確に予測できます。予測された列の統計がないテーブルが 1 つだけのタスクでは、どのような種類であっても完了率の予測を提供できません。この場合、タスクのステータスと、ロードされた列の表示を使って、タスクが実際に実行されて進行していることを確認できます。

タスク実行中のテーブルの状態

AWS DMS コンソールは、移行中にテーブルの状態に関する情報を更新します。以下の表では、表示される可能性のある状態値を示しています。


                    AWS Database Migration Service レプリケーションインスタンス
州/地域 説明

テーブルが存在しません

AWS DMS がソースエンドポイントでテーブルを見つけられません。

ロード前

フルロードプロセスが有効になっていますが、まだ開始されていません。

Full load

全ロードプロセスが進行中です。

Table completed

全ロードが完了しました。

Table cancelled

テーブルのロードがキャンセルされました。

Table error

テーブルのロード時にエラーが発生しました。

Amazon CloudWatch を使用したレプリケーションモニタリングタスク

Amazon CloudWatch のアラームやイベントを使用して、移行をより詳細に追跡できます。Amazon CloudWatch の詳細については、『Amazon CloudWatch ユーザーガイド』の「Amazon CloudWatch、Amazon CloudWatch Events、Amazon CloudWatch Logs とは」をご覧ください。Amazon CloudWatch の使用には料金が発生することに注意してください。

AWS DMS コンソールには、次の図に示すように、タスクのステータス、完了率、経過時間、テーブルの統計を含めて、各タスクの基本的な CloudWatch 統計が表示されます。レプリケーションタスクを選択し、[Task monitoring] タブを選択します。


                AWS DMS モニタリング

AWS DMS コンソールで [Table statistics (テーブル統計)] タブを選択すると、挿入、削除、更新の数など、各テーブルのパフォーマンス統計が表示されます。


                AWS DMS モニタリング

加えて、[Replication Instance] ページからレプリケーションインスタンスを選択した場合、[Monitoring] タブを選択することでインスタンスのパフォーマンスメトリクスを表示できます。


                AWS DMS モニタリング

データ移行サービスメトリクス

AWS DMS には、次の統計情報が表示されます。

  • ホストメトリクス – Amazon CloudWatch により提供されるレプリケーションホストのパフォーマンスおよび使用状況の統計。使用可能なメトリクスの完全なリストについては、「レプリケーションインスタンスのメトリクス」を参照してください。

  • レプリケーションタスクメトリクス – 受信した変更とコミットされた変更、レプリケーションホストとソースおよびターゲットデータベースの間のレイテンシーなど、レプリケーションタスクの統計。使用可能なメトリクスの完全なリストについては、「レプリケーションタスクのメトリクス」を参照してください。

  • テーブルメトリクス – 挿入、更新、削除、完了した DDL ステートメントの数など、移行が進行中のテーブルの統計。

タスクメトリクスは、レプリケーションホストおよびソースエンドポイント間の統計と、レプリケーションホストおよびターゲットエンドポイント間の統計に分けられます。関連する 2 つの統計を一緒に追加することで、タスクの統計の合計を調べることもできます。たとえば、CDCLatencySource 値と CDCLatencyTarget 値を組み合わせることで、タスクの合計レイテンシー (レプリカラグ) を調べることができます。

タスクメトリック値は、ソースデータベースにおける現在のアクティビティの影響を受ける可能性があります。たとえば、トランザクションが開始したが、コミットされていない場合、CDCLatencySource メトリクスはトランザクションがコミットされるまで大きくなり続けます。

レプリケーションインスタンスの場合、FreeableMemory メトリクスには説明が必要です。解放可能なメモリは、実際の使用可能な空きメモリを示しているわけではありません。これは、解放して他の用途に使用できる現在使用中のメモリであり、レプリケーションインスタンスで使用されているバッファとキャッシュの組み合わせです。

FreeableMemory メトリクスに実際の使用可能な空きメモリは反映されませんが、FreeableMemory および SwapUsage メトリクスの組み合わせにより、レプリケーションインスタンスが過負荷になっているかどうかがわかります。

次の状態について、これらの 2 つのメトリクスをモニタリングします。

FreeableMemory メトリクスが 0 に近づいている。

SwapUsage メトリクスが増加または変動する。

これらの 2 つの状態のいずれかが表示された場合は、より大きなレプリケーションインスタンスへの移行を検討する必要があります。また、レプリケーションインスタンスで実行中のタスクの数とタイプを減らすことも検討してください。全ロードタスクは、変更をレプリケートするだけのタスクよりも多くのメモリを必要とします。

レプリケーションインスタンスのメトリクス

レプリケーションインスタンスのモニタリングには、次の統計に関する Amazon CloudWatch メトリクスが含まれています。

CPUUtilization

使用される CPU の量。

単位: バイト

FreeStorageSpace

使用可能なストレージ領域の容量。

単位: バイト

FreeableMemory

使用可能な RAM の容量。

単位: バイト

WriteIOPS

1 秒あたりのディスク I/O 操作の平均回数。

単位: Count/Second

ReadIOPS

1 秒あたりのディスク I/O 操作の平均回数。

単位: Count/Second

WriteThroughput

1 秒あたりのディスクへの平均書き込みバイト数。

単位: バイト/Second

ReadThroughput

1 秒あたりのディスクからの平均読み取りバイト数。

単位: バイト/Second

WriteLatency

1 回のディスク I/O (出力) 操作にかかる平均時間。

単位: ミリ秒

ReadLatency

1 回のディスク I/O (入力) 操作にかかる平均時間。

単位: ミリ秒

SwapUsage

レプリケーションインスタンスで使用されるスワップ領域の量。

単位: バイト

NetworkTransmitThroughput

モニタリングとレプリケーションに使用される顧客データベーストラフィックと AWS DMS トラフィックの両方を含む、レプリケーションインスタンスの送信ネットワークトラフィック。

単位: バイト/秒

NetworkReceiveThroughput

モニタリングとレプリケーションに使用される顧客データベーストラフィックと AWS DMS トラフィックの両方を含む、レプリケーションインスタンスの受信ネットワークトラフィック。

単位: バイト/秒

レプリケーションタスクのメトリクス

レプリケーションタスクのモニタリングには、次の統計のメトリクスが含まれています。

FullLoadThroughputBandwidthSource

ソースから受信した全ロードによるネットワーク帯域幅 (1 秒あたりの KB 数)。

FullLoadThroughputBandwidthTarget

ターゲットに送信される全ロードによるネットワーク帯域幅 (1 秒あたりの KB 数)。

FullLoadThroughputRowsSource

ソースから受信した全ロードによる変更 (1 秒あたりの行数)。

FullLoadThroughputRowsTarget

ターゲットに送信される全ロードによる変更 (1 秒あたりの行数)。

CDCIncomingChanges

ターゲットへの適用を待機している、特定の時点での変更イベントの合計数。これは、ソースエンドポイントのトランザクション変更レートの測定と同じではありません。通常、このメトリクスの多くは、AWS DMS がキャプチャされた変更をタイムリーに適用できず、ターゲットのレイテンシーが高くなっていることを示します。

CDCChangesMemorySource

メモリに累積され、ソースからのコミットを待機している行の数。

CDCChangesMemoryTarget

メモリに累積され、ターゲットへのコミットを待機している行の数。

CDCChangesDiskSource

ディスクに累積され、ソースからのコミットを待機している行の数。

CDCChangesDiskTarget

ディスクに累積され、ターゲットへのコミットを待機している行の数。

CDCThroughputBandwidthSource

ターゲットのネットワーク帯域幅 (KB/秒)。CDCThroughputBandwidth は、サンプリングポイントで帯域幅を記録します。ネットワークトラフィックが見つからない場合、値は 0 です。CDC は長時間実行トランザクションを発行しないため、ネットワークトラフィックは記録されない場合があります。

CDCThroughputBandwidthTarget

ターゲットのネットワーク帯域幅 (KB/秒)。CDCThroughputBandwidth は、サンプリングポイントで帯域幅を記録します。ネットワークトラフィックが見つからない場合、値は 0 です。CDC は長時間実行トランザクションを発行しないため、ネットワークトラフィックは記録されない場合があります。

CDCThroughputRowsSource

ソースから受信したタスクの変更 (1 秒あたりの行数)。

CDCThroughputRowsTarget

ターゲットに送信されるタスクの変更 (1 秒あたりの行数)。

CDCLatencySource

ソースエンドポイントからキャプチャされた最後のイベントと、AWS DMS インスタンスの現在のシステムタイムスタンプの間の間隔 (秒)。タスクの絞り込みによりソースから変更がキャプチャされない場合、この値はゼロに設定されます。

CDCLatencyTarget

ターゲットでコミットを待機中の最初のイベントタイムスタンプと、AWS DMS インスタンスの現在のタイムスタンプの間の間隔 (秒)。この値は、ターゲットによって処理されていないトランザクションがある場合に発生します。それ以外の場合、すべてのトランザクションが適用されると、ターゲットレイテンシーはソースレイテンシーと同じになります。ターゲットレイテンシーをソースレイテンシーより小さくすることはできません。

AWS DMS タスクログの管理

AWS DMS は、移行プロセス中に Amazon CloudWatch を使用してタスク情報を記録します。AWS CLI または AWS DMS API を使用すると、タスクログに関する情報を表示できます。これを行うには、describe-replication-instance-task-logs AWS CLI コマンドまたは AWS DMS API アクション DescribeReplicationInstanceTaskLogs を使用します。

たとえば、次の AWS CLI コマンドは、JSON 形式のタスクログメタデータを表示します。

$ aws dms describe-replication-instance-task-logs \ --replication-instance-arn arn:aws:dms:us-east-1:237565436:rep:CDSFSFSFFFSSUFCAY

コマンドからのレスポンス例を次に示します。

{ "ReplicationInstanceTaskLogs": [ { "ReplicationTaskArn": "arn:aws:dms:us-east-1:237565436:task:MY34U6Z4MSY52GRTIX3O4AY", "ReplicationTaskName": "mysql-to-ddb", "ReplicationInstanceTaskLogSize": 3726134 } ], "ReplicationInstanceArn": "arn:aws:dms:us-east-1:237565436:rep:CDSFSFSFFFSSUFCAY" }

このレスポンスでは、1 つのタスクログ (mysql-to-ddb) がレプリケーションインスタンスに関連付けられています。このログのサイズは、3,726,124 バイトです。

describe-replication-instance-task-logs により返される情報を使用して、タスクログの問題を診断およびトラブルシューティングできます。たとえば、タスクの詳細なデバッグログを有効にした場合、タスクログはすぐに大きくなるため、レプリケーションインスタンスの使用可能なストレージをすべて消費し、インスタンスステータスが storage-full に変化する可能性があります。タスクログを記述することによって、必要ないタスクログを判断できます。これにより、それらのタスクログを削除してストレージ領域を解放できます。

タスクのタスクログを削除するには、タスク設定 DeleteTaskLogs を true に設定します。たとえば、AWS CLI modify-replication-task コマンドまたは AWS DMS API ModifyReplicationTask アクションを使用してタスクを変更するときに、次の JSON はタスクログを削除します。

{ "Logging": { "DeleteTaskLogs":true } }

AWS CloudTrail を使用した AWS DMS API コールのログ作成

AWS DMS は AWS CloudTrail と統合されています。このサービスは、AWS DMS 内でユーザーやロール、または AWS のサービスによって実行されたアクションを記録するサービスです。CloudTrail は、AWS DMS コンソールからのコールや、AWS DMS API へのコード呼び出しを含む、AWS DMS のすべての API コールをイベントとしてキャプチャします。証跡を作成する場合は、AWS DMS のイベントなど、Amazon S3 バケットへの CloudTrail イベントの継続的な配信を有効にすることができます。証跡を設定しない場合でも、CloudTrail コンソールの [Event history (イベント履歴)] で最新のイベントを表示できます。CloudTrail によって収集された情報を使用して、リクエストの作成元の IP アドレス、リクエストの実行者、リクエストの実行日時などの詳細を調べて、AWS DMS に対してどのようなリクエストが行われたかを判断できます。

CloudTrail の詳細については、「AWS CloudTrail User Guide」を参照してください。

CloudTrail 内の AWS DMS 情報

CloudTrail は、アカウント作成時に AWS アカウントで有効になります。AWS DMS でアクティビティが発生すると、そのアクティビティは [Event history (イベント履歴)] の AWS の他のサービスのイベントとともに CloudTrail イベントに記録されます。最近のイベントは、AWS アカウントで表示、検索、ダウンロードできます。詳細については、「CloudTrail イベント履歴でのイベントの表示」を参照してください。

AWS DMS のイベントなど、AWS アカウントのイベントの継続的な記録については、証跡を作成します。証跡により、CloudTrail はログファイルを Amazon S3 バケットに配信できます。デフォルトでは、コンソールで証跡を作成するときに、証跡がすべてのリージョンに適用されます。証跡では、AWS パーティションのすべてのリージョンからのイベントがログに記録され、指定した Amazon S3 バケットにログファイルが配信されます。さらに、より詳細な分析と CloudTrail ログで収集されたデータに基づいた行動のためにその他の AWS サービスを設定できます。詳細については、以下のトピックを参照してください。

AWS DMS アクションはすべて CloudTrail によって記録されます。また、これらのアクションは AWS Database Migration Service API Referenceで説明されています。たとえば、CreateReplicationInstanceTestConnectionStartReplicationTask の各アクションを呼び出すと、CloudTrail ログファイルにエントリが生成されます。

各イベントまたはログエントリには、リクエストの生成者に関する情報が含まれます。この ID 情報は以下のことを確認するのに役立ちます。

  • リクエストが、ルートと IAM ユーザー認証情報のどちらを使用して送信されたか。

  • リクエストが、ロールとフェデレーティッドユーザーのどちらの一時的なセキュリティ認証情報を使用して送信されたか.

  • リクエストが、別の AWS サービスによって送信されたかどうか。

詳細については、「CloudTrail userIdentity 要素」を参照してください。

AWS DMS ログファイルエントリの概要

証跡は、指定した Amazon S3 バケットにイベントをログファイルとして配信できる設定です。CloudTrail ログファイルには、1 つ以上のログエントリが含まれます。イベントは任意の送信元からの単一のリクエストを表し、リクエストされたアクション、アクションの日時、リクエストのパラメータなどに関する情報が含まれます。CloudTrail ログファイルは、パブリック API 呼び出しの順序付けられたスタックトレースではないため、特定の順序では表示されません。

以下の例は、RebootReplicationInstance アクションの CloudTrail ログエントリを示しています。

{ "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AKIAIOSFODNN7EXAMPLE:johndoe", "arn": "arn:aws:sts::123456789012:assumed-role/admin/johndoe", "accountId": "123456789012", "accessKeyId": "ASIAYFI33SINADOJJEZW", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-08-01T16:42:09Z" }, "sessionIssuer": { "type": "Role", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::123456789012:role/admin", "accountId": "123456789012", "userName": "admin" } } }, "eventTime": "2018-08-02T00:11:44Z", "eventSource": "dms.amazonaws.com", "eventName": "RebootReplicationInstance", "awsRegion": "us-east-1", "sourceIPAddress": "72.21.198.64", "userAgent": "console.amazonaws.com", "requestParameters": { "forceFailover": false, "replicationInstanceArn": "arn:aws:dms:us-east-1:123456789012:rep:EX4MBJ2NMRDL3BMAYJOXUGYPUE" }, "responseElements": { "replicationInstance": { "replicationInstanceIdentifier": "replication-instance-1", "replicationInstanceStatus": "rebooting", "allocatedStorage": 50, "replicationInstancePrivateIpAddresses": [ "172.31.20.204" ], "instanceCreateTime": "Aug 1, 2018 11:56:21 PM", "autoMinorVersionUpgrade": true, "engineVersion": "2.4.3", "publiclyAccessible": true, "replicationInstanceClass": "dms.t2.medium", "availabilityZone": "us-east-1b", "kmsKeyId": "arn:aws:kms:us-east-1:123456789012:key/f7bc0f8e-1a3a-4ace-9faa-e8494fa3921a", "replicationSubnetGroup": { "vpcId": "vpc-1f6a9c6a", "subnetGroupStatus": "Complete", "replicationSubnetGroupArn": "arn:aws:dms:us-east-1:123456789012:subgrp:EDHRVRBAAAPONQAIYWP4NUW22M", "subnets": [ { "subnetIdentifier": "subnet-cbfff283", "subnetAvailabilityZone": { "name": "us-east-1b" }, "subnetStatus": "Active" }, { "subnetIdentifier": "subnet-d7c825e8", "subnetAvailabilityZone": { "name": "us-east-1e" }, "subnetStatus": "Active" }, { "subnetIdentifier": "subnet-6746046b", "subnetAvailabilityZone": { "name": "us-east-1f" }, "subnetStatus": "Active" }, { "subnetIdentifier": "subnet-bac383e0", "subnetAvailabilityZone": { "name": "us-east-1c" }, "subnetStatus": "Active" }, { "subnetIdentifier": "subnet-42599426", "subnetAvailabilityZone": { "name": "us-east-1d" }, "subnetStatus": "Active" }, { "subnetIdentifier": "subnet-da327bf6", "subnetAvailabilityZone": { "name": "us-east-1a" }, "subnetStatus": "Active" } ], "replicationSubnetGroupIdentifier": "default-vpc-1f6a9c6a", "replicationSubnetGroupDescription": "default group created by console for vpc id vpc-1f6a9c6a" }, "replicationInstanceEniId": "eni-0d6db8c7137cb9844", "vpcSecurityGroups": [ { "vpcSecurityGroupId": "sg-f839b688", "status": "active" } ], "pendingModifiedValues": {}, "replicationInstancePublicIpAddresses": [ "18.211.48.119" ], "replicationInstancePublicIpAddress": "18.211.48.119", "preferredMaintenanceWindow": "fri:22:44-fri:23:14", "replicationInstanceArn": "arn:aws:dms:us-east-1:123456789012:rep:EX4MBJ2NMRDL3BMAYJOXUGYPUE", "replicationInstanceEniIds": [ "eni-0d6db8c7137cb9844" ], "multiAZ": false, "replicationInstancePrivateIpAddress": "172.31.20.204", "patchingPrecedence": 0 } }, "requestID": "a3c83c11-95e8-11e8-9d08-4b8f2b45bfd5", "eventID": "b3c4adb1-e34b-4744-bdeb-35528062a541", "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }