Inventorizes labels and node name of docker containers
Message-ID: <5acc716f.SLdC5TDIP+G/UTyB%si(a)mathias-kettner.de>
User-Agent: Heirloom mailx 12.5 6/20/10
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Module: check_mk
Branch: master
Commit: c8e4b63706b4133fe29d41df30e61fb0258b21d3
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=c8e4b63706b413…
Author: Simon Betz <si(a)mathias-kettner.de>
Date: Mon Apr 9 17:08:23 2018 +0200
5963 docker_container_labels, docker_container_node_name: Inventorizes labels and node
name of docker containers
Change-Id: Ib32f5110c4a5abf31a5bc6df68cd740f458bb931
---
.werks/5963 | 10 +++++++
agents/check_mk_agent.linux | 18 ++++++++----
inventory/docker_container_labels | 37 +++++++++++++++++++++++++
inventory/docker_container_node_name | 37 +++++++++++++++++++++++++
inventory/{docker_images => docker_node_images} | 10 +++----
5 files changed, 102 insertions(+), 10 deletions(-)
diff --git a/.werks/5963 b/.werks/5963
new file mode 100644
index 0000000..805302f
--- /dev/null
+++ b/.werks/5963
@@ -0,0 +1,10 @@
+Title: docker_container_labels, docker_container_node_name: Inventorizes labels and node
name of docker containers
+Level: 1
+Component: inv
+Compatible: compat
+Edition: cre
+Version: 1.5.0i4
+Date: 1523285922
+Class: feature
+
+
diff --git a/agents/check_mk_agent.linux b/agents/check_mk_agent.linux
index 4a3bf27..43e5d70 100755
--- a/agents/check_mk_agent.linux
+++ b/agents/check_mk_agent.linux
@@ -962,13 +962,15 @@ fi
# Iterate all running containers and report piggyback data for them
if type docker > /dev/null 2>&1 ; then
+ NODE_NAME=$(docker info --format "{{json .Name}}")
+
echo "<<<docker_node_info>>>"
docker info --format "{{json .}}" 2>&1
echo "<<<docker_system_df:sep(44)>>>"
docker system df --format "{{json .}}" 2>&1
- echo "<<<docker_images>>>"
+ echo "<<<docker_node_images>>>"
echo "[[[images]]]"
docker images --all --format "{{json .}}"
for image in $(docker images --all --format "{{.Repository}}");
@@ -981,10 +983,16 @@ if type docker > /dev/null 2>&1 ; then
# For the container status, we want information about *all* containers
for CONTAINER_ID in $(docker container ls -q --all); do
- echo "<<<<$CONTAINER_ID>>>>"
- echo "<<<docker_container_status>>>"
- docker inspect $CONTAINER_ID --format='{{json .State}}'
- echo "<<<<>>>>"
+ echo "<<<<$CONTAINER_ID>>>>"
+ echo "<<<docker_container_status>>>"
+ docker inspect $CONTAINER_ID --format='{{json .State}}'
+
+ echo "<<<docker_container_node_name>>>"
+ echo $NODE_NAME
+
+ echo "<<<docker_container_labels>>>"
+ docker inspect $CONTAINER_ID --format='{{json .Config.Labels}}'
+ echo "<<<<>>>>"
done
for CONTAINER_ID in $(docker container ls -q); do
diff --git a/inventory/docker_container_labels b/inventory/docker_container_labels
new file mode 100644
index 0000000..1469423
--- /dev/null
+++ b/inventory/docker_container_labels
@@ -0,0 +1,37 @@
+#!/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_container_labels(info, inventory_tree):
+ import json
+ data = json.loads(" ".join(info[0]))
+ container_labels =
inventory_tree.get_dict("software.applications.docker.container.")
+ container_labels["labels"] = ", ".join(["%s: %s" %
(k,v) for k,v in data.items()])
+
+
+inv_info['docker_container_labels'] = {
+ 'inv_function': inv_docker_container_labels,
+}
diff --git a/inventory/docker_container_node_name b/inventory/docker_container_node_name
new file mode 100644
index 0000000..38301c6
--- /dev/null
+++ b/inventory/docker_container_node_name
@@ -0,0 +1,37 @@
+#!/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_container_node_name(info, inventory_tree):
+ import json
+ data = json.loads(info[0][0])
+ container =
inventory_tree.get_dict("software.applications.docker.container.")
+ container["node_name"] = data
+
+
+inv_info['docker_container_node_name'] = {
+ 'inv_function': inv_docker_container_node_name,
+}
diff --git a/inventory/docker_images b/inventory/docker_node_images
similarity index 93%
rename from inventory/docker_images
rename to inventory/docker_node_images
index d6ab2a4..21da417 100644
--- a/inventory/docker_images
+++ b/inventory/docker_node_images
@@ -25,7 +25,7 @@
# Boston, MA 02110-1301 USA.
-def _parse_docker_images(info):
+def _parse_docker_node_images(info):
import json
parsed = {}
section_name = None
@@ -52,8 +52,8 @@ def _parse_docker_images(info):
return parsed
-def inv_docker_images(info, inventory_tree, status_data_tree):
- parsed = _parse_docker_images(info)
+def inv_docker_node_images(info, inventory_tree, status_data_tree):
+ parsed = _parse_docker_node_images(info)
path = "software.applications.docker.images:"
inv_node = inventory_tree.get_list(path)
status_node = status_data_tree.get_list(path)
@@ -79,7 +79,7 @@ def inv_docker_images(info, inventory_tree, status_data_tree):
})
-inv_info['docker_images'] = {
- 'inv_function' : inv_docker_images,
+inv_info['docker_node_images'] = {
+ 'inv_function' : inv_docker_node_images,
'has_status_data' : True,
}