Module: check_mk
Branch: master
Commit: 484e8a74f3573b5ae3ec5929bd0383a3b9ead00f
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=484e8a74f3573b…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Fri Apr 6 17:42:13 2018 +0200
5955 df mounts: Skip docker mounts for name resolution
When docker containers are configured to perform name resolution there are
mounts at /etc/resolv.conf, /etc/hostname and /etc/hosts which are not relevant
to be monitored. These checks are now always skipped.
Change-Id: I8d5c42aff9930998a141e9188be939b13f93f801
---
.werks/5955 | 12 ++++++++++++
checks/df | 11 +++++++----
checks/mounts | 8 +++++++-
3 files changed, 26 insertions(+), 5 deletions(-)
diff --git a/.werks/5955 b/.werks/5955
new file mode 100644
index 0000000..93fcc18
--- /dev/null
+++ b/.werks/5955
@@ -0,0 +1,12 @@
+Title: df mounts: Skip docker mounts for name resolution
+Level: 1
+Component: checks
+Compatible: compat
+Edition: cre
+Version: 1.5.0i4
+Date: 1523029250
+Class: feature
+
+When docker containers are configured to perform name resolution there are
+mounts at /etc/resolv.conf, /etc/hostname and /etc/hosts which are not relevant
+to be monitored. These checks are now always skipped.
diff --git a/checks/df b/checks/df
index e4bef0e..72e0328 100644
--- a/checks/df
+++ b/checks/df
@@ -203,7 +203,7 @@ def inventory_df(parsed):
(df_blocks, volume_info), _ = parsed
mplist = []
- for line in _filter_docker_local_storage(df_blocks):
+ for line in _filter_docker_filesystems(df_blocks):
mountpoint = line[0]
if mountpoint in inventory_df_exclude_mountpoints:
@@ -231,7 +231,7 @@ def inventory_df(parsed):
def check_df(item, params, parsed):
(df_blocks, volume_info), df_inodes = parsed
- df_blocks = _filter_docker_local_storage(df_blocks)
+ df_blocks = _filter_docker_filesystems(df_blocks)
if "patterns" in params or item in volume_info:
return df_check_filesystem_list(item, params, df_blocks, df_inodes)
@@ -241,8 +241,11 @@ def check_df(item, params, parsed):
# Always exclude filesystems below dockers local storage area
-def _filter_docker_local_storage(df_blocks):
- return [ e for e in df_blocks if not e[0].startswith("/var/lib/docker") ]
+# And also exclude docker mounts in containers which are reported
+# by the agent when the agent is executed in the container context
+def _filter_docker_filesystems(df_blocks):
+ return [ e for e in df_blocks if not e[0].startswith("/var/lib/docker")
+ and e[0] not in [ "/etc/resolv.conf", "/etc/hostname",
"/etc/hosts" ] ]
check_info['df'] = {
diff --git a/checks/mounts b/checks/mounts
index 1d7fba4..0c4af16 100644
--- a/checks/mounts
+++ b/checks/mounts
@@ -35,7 +35,13 @@ def inventory_mounts(info):
inventory = []
devices = []
for dev, mp, fstype, options, dump, fsck in info:
- if fstype not in [ 'tmpfs' ] and dev not in devices:
+ if fstype == "tmpfs":
+ continue
+
+ if mp in [ "/etc/resolv.conf", "/etc/hostname",
"/etc/hosts" ]:
+ continue
+
+ if dev not in devices:
devices.append(dev)
opts = options.split(",")
opts.sort()