[Xymon] xymon-client startup script issue (and fix)
Bakkies Gatvol
bakgat8 at hotmail.com
Wed Sep 25 03:52:31 CEST 2013
I did not actually test restart, but I did a start on a running client and it said
Xymon client already running, re-starting it
and it seemed to actually successfully stop and start the client. (Timestamp on ps changed)
So I was thinking that a restart would work because start does it's own restart.
Which was not what I was expecting when I ran "start", but it was not a bad surprise. I contemplated if I could use start for stop ... but nope, that was not going to do what I needed!
In my own code fix, I fixed restart as well / the same way as stop. But I thought best to be conservative with a public posting :)
Bakkies
From: jlaidman at rebel-it.com.au
Date: Wed, 25 Sep 2013 11:02:40 +1000
Subject: Re: [Xymon] xymon-client startup script issue (and fix)
To: bakgat8 at hotmail.com
CC: xymon at xymon.com
So when CLIENTHOSTNAME is defined, it needs to get passed into $DAEMON (ie runclient.sh) with the "--hostname=" parameter, because that overrides $MACHINEDOTS, which is used in the PID filename. If it cannot find the PID filename, it won't be able to get the PID and kill the process.
Yes, this looks like a bug.
I don't see how "restart" worked though. Perhaps it looked like it restarted because it never stopped?
J
On 25 September 2013 04:51, Bakkies Gatvol <bakgat8 at hotmail.com> wrote:
I am documenting this for whomever else may need this. This file is from an rpm xymon-client-4.3.10-1 that I got off the net somewhere. I just figured out why the "stop" does not work.
I set CLIENTHOSTNAME in here
=> more /etc/default/xymon-client
# Configure the Xymon client settings.
# You MUST set the list of Xymon servers that this
# client reports to.
# It is good to use IP-adresses here instead of DNS
# names - DNS might not work if there's a problem.
#
# E.g. (a single Xymon server)
# XYMONSERVERS="192.168.1.1"
# or (multiple servers)
# XYMONSERVERS="10.0.0.1 192.168.1.1"
XYMONSERVERS="10.65.1.66 10.65.20.151"
# The defaults usually suffice for the rest of this file,
# but you can tweak the hostname that the client reports
# data with.
# Thu Mar 21 15:30:16 EDT 2013
CLIENTHOSTNAME="$(hostname | cut -f1 -d'.')"
# Red Hat EL version 3 uses a different vmstat layout
# than all other Linux versions. So for a client running this
# particular OS, set CLIENTOS as below.
# Do NOT set this on any other Red Hat version.
# CLIENTOS="rhel3"
but the script does not pass that info on the stop - so the start worked fine, but the stop not. Even the restart worked. I fixed below
#
# xymon-client This shell script takes care of starting and stopping
# the Xymon client.
#
# chkconfig: 2345 80 20
# description: Xymon is a network monitoring tool that allows \
# you to monitor hosts and services. This client reports local \
# system statistics (cpu-, memory-, disk-utilisation etc) \
# to the Xymon server.
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/lib/xymon/client/runclient.sh
NAME=xymon-client
DESC=xymon-client
test -x $DAEMON || exit 0
CMD="$1"
# Include xymon-client defaults if available
DMNOPTS=""
if [ -f /etc/default/xymon-client ] ; then
. /etc/default/xymon-client
else
echo "Installation failure - missing /etc/default/xymon-client"
exit 1
fi
if [ "$XYMONSERVERS" = "" ]; then
echo "Please configure XYMONSERVERS in /etc/default/xymon-client"
exit 1
fi
set $XYMONSERVERS
if [ $# -eq 1 ]; then
echo "XYMSRV=\"$XYMONSERVERS\"" >/var/run/xymonclient-runtime.cfg
echo "XYMSERVERS=\"\"" >>/var/run/xymonclient-runtime.cfg
else
echo "XYMSRV=\"0.0.0.0\"" >/var/run/xymonclient-runtime.cfg
echo "XYMSERVERS=\"$XYMONSERVERS\"" >>/var/run/xymonclient-runtime.cfg
fi
if [ "$CLIENTHOSTNAME" != "" ]; then
DMNOPTS="${DMNOPTS} --hostname=${CLIENTHOSTNAME}"
fi
if [ "$CLIENTOS" != "" ]; then
DMNOPTS="${DMNOPTS} --os=${CLIENTOS}"
fi
set -e
case "$CMD" in
start)
echo -n "Starting $DESC: "
su -c "$DAEMON $DMNOPTS start" - xymon
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
su -c "$DAEMON stop" - xymon ### is
## su -c "$DAEMON $DMNOPTS stop" - xymon # ## should be this!!!
echo "$NAME."
;;
restart)
echo -n "Restarting $DESC: "
su -c "$DAEMON stop" - xymon
su -c "$DAEMON $DMNOPTS start" - xymon
echo "$NAME."
;;
*)
N=/etc/init.d/$NAME
# echo "Usage: $N {start|stop|restart}" >&2
echo "Usage: $N {start|stop|restart}" >&2
exit 1
;;
esac
exit 0
_______________________________________________
Xymon mailing list
Xymon at xymon.com
http://lists.xymon.com/mailman/listinfo/xymon
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.xymon.com/pipermail/xymon/attachments/20130924/ab39e993/attachment.html>
More information about the Xymon
mailing list