浏览代码

Added start/stop and smf scripts

Raymond Edah 7 年之前
父节点
当前提交
62bead0bdc

+ 8 - 0
app/init/delete_service.sh

@@ -0,0 +1,8 @@
+#!/usr/bin/bash
+
+# Delete sensu service
+
+/usr/sbin/svcadm disable svc:/site/sensu-client:default
+/usr/sbin/svccfg delete svc:/site/sensu-client:default
+/bin/rm -f /var/svc/manifest/site/sensu-client.xml
+

+ 18 - 0
app/init/install_service.sh

@@ -0,0 +1,18 @@
+#!/usr/bin/bash
+
+# Install a service for Sensu
+
+SENSU_HOME_FOLDER=`/usr/bin/su - sensu -c "/bin/bash -c \"export\"" | egrep "declare -x HOME" | cut -f 2 -d = | sed -e 's/\"//g'`
+ESC_SENSU_HOME_STR=`echo ${SENSU_HOME_FOLDER} | /usr/bin/sed -e 's/\//\\\\\//g'`
+
+/usr/bin/cat ${SENSU_HOME_FOLDER}/app/init/sensu_client_template.xml > /var/svc/manifest/site/sensu-client.xml
+/usr/bin/chmod 0644 /var/svc/manifest/site/sensu-client.xml
+/usr/sbin/svccfg validate /var/svc/manifest/site/sensu-client.xml
+if [ ${?} -eq 0 ]; then
+   /usr/sbin/svccfg import /var/svc/manifest/site/sensu-client.xml
+   /usr/sbin/svcadm restart manifest-import
+else
+   exit_code=${?}
+   echo "Failed to import service manifest (exit code=${exit_code})"
+   exit ${exit_code}
+fi

+ 39 - 0
app/init/sensu_client_template.xml

@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<!DOCTYPE service_bundle SYSTEM
+    "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
+
+<service_bundle type="manifest" name="sensu-client">
+  <service name="site/sensu-client" type="service" version="1">
+    <create_default_instance enabled="false" />
+
+    <!-- Dependencies -->
+    <dependency
+        name="filesystem-local" grouping="require_all"
+        restart_on="restart" type="service">
+        <service_fmri value="svc:/system/filesystem/local:default" />
+    </dependency>
+
+    <!-- Execution method for start and stop -->
+    <exec_method
+         type="method" name="start"
+         exec="SENSU_HOME/app/sbin/sensu_svcs_wrapper.sh start" timeout_seconds="60" >
+      <method_context>
+          <method_credential user="root" group="root" />
+      </method_context>
+    </exec_method>
+
+    <exec_method
+       type="method" name="stop"
+       exec="SENSU_HOME/app/sbin/sensu_svcs_wrapper.sh stop" timeout_seconds="60" >
+    </exec_method>
+
+    <template>
+       <common_name>
+         <loctext xml:lang="C">Sensu Client (SE)</loctext>
+       </common_name>
+       <documentation>
+          <manpage title="No man" section="99" manpath="/dev/null" />
+       </documentation>
+    </template>
+  </service>
+</service_bundle>

+ 20 - 0
app/init/start_sensu_client.sh

@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+
+# Starts up Sensu Client
+
+# Default settings, can be overridden in ${HOME}/etc/sensu/sensu.env
+export PATH=${HOME}/app/bin:${HOME}/app/sbin:/opt/local/sbin:/opt/local/bin:$PATH
+CONFIG_FOLDER=${HOME}/etc/sensu/conf.d
+PID_FILE=${HOME}/run/sensu-client.pid
+LOG_FILE=${HOME}/log/sensu-client.log
+LOG_LEVEL=info
+
+if [ -f ${HOME}/etc/sensu/sensu.env ]; then
+   . ${HOME}/etc/sensu/sensu.env
+fi
+
+${HOME}/app/bin/bundle exec ${HOME}/app/bin/sensu-client -b \
+  -d ${CONFIG_FOLDER} \
+  -p ${PID_FILE} \
+  -l ${LOG_FILE} \
+  -L ${LOG_LEVEL}

+ 26 - 0
app/init/stop_sensu_client.sh

@@ -0,0 +1,26 @@
+#!/usr/bin/env bash
+
+# Stop the Sensu Client
+
+BIN_KILL=/usr/bin/kill
+BIN_STAT=/usr/bin/stat
+BIN_CAT=/usr/bin/cat
+
+# Default settings, can be overridden in ${HOME}/etc/sensu/sensu.env
+export PATH=${HOME}/app/bin:${HOME}/app/sbin:/opt/local/sbin:/opt/local/bin:$PATH
+PID_FILE=${HOME}/run/sensu-client.pid
+
+if [ -f ${HOME}/etc/sensu/sensu.env ]; then
+   . ${HOME}/etc/sensu/sensu.env
+fi
+
+if [ -f ${PID_FILE} ] && [ `${BIN_STAT} --printf=%s ${PID_FILE}` -gt 0 ]; then
+   echo "Stopping sensu client.."
+   ${BIN_KILL} `${BIN_CAT} ${PID_FILE}`
+   exit_code=${?}
+else
+   echo "Pidfile not found"
+   exit_code=20
+fi
+
+exit ${exit_code}

+ 17 - 0
app/sbin/sensu_svcs_wrapper.sh

@@ -0,0 +1,17 @@
+#!/usr/bin/bash
+
+# Wrapper script for starting/stopping sensu. Intended to be called from svcadm
+SENSU_HOME=`/usr/bin/su - sensu -c "/bin/bash -c \"export\"" | egrep "declare -x HOME" | cut -f 2 -d = | sed -e 's/\"//g'`
+
+case "${1}" in
+'start')
+   /usr/bin/su -  sensu -c ${SENSU_HOME}/app/init/start_sensu_client.sh
+   ;;
+'stop')
+   /usr/bin/su -  sensu -c ${SENSU_HOME}/app/init/stop_sensu_client.sh
+   ;;
+*)
+   echo "Usage: ${0} (start|stop)"
+   exit 1;
+   ;;
+esac

+ 18 - 0
sensu/sensu.env

@@ -0,0 +1,18 @@
+# PATH variable
+PATH=${HOME}/app/bin:${HOME}/app/sbin:/opt/local/sbin:/opt/local/bin:$PATH
+
+# Don't delete the next line!
+export PATH
+
+# Path to Sensu comnfig folder
+
+CONFIG_FOLDER=${HOME}/etc/sensu/conf.d
+
+# Path to Sensu PID file
+PID_FILE=${HOME}/run/sensu-client.pid
+
+# Path to Sensu Log File
+LOG_FILE=${HOME}/log/sensu-client.log
+
+# Sensu Logging Level
+LOG_LEVEL=info