Skip to main content

Data Retention

Configure how long CronJob Guardian retains execution history and related data.

Default Retention​

By default, CronJob Guardian retains:

  • Execution records: 90 days
  • Logs: 30 days
  • Events: 30 days

Monitor-Level Override​

Override retention for specific monitors:

spec:
dataRetention:
retentionDays: 180 # Keep 180 days of history

Storage Controls​

Log Storage​

Control whether logs are stored:

spec:
dataRetention:
retentionDays: 90
storeLogs: true # Store pod logs (default: true)
logRetentionDays: 14 # Logs retained shorter than executions

Event Storage​

Control event storage:

spec:
dataRetention:
storeEvents: true # Store Kubernetes events
eventRetentionDays: 14

CronJob Lifecycle​

On Deletion​

Configure behavior when monitored CronJobs are deleted:

spec:
dataRetention:
onCronJobDeletion: retain # Options: retain, delete
ValueBehavior
retainKeep history after CronJob is deleted
deleteDelete history when CronJob is deleted

On Recreation​

When a CronJob with the same name is recreated:

spec:
dataRetention:
onRecreation: merge # Options: merge, reset
ValueBehavior
mergeCombine with previous history
resetStart fresh, archive old data

Examples​

Long-Term Compliance​

compliance-retention.yaml
apiVersion: guardian.illenium.net/v1alpha1
kind: CronJobMonitor
metadata:
name: audit-jobs
namespace: compliance
spec:
selector:
matchLabels:
compliance: required

dataRetention:
retentionDays: 365 # 1 year for compliance
storeLogs: true
logRetentionDays: 90
storeEvents: true
eventRetentionDays: 90
onCronJobDeletion: retain # Never delete compliance data

alerting:
channelRefs:
- name: compliance-slack

Short-Term Development​

dev-retention.yaml
apiVersion: guardian.illenium.net/v1alpha1
kind: CronJobMonitor
metadata:
name: dev-jobs
namespace: development
spec:
selector: {}

dataRetention:
retentionDays: 7 # 1 week only
storeLogs: true
logRetentionDays: 3
storeEvents: false # Don't store events
onCronJobDeletion: delete # Clean up with CronJob

alerting:
channelRefs:
- name: dev-slack

Standard Production​

prod-retention.yaml
apiVersion: guardian.illenium.net/v1alpha1
kind: CronJobMonitor
metadata:
name: production-jobs
namespace: production
spec:
selector:
matchLabels:
monitored: "true"

dataRetention:
retentionDays: 90
storeLogs: true
logRetentionDays: 30
storeEvents: true
eventRetentionDays: 30
onCronJobDeletion: retain
onRecreation: merge

alerting:
channelRefs:
- name: ops-slack

Global Configuration​

Set default retention via Helm values:

config:
dataRetention:
defaultRetentionDays: 90
defaultLogRetentionDays: 30
pruneInterval: 1h # How often to run cleanup

Manual Pruning​

Trigger manual data pruning via the dashboard:

  1. Go to Settings
  2. Click Prune Old Data
  3. Confirm the action

Or via API:

curl -X POST http://localhost:8080/api/v1/admin/prune

Storage Considerations​

SQLite​

  • Data stored in a single file
  • Regular pruning keeps file size manageable
  • Consider vacuuming periodically

PostgreSQL/MySQL​

  • More efficient for large datasets
  • Pruning runs as DELETE queries
  • Consider partitioning for very large deployments

Configuration Reference​

FieldTypeDescriptionDefault
retentionDaysintDays to retain execution records90
storeLogsboolStore pod logstrue
logRetentionDaysintDays to retain logs30
storeEventsboolStore Kubernetes eventstrue
eventRetentionDaysintDays to retain events30
onCronJobDeletionstringBehavior on CronJob deletionretain
onRecreationstringBehavior on CronJob recreationmerge