From 2f5a1c4df6fb0f2afdf34348875384e84c0e1881 Mon Sep 17 00:00:00 2001 From: martin Date: Thu, 16 Jun 2011 20:01:37 -0400 Subject: [PATCH] cc-2055: switch to init.d -monit is now temporarily disabled when intentionally stopped a service --- install/airtime-install.php | 2 ++ install/include/AirtimeIni.php | 10 +++++++++- python_apps/media-monitor/airtime-media-monitor-init-d | 4 +++- python_apps/monit/airtime-monit.cfg | 5 +++++ python_apps/pypo/airtime-playout-init-d | 9 ++++++++- python_apps/show-recorder/airtime-show-recorder-init-d | 5 ++++- 6 files changed, 31 insertions(+), 4 deletions(-) diff --git a/install/airtime-install.php b/install/airtime-install.php index cb4a0c90f..ebec6de04 100644 --- a/install/airtime-install.php +++ b/install/airtime-install.php @@ -97,6 +97,8 @@ if ($overwrite) { echo "* Creating INI files".PHP_EOL; AirtimeIni::CreateIniFiles(); } +AirtimeIni::CreateMonitFile(); + AirtimeInstall::InstallPhpCode(); AirtimeInstall::InstallBinaries(); diff --git a/install/include/AirtimeIni.php b/install/include/AirtimeIni.php index dd228f997..1dc2b7d19 100644 --- a/install/include/AirtimeIni.php +++ b/install/include/AirtimeIni.php @@ -27,6 +27,7 @@ class AirtimeIni const CONF_FILE_RECORDER = "/etc/airtime/recorder.cfg"; const CONF_FILE_LIQUIDSOAP = "/etc/airtime/liquidsoap.cfg"; const CONF_FILE_MEDIAMONITOR = "/etc/airtime/media-monitor.cfg"; + const CONF_FILE_MONIT = "/etc/monit/conf.d/airtime-monit.cfg"; public static function IniFilesExist() { @@ -75,7 +76,14 @@ class AirtimeIni exit(1); } if (!copy(__DIR__."/../../python_apps/media-monitor/media-monitor.cfg", AirtimeIni::CONF_FILE_MEDIAMONITOR)){ - echo "Could not copy MediaMonitor.cfg to /etc/airtime/. Exiting."; + echo "Could not copy media-monitor.cfg to /etc/airtime/. Exiting."; + exit(1); + } + } + + public static function CreateMonitFile(){ + if (!copy(__DIR__."/../../python_apps/monit/airtime-monit.cfg", AirtimeIni::CONF_FILE_MONIT)){ + echo "Could not copy airtime-monit.cfg to /etc/monit/conf.d/. Exiting."; exit(1); } } diff --git a/python_apps/media-monitor/airtime-media-monitor-init-d b/python_apps/media-monitor/airtime-media-monitor-init-d index e6450461b..46b5f8bf7 100755 --- a/python_apps/media-monitor/airtime-media-monitor-init-d +++ b/python_apps/media-monitor/airtime-media-monitor-init-d @@ -16,12 +16,14 @@ NAME=Airtime\ Media\ Monitor DAEMON=/usr/lib/airtime/media-monitor/airtime-media-monitor PIDFILE=/var/run/airtime-media-monitor.pid -start () { +start () { + monit monitor airtime-media-monitor start-stop-daemon --start --background --quiet --chuid $USERID:$GROUPID --make-pidfile --pidfile $PIDFILE --startas $DAEMON } stop () { # Send TERM after 5 seconds, wait at most 30 seconds. + monit unmonitor airtime-media-monitor start-stop-daemon --stop --oknodo --retry TERM/5/0/30 --quiet --pidfile $PIDFILE rm -f $PIDFILE } diff --git a/python_apps/monit/airtime-monit.cfg b/python_apps/monit/airtime-monit.cfg index 10f328e3f..647fffd10 100644 --- a/python_apps/monit/airtime-monit.cfg +++ b/python_apps/monit/airtime-monit.cfg @@ -1,5 +1,10 @@ set daemon 10 # Poll at 10 second intervals set logfile syslog facility log_daemon + + set httpd port 2812 and use address 127.0.0.1 + allow localhost + allow admin:monit + check process airtime-playout with pidfile "/var/run/airtime-playout.pid" start program = "/etc/init.d/airtime-playout start" with timeout 10 seconds diff --git a/python_apps/pypo/airtime-playout-init-d b/python_apps/pypo/airtime-playout-init-d index 994b0c6f2..038a83a42 100755 --- a/python_apps/pypo/airtime-playout-init-d +++ b/python_apps/pypo/airtime-playout-init-d @@ -19,15 +19,22 @@ PIDFILE0=/var/run/airtime-playout.pid DAEMON1=/usr/lib/airtime/pypo/bin/airtime-liquidsoap PIDFILE1=/var/run/airtime-liquidsoap.pid -start () { +start () { + monit monitor airtime-playout start-stop-daemon --start --background --quiet --chuid $USERID:$GROUPID --make-pidfile --pidfile $PIDFILE0 --startas $DAEMON0 + + monit monitor airtime-liquidsoap start-stop-daemon --start --background --quiet --chuid $USERID:$GROUPID --make-pidfile --pidfile $PIDFILE1 --startas $DAEMON1 } stop () { # Send TERM after 5 seconds, wait at most 30 seconds. + + monit unmonitor airtime-playout start-stop-daemon --stop --oknodo --retry TERM/5/0/30 --quiet --pidfile $PIDFILE0 rm -f $PIDFILE0 + + monit unmonitor airtime-liquidsoap start-stop-daemon --stop --oknodo --retry TERM/5/0/30 --quiet --pidfile $PIDFILE1 rm -f $PIDFILE1 } diff --git a/python_apps/show-recorder/airtime-show-recorder-init-d b/python_apps/show-recorder/airtime-show-recorder-init-d index deb207653..7058a0c4b 100755 --- a/python_apps/show-recorder/airtime-show-recorder-init-d +++ b/python_apps/show-recorder/airtime-show-recorder-init-d @@ -16,12 +16,15 @@ NAME=Airtime\ Show\ Recorder DAEMON=/usr/lib/airtime/show-recorder/airtime-show-recorder PIDFILE=/var/run/airtime-show-recorder.pid -start () { +start () { + monit monitor airtime-show-recorder start-stop-daemon --start --background --quiet --chuid $USERID:$GROUPID --make-pidfile --pidfile $PIDFILE --startas $DAEMON } stop () { # Send TERM after 5 seconds, wait at most 30 seconds. + + monit unmonitor airtime-show-recorder start-stop-daemon --stop --oknodo --retry TERM/5/0/30 --quiet --pidfile $PIDFILE rm -f $PIDFILE }