Stay organized with collections
Save and categorize content based on your preferences.
Database Migration Service collects and displays migration job metrics that represent the
health and progress of your data migration process. This page describes the
following areas associated with migration job metrics:
Metrics available in Cloud Monitoring describes all metrics
related to migration job performance, including the metrics surfaced from
the PostgreSQL destination cluster.
Metrics available on the migration job details page
The migration job details page shows several diagrams that can help you understand
the current state and progress of your migration job. Some diagrams provide
database-level information, while others focus on table-level data.
Figure 1. Sample observability diagrams in Database Migration Service.
(click to enlarge)
Expand the following sections to learn more about each diagram and its associated
metric.
Throughput
The Throughput diagram uses the
migration_job/write_bytes_count metric to represent
how much data (in bytes) Database Migration Service has written to your destination
database. This metric is sampled every 60 seconds. You can use it to observe
the write speed of your migration.
This metric is available in the aggregated view, as well as separately
for each table included in your migration job.
Full dump volume
The Full dump volume diagram shows the progress of the full dump phase
expressed as the percentage of total full dump data migrated.
This metric is available in the aggregated view, as well as separately
for each table included in your migration job.
The aggregated view diagram uses the
migration_job/fulldump_progress_percentage metric.
The table-level diagrams use the
migration_job/fulldump_progress_percentage_per_object metric.
Storage usage in total bytes
The Storage usage in total bytes diagram uses the AlloyDB for PostgreSQL
cluster/storage/usage metric to show how much data
(in bytes) is stored in the migrated database in your destination
AlloyDB for PostgreSQL instance. You can use this information to estimate the progress
of your migration job.
Replication delay
The Replication delay diagram uses the
migration_job/max_replica_sec_lag metric to represent
the time difference between the moment when Database Migration Service starts
reading Change Data Capture (CDC) information in your source, and the moment
when that information is fully replicated in your destination.
You can use this information to estimate when to
promote the migration job
(you want to begin the cutoff process when replication lag is the lowest).
View metrics on the migration job details page
To view metric diagrams on the migration job details page, perform the following
steps:
In the Google Cloud console, go to the Migration jobs page.
Progress percentage of the initial fulldump of the migration job.. Sampled every 60 seconds. After sampling, data is not visible for up to 180 seconds.
migration_job/fulldump_progress_percentage_per_objectBETA(project) Fulldump progress percentage per object
Progress percentage of the initial fulldump of a single table in a migration job. Sampled every 60 seconds. After sampling, data is not visible for up to 180 seconds.
Number of bytes written to the destination. Sampled every 60 seconds. After sampling, data is not visible for up to 180 seconds. database: Database name.
migration_job/max_replica_bytes_lagBETA Max lag bytes of the migration job data.
Current replication lag, aggregated across all of the migration job's data. Sampled every 60 seconds. After sampling, data is not visible for up to 180 seconds. database: Database name.
migration_job/max_replica_sec_lagBETA Max lag in seconds of the migration job data
Current replication lag, aggregated across all of the migration job's data. Sampled every 60 seconds. After sampling, data is not visible for up to 180 seconds. database: Database name.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-05 UTC."],[[["\u003cp\u003eThis document outlines the metrics available for monitoring heterogeneous SQL Server to AlloyDB for PostgreSQL migrations using Database Migration Service, which is currently in a pre-GA stage.\u003c/p\u003e\n"],["\u003cp\u003eThe migration job details page offers visual diagrams, including Throughput, Storage usage in total bytes, and Replication delay, to observe the migration's current state and progress for each database involved.\u003c/p\u003e\n"],["\u003cp\u003eThroughput measures the data written to the destination database, Storage usage tracks the data stored in the destination AlloyDB instance, and Replication delay shows the time difference between data reading in the source and full replication in the destination.\u003c/p\u003e\n"],["\u003cp\u003eCloud Monitoring provides additional metrics like \u003ccode\u003ewrite_bytes_count\u003c/code\u003e, \u003ccode\u003emax_replica_bytes_lag\u003c/code\u003e, and \u003ccode\u003emax_replica_sec_lag\u003c/code\u003e, alongside the AlloyDB \u003ccode\u003ecluster/storage/usage\u003c/code\u003e metric, for a comprehensive view of the migration job performance.\u003c/p\u003e\n"],["\u003cp\u003eThe migration job metrics are sampled every 60 seconds, with data visibility delayed by up to 180 seconds post-sampling, and can be used to inform key decisions such as when to promote the migration job.\u003c/p\u003e\n"]]],[],null,["Database Migration Service collects and displays migration job metrics that represent the\nhealth and progress of your data migration process. This page describes the\nfollowing areas associated with migration job metrics:\n\n- [Metrics available on the migration job details page](#job-details-page) covers the\n observability information you can view directly in Database Migration Service\n on the migration job details page.\n\n- [Metrics available in Cloud Monitoring](#monitoring-view) describes all metrics\n related to migration job performance, including the metrics surfaced from\n the PostgreSQL destination cluster.\n\nMetrics available on the migration job details page\n\nThe migration job details page shows several diagrams that can help you understand\nthe current state and progress of your migration job. Some diagrams provide\ndatabase-level information, while others focus on table-level data.\n[](#lightbox-trigger) **Figure 1.** Sample observability diagrams in Database Migration Service. (click to enlarge)\n\nExpand the following sections to learn more about each diagram and its associated\nmetric. \n\nThroughput\n\nThe **Throughput** diagram uses the\n[`migration_job/write_bytes_count`](/monitoring/api/metrics_gcp_d_h#datamigration/migration_job/write_bytes_count) metric to represent\nhow much data (in bytes) Database Migration Service has written to your destination\ndatabase. This metric is sampled every 60 seconds. You can use it to observe\nthe write speed of your migration.\n\nThis metric is available in the aggregated view, as well as separately\nfor each table included in your migration job.\n\nFull dump volume\n\nThe **Full dump volume** diagram shows the progress of the full dump phase\nexpressed as the percentage of total full dump data migrated.\nThis metric is available in the aggregated view, as well as separately\nfor each table included in your migration job.\n\n- The aggregated view diagram uses the `migration_job/fulldump_progress_percentage` metric.\n- The table-level diagrams use the `migration_job/fulldump_progress_percentage_per_object` metric.\n\nStorage usage in total bytes\n\nThe **Storage usage in total bytes** diagram uses the AlloyDB for PostgreSQL\n[`cluster/storage/usage`](/monitoring/api/metrics_gcp_a_b#alloydb/cluster/storage/usage) metric to show how much data\n(in bytes) is stored in the migrated database in your destination\nAlloyDB for PostgreSQL instance. You can use this information to estimate the progress\nof your migration job.\n\nReplication delay\n\nThe **Replication delay** diagram uses the\n[`migration_job/max_replica_sec_lag`](/monitoring/api/metrics_gcp_d_h#datamigration/migration_job/max_replica_sec_lag) metric to represent\nthe time difference between the moment when Database Migration Service starts\nreading Change Data Capture (CDC) information in your source, and the moment\nwhen that information is fully replicated in your destination.\nYou can use this information to estimate when to\n[promote the migration job](/database-migration/docs/sqlserver-to-alloydb/finalize-migration)\n(you want to begin the cutoff process when replication lag is the lowest).\n\nView metrics on the migration job details page\n\nTo view metric diagrams on the migration job details page, perform the following\nsteps:\n\n1. In the Google Cloud console, go to the **Migration jobs** page.\n\n [Go to Migration jobs](https://console.cloud.google.com/dbmigration/migrations)\n2. In the **Jobs** tab, click the display name of your migration job.\n\n The migration job details page opens.\n3. In the **Monitoring** section, use the **View** menu to adjust\n which diagrams you want to display:\n\n - To view metrics aggregated for the whole migration job, click **View** \\\u003e **Aggregated**.\n - To view table-level metrics, click **View** \\\u003e **Tables**, and then select your tables.\n\nMetrics available in Cloud Monitoring\n\nThe following table describes all migration job metrics you can use to\n[create charts in Metrics Explorer](/monitoring/charts/metrics-explorer)\nfor heterogeneous SQL Server migrations. The\n[complete metrics Database Migration Service metrics reference](/monitoring/api/metrics_gcp)\nlists several additional metrics, but they are not available for\nheterogeneous SQL Server migrations.\n\nYou can also use the\n[AlloyDB for PostgreSQL `alloydb/cluster/storage/usage` metric](/monitoring/api/metrics_gcp_a_b#alloydb/cluster/storage/usage)\nand compare it with the total size of your source databases to estimate\nthe migration job progress.\n\n| Metric type ^Launch stage^ Display name ||\n| Kind, Type, Unit Monitored resources | *Description* Labels |\n|-------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `migration_job/fulldump_progress_percentage` ^BETA^ ***(project)*** Fulldump progress percentage ||\n| `GAUGE`, `DOUBLE`, `%` **[datamigration.googleapis.com/MigrationJob](/monitoring/api/resources#tag_datamigration.googleapis.com/MigrationJob)** | *Progress percentage of the initial fulldump of the migration job.. Sampled every 60 seconds. After sampling, data is not visible for up to 180 seconds.* |\n| `migration_job/fulldump_progress_percentage_per_object` ^BETA^ ***(project)*** Fulldump progress percentage per object ||\n| `GAUGE`, `DOUBLE`, `%` **[datamigration.googleapis.com/MigrationJob](/monitoring/api/resources#tag_datamigration.googleapis.com/MigrationJob)** | *Progress percentage of the initial fulldump of a single table in a migration job. Sampled every 60 seconds. After sampling, data is not visible for up to 180 seconds.* |\n| `migration_``job/``write_``bytes_``count` ^BETA^ Write Bytes Count ||\n| `DELTA`, `INT64`, `By` **[datamigration.googleapis.com/MigrationJob](/monitoring/api/resources#tag_datamigration.googleapis.com/MigrationJob)** | *Number of bytes written to the destination. Sampled every 60 seconds. After sampling, data is not visible for up to 180 seconds.* `database`: Database name. |\n| `migration_``job/``max_``replica_``bytes_``lag` ^BETA^ Max lag bytes of the migration job data. ||\n| `GAUGE`, `INT64`, `By` **[datamigration.googleapis.com/MigrationJob](/monitoring/api/resources#tag_datamigration.googleapis.com/MigrationJob)** | *Current replication lag, aggregated across all of the migration job's data. Sampled every 60 seconds. After sampling, data is not visible for up to 180 seconds.* `database`: Database name. |\n| `migration_``job/``max_``replica_``sec_``lag` ^BETA^ Max lag in seconds of the migration job data ||\n| `GAUGE`, `INT64`, `s` **[datamigration.googleapis.com/MigrationJob](/monitoring/api/resources#tag_datamigration.googleapis.com/MigrationJob)** | *Current replication lag, aggregated across all of the migration job's data. Sampled every 60 seconds. After sampling, data is not visible for up to 180 seconds.* `database`: Database name. |\n| `migration_job/unsupported_events_count` ^BETA^ ***(project)*** Unsupported Events Count ||\n| `DELTA`, `INT64`, `By` **[datamigration.googleapis.com/MigrationJob](/monitoring/api/resources#tag_datamigration.googleapis.com/MigrationJob)** | *Number of unsupported events per migration and per table. Sampled every 60 seconds. After sampling, data is not visible for up to 180 seconds.* |"]]