[Xymon] Flushing Stale messages?

Henrik Størner henrik at hswn.dk
Tue Mar 19 11:02:57 CET 2013


On 15-03-2013 20:31, Clark, Sean wrote:
> As to the debug loading of chk file:
>
>
> 31911 2013-03-15 15:23:17 Opening file /sw/xymon/server/etc/hosts.cfg
> 31911 2013-03-15 15:23:19 Opening file
> /sw/xymon/server/etc/client-local.cfg
> 2013-03-15 15:23:19 Setting up network listener on 127.0.0.1:1985
> 2013-03-15 15:23:19 Setting up signal handlers
> 2013-03-15 15:23:19 Setting up xymond channels
> 31911 2013-03-15 15:23:19 Setting up status channel (id=1)
> 31911 2013-03-15 15:23:19 calling ftok('/sw/xymon/server',1)
> 31911 2013-03-15 15:23:19 ftok() returns: 0x1000047
> 31911 2013-03-15 15:23:19 shmget() returns: 0xD6800C
> 2013-03-15 15:23:19 FATAL: xymond sees clientcount 1, should be 0
> Check for hanging xymond_channel processes or stale semaphores
> 2013-03-15 15:23:19 Cannot setup status channel

This happens when xymond has crashed and is restarting, but either some 
of the old xymond_channel messages are still running (hanging on to a 
shared memory segment or a semaphore), or the shared memory segments 
were not cleaned up after the crash.

You can check with ipcs (as the xymon user) if there are any shared 
memory segments lying around after all of the xymon tasks have exited.

I have a script to cleanup everything and restart Xymon - writing new 
code may on rare occasions mean that xymond crashes :-) - feel free to 
try this. If you're not on a Linux box, make sure the "ipcs -m" and 
"ipcs -s" output has the shmid / semid in column 2. If not, adjust the 
'awk' command to grab the correct column.


#!/bin/sh

if [ `id -u` != `id -u xymon` ]
then
         echo "You must be the 'xymon' user to run this."
         exit 1
fi

echo "Stopping Xymon"
~xymon/server/xymon.sh stop
sleep 2
if [ -f /var/run/xymon/xymond.pid ]
then
         echo "Forcing kill of xymon process, PID `cat 
/var/run/xymon/xymond.pid`"
         kill -9 `cat /var/run/xymon/xymond.pid`
fi

echo "Cleaning up shared memory segments"
ipcs -s|grep "^0"|awk '{print $2}'|while read ID; do ipcrm -s $ID; done
echo "Cleaning up semaphores"
ipcs -m|grep "^0"|awk '{print $2}'|while read ID; do ipcrm -m $ID; done
echo "Cleaning up socket files"
rm ~xymon/server/tmp/xymond_if

echo "Starting Xymon"
~xymon/server/xymon.sh start

echo "Done"
exit 0


Regards,
Henrik




More information about the Xymon mailing list