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()
Module: check_mk
Branch: master
Commit: abb46ae52ac81a478aadd91bda9c2b63a3751d75
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=abb46ae52ac81a…
Author: Konstantin Büttner <kb(a)mathias-kettner.de>
Date: Fri Apr 6 10:57:54 2018 +0200
docker_node_info: Inventory plugin displaying docker version
Change-Id: I051aa554d32b1271f5f8c15caaf2de7d669f3d45
---
inventory/docker_node_info | 36 ++++++++++++++++++++++++++++++++++++
1 file changed, 36 insertions(+)
diff --git a/inventory/docker_node_info b/inventory/docker_node_info
new file mode 100644
index 0000000..718ca5c
--- /dev/null
+++ b/inventory/docker_node_info
@@ -0,0 +1,36 @@
+#!/usr/bin/python
+# -*- encoding: utf-8; py-indent-offset: 4 -*-
+# +------------------------------------------------------------------+
+# | ____ _ _ __ __ _ __ |
+# | / ___| |__ ___ ___| | __ | \/ | |/ / |
+# | | | | '_ \ / _ \/ __| |/ / | |\/| | ' / |
+# | | |___| | | | __/ (__| < | | | | . \ |
+# | \____|_| |_|\___|\___|_|\_\___|_| |_|_|\_\ |
+# | |
+# | Copyright Mathias Kettner 2018 mk(a)mathias-kettner.de |
+# +------------------------------------------------------------------+
+#
+# This file is part of Check_MK.
+# The official homepage is at http://mathias-kettner.de/check_mk.
+#
+# check_mk is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation in version 2. check_mk is distributed
+# in the hope that it will be useful, but WITHOUT ANY WARRANTY; with-
+# out even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE. See the GNU General Public License for more de-
+# tails. You should have received a copy of the GNU General Public
+# License along with GNU Make; see the file COPYING. If not, write
+# to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+# Boston, MA 02110-1301 USA.
+
+
+
+def inv_docker_node_info(parsed, inventory_tree):
+ node = inventory_tree.get_dict("software.applications.docker.")
+ node["version"] = parsed[u"ServerVersion"]
+
+
+inv_info['docker_node_info'] = {
+ 'inv_function' : inv_docker_node_info,
+}