more index cleanups to optimise space
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -24,14 +24,17 @@ type SettingsYML struct {
|
||||
LogOutput string `yaml:"log_output"`
|
||||
DatabaseDriver string `yaml:"database_driver"`
|
||||
DatabaseURL string `yaml:"database_url"`
|
||||
EnableExperimentalPostgres bool `yaml:"enable_experimental_postgres"`
|
||||
BindIP string `yaml:"bind_ip"`
|
||||
BindPort int `yaml:"bind_port"`
|
||||
BindDisableTLS bool `yaml:"bind_disable_tls"`
|
||||
TLSCertFilename string `yaml:"tls_cert_filename"`
|
||||
TLSKeyFilename string `yaml:"tls_key_filename"`
|
||||
EncryptionKey string `yaml:"encryption_key"`
|
||||
VcenterUsername string `yaml:"vcenter_username"`
|
||||
VcenterPassword string `yaml:"vcenter_password"`
|
||||
VcenterInsecure bool `yaml:"vcenter_insecure"`
|
||||
EnableLegacyAPI bool `yaml:"enable_legacy_api"`
|
||||
VcenterEventPollingSeconds int `yaml:"vcenter_event_polling_seconds"`
|
||||
VcenterInventoryPollingSeconds int `yaml:"vcenter_inventory_polling_seconds"`
|
||||
VcenterInventorySnapshotSeconds int `yaml:"vcenter_inventory_snapshot_seconds"`
|
||||
@@ -39,6 +42,7 @@ type SettingsYML struct {
|
||||
HourlySnapshotConcurrency int `yaml:"hourly_snapshot_concurrency"`
|
||||
HourlySnapshotMaxAgeDays int `yaml:"hourly_snapshot_max_age_days"`
|
||||
DailySnapshotMaxAgeMonths int `yaml:"daily_snapshot_max_age_months"`
|
||||
HourlyIndexMaxAgeDays int `yaml:"hourly_index_max_age_days"`
|
||||
SnapshotCleanupCron string `yaml:"snapshot_cleanup_cron"`
|
||||
ReportsDir string `yaml:"reports_dir"`
|
||||
HourlyJobTimeoutSeconds int `yaml:"hourly_job_timeout_seconds"`
|
||||
@@ -95,6 +99,9 @@ func (s *Settings) ReadYMLSettings() error {
|
||||
// Avoid logging sensitive fields (e.g., credentials).
|
||||
redacted := settings
|
||||
redacted.Settings.VcenterPassword = "REDACTED"
|
||||
if redacted.Settings.EncryptionKey != "" {
|
||||
redacted.Settings.EncryptionKey = "REDACTED"
|
||||
}
|
||||
s.Logger.Debug("Updating settings", "settings", redacted)
|
||||
s.Values = &settings
|
||||
|
||||
|
||||
@@ -315,6 +315,10 @@ func (c *CronTask) RunSnapshotCleanup(ctx context.Context, logger *slog.Logger)
|
||||
now := time.Now()
|
||||
hourlyMaxDays := intWithDefault(c.Settings.Values.Settings.HourlySnapshotMaxAgeDays, 60)
|
||||
dailyMaxMonths := intWithDefault(c.Settings.Values.Settings.DailySnapshotMaxAgeMonths, 12)
|
||||
hourlyIndexMaxAgeDays := 7
|
||||
if c.Settings != nil && c.Settings.Values != nil {
|
||||
hourlyIndexMaxAgeDays = intWithDefault(c.Settings.Values.Settings.HourlyIndexMaxAgeDays, 7)
|
||||
}
|
||||
|
||||
hourlyCutoff := now.AddDate(0, 0, -hourlyMaxDays)
|
||||
dailyCutoff := now.AddDate(0, -dailyMaxMonths, 0)
|
||||
@@ -324,6 +328,7 @@ func (c *CronTask) RunSnapshotCleanup(ctx context.Context, logger *slog.Logger)
|
||||
"daily_cutoff", truncateDate(dailyCutoff),
|
||||
"hourly_max_age_days", hourlyMaxDays,
|
||||
"daily_max_age_months", dailyMaxMonths,
|
||||
"hourly_index_max_age_days", hourlyIndexMaxAgeDays,
|
||||
)
|
||||
|
||||
dbConn := c.Database.DB()
|
||||
@@ -382,13 +387,31 @@ func (c *CronTask) RunSnapshotCleanup(ctx context.Context, logger *slog.Logger)
|
||||
}
|
||||
}
|
||||
|
||||
trimmedHourlyIndexes := 0
|
||||
if hourlyIndexMaxAgeDays >= 0 && db.TableExists(ctx, dbConn, "vm_hourly_stats") {
|
||||
indexCutoff := truncateDate(now.AddDate(0, 0, -hourlyIndexMaxAgeDays))
|
||||
trimmed, trimErr := db.CleanupHourlySnapshotIndexesOlderThan(ctx, dbConn, indexCutoff)
|
||||
if trimErr != nil {
|
||||
c.Logger.Warn("failed to cleanup old hourly snapshot indexes", "error", trimErr, "index_cutoff", indexCutoff)
|
||||
} else {
|
||||
trimmedHourlyIndexes = trimmed
|
||||
c.Logger.Info("Snapshot cleanup hourly index trim",
|
||||
"index_cutoff", indexCutoff,
|
||||
"trimmed_indexes", trimmedHourlyIndexes,
|
||||
"hourly_index_max_age_days", hourlyIndexMaxAgeDays,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
c.Logger.Info("Finished snapshot cleanup",
|
||||
"hourly_tables_scanned", scannedHourly,
|
||||
"daily_tables_scanned", scannedDaily,
|
||||
"removed_hourly_tables", removedHourly,
|
||||
"removed_daily_tables", removedDaily,
|
||||
"trimmed_hourly_indexes", trimmedHourlyIndexes,
|
||||
"hourly_max_age_days", hourlyMaxDays,
|
||||
"daily_max_age_months", dailyMaxMonths,
|
||||
"hourly_index_max_age_days", hourlyIndexMaxAgeDays,
|
||||
)
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user