Module: check_mk
Branch: master
Commit: bd93aeab2461f24d5853cf00212dcad4cc9e4ba5
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=bd93aeab2461f2…
Author: Simon Betz <si(a)mathias-kettner.de>
Date: Fri Aug 4 16:24:03 2017 +0200
5088 postgres_stats: Age for never checked tables is now configurable
Change-Id: Ib22842498df8ee81c5b7b407b86eb0bb91794d4a
---
.werks/5088 | 10 +++++++++
checks/postgres_stats | 42 ++++++++++++++++++++++++++++--------
web/plugins/wato/check_parameters.py | 12 +++++++----
3 files changed, 51 insertions(+), 13 deletions(-)
diff --git a/.werks/5088 b/.werks/5088
new file mode 100644
index 0000000..ecdb7ab
--- /dev/null
+++ b/.werks/5088
@@ -0,0 +1,10 @@
+Title: postgres_stats: Age for never checked tables is now configurable
+Level: 1
+Component: checks
+Compatible: compat
+Edition: cre
+Version: 1.5.0i1
+Date: 1501856598
+Class: feature
+
+
diff --git a/checks/postgres_stats b/checks/postgres_stats
index fc49efe..c4b5593 100644
--- a/checks/postgres_stats
+++ b/checks/postgres_stats
@@ -75,12 +75,12 @@ def check_postgres_stats(item, params, parsed):
if not oldest_element or last_time < oldest_element[stats_field]:
oldest_element = line
+ now = time.time()
if oldest_element:
oldest_time = int(oldest_element[stats_field])
warn, crit = params.get("last_%s" % paramskey, (None, None))
yield 0, "Table: %s" % oldest_element["tname"]
- now = time.time()
state = 0
if crit and now - crit > oldest_time:
state = 2
@@ -92,13 +92,37 @@ def check_postgres_stats(item, params, parsed):
extra_info = " (warn/crit at %s/%s)" %
(get_age_human_readable(warn), get_age_human_readable(crit))
yield state, "Time since last vacuum %s%s" %
(get_age_human_readable(now - oldest_time), extra_info)
- elif not never_checked:
- yield 0, "Contains no tables"
-
- if never_checked:
- yield 1, "%d tables were never %s: %s%s" % \
- (len(never_checked), text, "/".join(never_checked[:5]),
- (len(never_checked) > 5 and " (first %d shown)" % min(5,
len(never_checked)) or ""))
+ key = "postgres_stats.%s" % item
+ if not never_checked:
+ set_item_state(key, now)
+ yield 0, "No never checked tables"
+
+ elif never_checked:
+ infotext = "%d tables were never %s: %s%s" % \
+ (len(never_checked), text, "/".join(never_checked[:5]),
+ len(never_checked) > 5 and " (first %d shown)" % min(5,
len(never_checked)) or "")
+
+ if "never_analyze_vacuum" in params:
+ last_ts = get_item_state(key)
+ if last_ts is None:
+ set_item_state(key, now)
+ yield 0, infotext
+
+ age = now - last_ts
+ warn, crit = params["never_analyze_vacuum"]
+ state = 0
+ if age >= crit:
+ state = 2
+ elif age >= warn:
+ state = 1
+ if state:
+ infotext += " (warn/crit at %s/%s)" % \
+ (get_age_human_readable(warn),
+ get_age_human_readable(crit),)
+ yield state, infotext
+
+ else:
+ yield 1, infotext
check_info['postgres_stats'] = {
@@ -107,6 +131,6 @@ check_info['postgres_stats'] = {
"inventory_function" : inventory_postgres_stats,
"service_description" : "PostgreSQL %s",
"group" : "postgres_maintenance",
- "includes" : [ "postgres.include" ],
+ "includes" : ["postgres.include"],
}
diff --git a/web/plugins/wato/check_parameters.py b/web/plugins/wato/check_parameters.py
index f939444..bb6562d 100644
--- a/web/plugins/wato/check_parameters.py
+++ b/web/plugins/wato/check_parameters.py
@@ -10691,15 +10691,19 @@ register_check_parameters(
elements = [
Age(title = _("Warning if older than"), default_value =
86400 * 7),
Age(title = _("Critical if older than"), default_value =
86400 * 14)
- ])
- ),
+ ])),
("last_analyze", Tuple(
title = _("Time since the last ANALYZE"),
elements = [
Age(title = _("Warning if older than"), default_value =
86400 * 7),
Age(title = _("Critical if older than"), default_value =
86400 * 14)
- ])
- ),
+ ])),
+ ("never_analyze_vacuum", Tuple(
+ title = _("Age of never analyzed/vacuumed tables"),
+ elements = [
+ Age(title = _("Warning if older than"), default_value =
86400 * 7),
+ Age(title = _("Critical if older than"), default_value =
86400 * 14)
+ ])),
]
),
TextAscii(