diff --git a/rattail_fabric2/deploy/check-supervisor-process b/rattail_fabric2/deploy/check-supervisor-process new file mode 100755 index 0000000..470a8ec --- /dev/null +++ b/rattail_fabric2/deploy/check-supervisor-process @@ -0,0 +1,57 @@ +#!/bin/sh +################################################################################ +# +# Rattail -- Retail Software Framework +# Copyright © 2010-2019 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_fabric2/deploy/check-systemd-service b/rattail_fabric2/deploy/check-systemd-service new file mode 100755 index 0000000..16954e4 --- /dev/null +++ b/rattail_fabric2/deploy/check-systemd-service @@ -0,0 +1,46 @@ +#!/bin/sh +################################################################################ +# +# Rattail -- Retail Software Framework +# Copyright © 2010-2019 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 systemd service. It was +# designed for use with Shinken monitoring. Invoke like so: +# +# check-systemd-service NAME +# +# Where NAME refers to the process, e.g. 'rattail-soffice'. 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-systemd-service NAME" + exit 3 +fi + +sudo systemctl is-active $NAME.service || exit 2 + +exit 0 diff --git a/rattail_fabric2/rattail.py b/rattail_fabric2/rattail.py index 27e226e..39baa74 100644 --- a/rattail_fabric2/rattail.py +++ b/rattail_fabric2/rattail.py @@ -48,6 +48,8 @@ def bootstrap_rattail(c, home='/var/lib/rattail', uid=None, shell='/bin/bash'): mkdir(c, '/srv/rattail/init', use_sudo=True) deploy(c, 'daemon', '/srv/rattail/init/daemon', use_sudo=True) deploy(c, 'check-rattail-daemon', '/usr/local/bin/check-rattail-daemon', use_sudo=True) + deploy(c, 'check-supervisor-process', '/usr/local/bin/check-supervisor-process') + deploy(c, 'check-systemd-service', '/usr/local/bin/check-systemd-service') deploy(c, 'luigid', '/srv/rattail/init/luigid', use_sudo=True) deploy(c, 'soffice', '/srv/rattail/init/soffice', use_sudo=True) # TODO: deprecate / remove these