From 1962b62f11f8408eb4550933432732719ec2c3fb Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Wed, 12 Dec 2018 19:33:55 -0600 Subject: [PATCH] Add basic `check-supervisor-process` script for use with Shinken monitoring --- .../deploy/check-supervisor-process | 57 +++++++++++++++++++ rattail_fabric/rattail.py | 1 + 2 files changed, 58 insertions(+) create mode 100755 rattail_fabric/deploy/check-supervisor-process diff --git a/rattail_fabric/deploy/check-supervisor-process b/rattail_fabric/deploy/check-supervisor-process new file mode 100755 index 0000000..8a7323a --- /dev/null +++ b/rattail_fabric/deploy/check-supervisor-process @@ -0,0 +1,57 @@ +#!/bin/sh +################################################################################ +# +# Rattail -- Retail Software Framework +# Copyright © 2010-2018 Lance Edgar +# +# This file is part of Rattail. +# +# Rattail 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, either version 3 of the License, or (at your option) any later +# version. +# +# Rattail is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +# details. +# +# You should have received a copy of the GNU General Public License along with +# Rattail. If not, see . +# +################################################################################ +# +# This is a simple script which will output a single line of info, and exit +# with a return code which indicates status of a given supervisor process. It +# was designed for use with Shinken monitoring. Invoke like so: +# +# check-supervisor-process NAME +# +# Where NAME refers to the process, e.g. 'rattail:datasync'. Exit code may be: +# +# * 0 = process is confirmed running +# * 2 = process is confirmed *not* running +# * 3 = unknown state +# +################################################################################ + +NAME="$1" +if [ "$NAME" = "" ]; then + echo "Usage: check-supervisor-process NAME" + exit 3 +fi + +STATUS=$(sudo supervisorctl status $NAME | awk -F ' +' '{print $2}') + +if [ $STATUS = "RUNNING" ]; then + echo "supervisor reports RUNNING status" + exit 0 +fi + +if [ "$STATUS" = "" ]; then + echo "unable to perform status check!" + exit 3 +fi + +echo "supervisor reports $STATUS status" +exit 2 diff --git a/rattail_fabric/rattail.py b/rattail_fabric/rattail.py index a6ba9dc..66a56e9 100644 --- a/rattail_fabric/rattail.py +++ b/rattail_fabric/rattail.py @@ -51,6 +51,7 @@ def bootstrap_rattail(home='/var/lib/rattail', uid=None, shell='/bin/bash'): mkdir('/srv/rattail/init') deploy('daemon', '/srv/rattail/init/daemon') deploy('check-rattail-daemon', '/usr/local/bin/check-rattail-daemon') + deploy('check-supervisor-process', '/usr/local/bin/check-supervisor-process', mode='0755') deploy('luigid', '/srv/rattail/init/luigid') deploy('soffice', '/srv/rattail/init/soffice') # TODO: deprecate / remove these