From 8a8a8d97471a9a0e8c1f5f45800d41f53dd56278 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marek=20Jaro=C5=A1?= <jaros@ics.muni.cz>
Date: Mon, 13 Jun 2022 15:21:12 +0200
Subject: [PATCH] Resolve "Support knobs for configuring IDO clean-up"

---
 README.cs_CZ.md              |  1 +
 README.md                    |  1 +
 content/opt/setup/40-icinga2 | 19 +++++++++++++++++++
 3 files changed, 21 insertions(+)

diff --git a/README.cs_CZ.md b/README.cs_CZ.md
index c8d4fa6..e35fd12 100644
--- a/README.cs_CZ.md
+++ b/README.cs_CZ.md
@@ -262,6 +262,7 @@ Vypsat logy lze v defaultní konfiguraci například příkazem `docker logs ici
 | `ICINGA2_IDO_PGSQL_SSL_KEY` | *nenastaveno* | TLS privátní klíč |
 | `ICINGA2_IDO_PGSQL_SSL_CERT` | *nenastaveno* | TLS veřejný certifikát |
 | `ICINGA2_IDO_PGSQL_SSL_CA` | `/etc/ssl/certs/ca-certificates.crt` | CertifikaÄŤnĂ­ authorita |
+| `ICINGA2_IDO_PGSQL_DATA_RETENTION` | `730d` | [Cleanup](https://icinga.com/docs/icinga-2/latest/doc/14-features/#db-ido-cleanup) older data |
 | `ICINGA2_FEATURE_GRAPHITE` | false | Nastav na `true` nebo `1` pro zapnutĂ­ graphite zapisovaÄŤe |
 | `ICINGA2_FEATURE_GRAPHITE_HOST` | graphite | doménové jméno nebo IP adresa serveru kde běží Carbon/Graphite daemon |
 | `ICINGA2_FEATURE_GRAPHITE_PORT` | 2003 | Carbon port pro Graphite |
diff --git a/README.md b/README.md
index a8be07e..8d65a1f 100644
--- a/README.md
+++ b/README.md
@@ -263,6 +263,7 @@ By default you can show logs with dommand `docker logs icinga`.
 | `ICINGA2_IDO_PGSQL_SSL_KEY` | *unset* | TLS private key |
 | `ICINGA2_IDO_PGSQL_SSL_CERT` | *unset* | TLS public key |
 | `ICINGA2_IDO_PGSQL_SSL_CA` | `/etc/ssl/certs/ca-certificates.crt` | Certificate authority |
+| `ICINGA2_IDO_PGSQL_DATA_RETENTION` | `730d` | [Cleanup](https://icinga.com/docs/icinga-2/latest/doc/14-features/#db-ido-cleanup) older data |
 | `ICINGA2_FEATURE_GRAPHITE` | false | Enable Graphite writer |
 | `ICINGA2_FEATURE_GRAPHITE_HOST` | graphite | Graphite port |
 | `ICINGA2_FEATURE_GRAPHITE_PORT` | 2003 | Graphite port |
diff --git a/content/opt/setup/40-icinga2 b/content/opt/setup/40-icinga2
index 8ea573b..ff890cc 100755
--- a/content/opt/setup/40-icinga2
+++ b/content/opt/setup/40-icinga2
@@ -11,6 +11,7 @@ ICINGA2_IDO_PGSQL_SSL_MODE=${ICINGA2_IDO_PGSQL_SSL_MODE:-disable}
 ICINGA2_IDO_PGSQL_SSL_KEY=${ICINGA2_IDO_PGSQL_SSL_KEY}
 ICINGA2_IDO_PGSQL_SSL_CERT=${ICINGA2_IDO_PGSQL_SSL_CERT}
 ICINGA2_IDO_PGSQL_SSL_CA=${ICINGA2_IDO_PGSQL_SSL_CA:-/etc/ssl/certs/ca-certificates.crt}
+ICINGA2_IDO_PGSQL_DATA_RETENTION=${ICINGA2_IDO_PGSQL_DATA_RETENTION:-730d}
 
 echo "Icinga2: Checking if database is available ..."
 pgsql_wait \
@@ -113,6 +114,24 @@ else
 	  ssl_key  = "${ICINGA2_IDO_PGSQL_SSL_KEY}"
 	  ssl_cert = "${ICINGA2_IDO_PGSQL_SSL_CERT}"
 	  ssl_ca   = "${ICINGA2_IDO_PGSQL_SSL_CA}"
+
+	  cleanup = {
+	    acknowledgements_age = ${ICINGA2_IDO_PGSQL_DATA_RETENTION}
+	    commenthistory_age = ${ICINGA2_IDO_PGSQL_DATA_RETENTION}
+	    contactnotifications_age = ${ICINGA2_IDO_PGSQL_DATA_RETENTION}
+	    contactnotificationmethods_age = ${ICINGA2_IDO_PGSQL_DATA_RETENTION}
+	    downtimehistory_age = ${ICINGA2_IDO_PGSQL_DATA_RETENTION}
+	    eventhandlers_age = ${ICINGA2_IDO_PGSQL_DATA_RETENTION}
+	    externalcommands_age = ${ICINGA2_IDO_PGSQL_DATA_RETENTION}
+	    flappinghistory_age = ${ICINGA2_IDO_PGSQL_DATA_RETENTION}
+	    hostchecks_age = ${ICINGA2_IDO_PGSQL_DATA_RETENTION}
+	    logentries_age = ${ICINGA2_IDO_PGSQL_DATA_RETENTION}
+	    notifications_age = ${ICINGA2_IDO_PGSQL_DATA_RETENTION}
+	    processevents_age = ${ICINGA2_IDO_PGSQL_DATA_RETENTION}
+	    statehistory_age = ${ICINGA2_IDO_PGSQL_DATA_RETENTION}
+	    servicechecks_age = ${ICINGA2_IDO_PGSQL_DATA_RETENTION}
+	    systemcommands_age = ${ICINGA2_IDO_PGSQL_DATA_RETENTION}
+	  }
 	}
 END
 
-- 
GitLab