From 9ad64fee8a2fc9e754ff175048df39e54fcaee9b Mon Sep 17 00:00:00 2001 From: Google Cloud Agent for Compute Workloads Dev Date: Thu, 23 Jul 2026 03:34:07 -0700 Subject: [PATCH] [WLM for MySQL] Add rule for checking last backup age PiperOrigin-RevId: 952654823 --- internal/mysqlmetrics/mysqlmetrics.go | 14 ++++++++++++++ internal/mysqlmetrics/mysqlmetrics_test.go | 4 ++++ 2 files changed, 18 insertions(+) diff --git a/internal/mysqlmetrics/mysqlmetrics.go b/internal/mysqlmetrics/mysqlmetrics.go index 1b7831d..a77283e 100644 --- a/internal/mysqlmetrics/mysqlmetrics.go +++ b/internal/mysqlmetrics/mysqlmetrics.go @@ -45,6 +45,8 @@ const ( currentRoleKey = "current_role" replicationZonesKey = "replication_zones" notProtectedByAutoFailoverKey = "not_protected_by_auto_failover" + noAutomatedBackupPolicyKey = "no_automated_backup_policy" + lastBackupOldKey = "last_backup_old" sourceRole = "source" replicaRole = "replica" replicationZonesQuery = "SELECT HOST FROM information_schema.PROCESSLIST AS p WHERE p.COMMAND = 'Binlog Dump'" @@ -1139,6 +1141,14 @@ func (m *MySQLMetrics) CollectWlmMetricsOnce(ctx context.Context, dwActivated bo if err != nil { log.CtxLogger(ctx).Warnf("Failed to get not protected by auto failover: %v", err) } + noAutomatedBackupPolicy, err := m.noAutomatedBackupPolicy(ctx) + if err != nil { + log.CtxLogger(ctx).Warnf("Failed to get no automated backup policy: %v", err) + } + lastBackupOld, err := m.lastBackupOld(ctx) + if err != nil { + log.CtxLogger(ctx).Warnf("Failed to get last backup old: %v", err) + } log.CtxLogger(ctx).Debugw("Finished collecting MySQL metrics once. Next step is to send to WLM (DW).", bufferPoolKey, bufferPoolSize, totalRAMKey, totalRAM, @@ -1146,6 +1156,8 @@ func (m *MySQLMetrics) CollectWlmMetricsOnce(ctx context.Context, dwActivated bo currentRoleKey, currentRole, replicationZonesKey, strings.Join(replicationZones, ","), notProtectedByAutoFailoverKey, notProtectedByAutoFailover, + noAutomatedBackupPolicyKey, noAutomatedBackupPolicy, + lastBackupOldKey, lastBackupOld, ) metrics := workloadmanager.WorkloadMetrics{ WorkloadType: workloadmanager.MYSQL, @@ -1156,6 +1168,8 @@ func (m *MySQLMetrics) CollectWlmMetricsOnce(ctx context.Context, dwActivated bo currentRoleKey: currentRole, replicationZonesKey: strings.Join(replicationZones, ","), notProtectedByAutoFailoverKey: strconv.FormatBool(notProtectedByAutoFailover), + noAutomatedBackupPolicyKey: strconv.FormatBool(noAutomatedBackupPolicy), + lastBackupOldKey: strconv.FormatBool(lastBackupOld), }, } res, err := workloadmanager.SendDataInsight(ctx, workloadmanager.SendDataInsightParams{ diff --git a/internal/mysqlmetrics/mysqlmetrics_test.go b/internal/mysqlmetrics/mysqlmetrics_test.go index b32441f..c5bd214 100644 --- a/internal/mysqlmetrics/mysqlmetrics_test.go +++ b/internal/mysqlmetrics/mysqlmetrics_test.go @@ -1243,6 +1243,8 @@ func TestCollectWlmMetricsOnce(t *testing.T) { innoDBKey: "true", replicationZonesKey: "", notProtectedByAutoFailoverKey: "true", + noAutomatedBackupPolicyKey: "true", + lastBackupOldKey: "true", }, }, wantErr: false, @@ -1457,6 +1459,8 @@ func TestCollectWlmMetricsOnce(t *testing.T) { innoDBKey: "true", replicationZonesKey: "", notProtectedByAutoFailoverKey: "true", + noAutomatedBackupPolicyKey: "true", + lastBackupOldKey: "true", }, }, wantErr: false,