Module: check_mk
Branch: master
Commit: 488135e80e84ffdc996068045286d654b288c852
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=488135e80e84ff…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Fri Apr 6 10:09:29 2018 +0200
Preparing linux agent for docker monitoring
* The agent now detects whether or not it is being executed
in a docker container context.
* The Agent can be told to leave stdin open. This is useful
when the docker nodes agent shal be executed in the context
of a container.
Change-Id: Id110745605a7af94e02c15f6e080ed2df666115f
---
agents/check_mk_agent.linux | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/agents/check_mk_agent.linux b/agents/check_mk_agent.linux
index a0dbd70..22bd49f 100755
--- a/agents/check_mk_agent.linux
+++ b/agents/check_mk_agent.linux
@@ -57,14 +57,26 @@ LOCALDIR=$MK_LIBDIR/local
# output if they are not outdated (see below)
SPOOLDIR=$MK_VARDIR/spool
-# close standard input (for security reasons) and stderr
+# close standard input (for security reasons) and stderr when not
+# explicitly in debug mode.
+# When the nodes agent is executed by a e.g. docker node in a container,
+# then don't close stdin, because the agent is piped through it in this
+# case.
if [ "$1" = -d ]
then
set -xv
-else
+elif [ -z "$MK_FROM_NODE" ]; then
exec </dev/null 2>/dev/null
fi
+# Detect whether or not the agent is being executed in a container
+# environment.
+if [ -f /.dockerenv ]; then
+ MK_IN_CONTAINER=1
+else
+ unset MK_IN_CONTAINER
+fi
+
# Prefer (relatively) new /usr/bin/timeout from coreutils against
# our shipped waitmax. waitmax is statically linked and crashes on
# some Ubuntu versions recently.