From 80c4c339393bb6e6b2f17e1a05be4c072902fdc5 Mon Sep 17 00:00:00 2001 From: Marsell Kukuljevic Date: Thu, 25 Jun 2026 10:55:03 +0200 Subject: [PATCH] Add weekly support to VSPC. --- .../libexec/agent_vspc_backup_checks | 29 +++++++++++++----- .../2.3/vspc_backup_checks-0.3.1.mkp | Bin 5188 -> 0 bytes .../2.3/vspc_backup_checks-0.4.0.mkp | Bin 0 -> 5256 bytes 3 files changed, 22 insertions(+), 7 deletions(-) delete mode 100755 vspc_backup_checks/2.3/vspc_backup_checks-0.3.1.mkp create mode 100755 vspc_backup_checks/2.3/vspc_backup_checks-0.4.0.mkp diff --git a/vspc_backup_checks/2.3/local/lib/python3/cmk_addons/plugins/vspc_backup_checks/libexec/agent_vspc_backup_checks b/vspc_backup_checks/2.3/local/lib/python3/cmk_addons/plugins/vspc_backup_checks/libexec/agent_vspc_backup_checks index 92985e6..e58ccc9 100755 --- a/vspc_backup_checks/2.3/local/lib/python3/cmk_addons/plugins/vspc_backup_checks/libexec/agent_vspc_backup_checks +++ b/vspc_backup_checks/2.3/local/lib/python3/cmk_addons/plugins/vspc_backup_checks/libexec/agent_vspc_backup_checks @@ -220,7 +220,24 @@ def process(mAgents, bAgents, jobs, restores): }) continue - if sched != "Daily": + warnDays = 0 + critDays = 0 + if sched == "Daily": + # We use 1.2 & 2.2 here to give wiggle room for jobs to complete if + # they take longer than expected. + warnDays = 1.2 + critDays = 2.2 + elif sched == "Weekly": + # Ditto, but for a week + warnDays = 7.2 + critDays = 8.2 + elif sched == "NotScheduled": + results[host].append({ + "status": WARN, + "message": f"Backup agent {bAgentId} job {jobId} is not scheduled." + }) + continue + else: results[host].append({ "status": WARN, "message": f"Backup agent {bAgentId} job {jobId} has scheduleType unknown to CheckMK plugin: {sched}." @@ -228,14 +245,12 @@ def process(mAgents, bAgents, jobs, restores): continue if daysSinceLastRun is not None: - # We use 1.2 & 2.2 here to give wiggle room for jobs to complete if - # they take longer than expected. - if daysSinceLastRun > 2.2: + if daysSinceLastRun > critDays: results[host].append({ "status": CRIT, "message": f"Backup agent {bAgentId} job {jobId} is late! Last backup ran {daysSinceLastRun:.1f} days ago." }) - elif daysSinceLastRun > 1.2: + elif daysSinceLastRun > warnDays: results[host].append({ "status": WARN, "message": f"Backup agent {bAgentId} job {jobId} is late! Last backup ran {daysSinceLastRun:.1f} days ago." @@ -254,12 +269,12 @@ def process(mAgents, bAgents, jobs, restores): timeSinceLastSuccess = datetime.now(timezone.utc) - datetime.fromisoformat(lastRestorePoint) daysSinceLastSuccess = timeSinceLastSuccess.seconds / SECONDS_PER_DAY - if daysSinceLastSuccess > 2.2: + if daysSinceLastSuccess > critDays: results[host].append({ "status": CRIT, "message": f"Job {jobId} last SUCCESSFULLY ran {daysSinceLastSuccess:.1f} days ago!" }) - elif daysSinceLastSuccess > 1.2: + elif daysSinceLastSuccess > warnDays: results[host].append({ "status": WARN, "message": f"Job {jobId} last SUCCESSFULLY ran {daysSinceLastSuccess:.1f} days ago!" diff --git a/vspc_backup_checks/2.3/vspc_backup_checks-0.3.1.mkp b/vspc_backup_checks/2.3/vspc_backup_checks-0.3.1.mkp deleted file mode 100755 index 30b4c07ece8a7f8e3c8a5a3319306fb7c3ad0671..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5188 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 diff --git a/vspc_backup_checks/2.3/vspc_backup_checks-0.4.0.mkp b/vspc_backup_checks/2.3/vspc_backup_checks-0.4.0.mkp new file mode 100755 index 0000000000000000000000000000000000000000..362eb09830248d42cda85ba463277cbf7adf2326 GIT binary patch literal 5256 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 O%l`r2{Zm%}cmM$NhBFxe literal 0 HcmV?d00001