The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
grafana/scripts/init.sh

174 lines
4.0 KiB

#! /usr/bin/env bash
# chkconfig: 2345 80 05
# description: Grafana web server & backend
# processname: grafana
# config: /etc/grafana/grafana.ini
# pidfile: /var/run/grafana.pid
### BEGIN INIT INFO
# Provides: grafana
# Required-Start: $all
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start grafana at boot time
### END INIT INFO
# tested on
# 1. New lsb that define start-stop-daemon
# 3. Centos with initscripts package installed
if [ -r /lib/lsb/init-functions ]; then
source /lib/lsb/init-functions
fi
DAEMON_NAME="grafana"
DAEMON_USER="grafana"
DAEMON_PATH="/opt/grafana/current/grafana"
DAEMON_OPTS="--config=/etc/grafana/grafana.ini web"
DAEMON_PWD="/opt/grafana/current"
DAEMON_PID="/var/run/${DAEMON_NAME}.pid"
DAEMON_NICE=0
DAEMON_LOG='/var/log/grafana/grafana.log'
# If the daemon is not there, then exit.
[ -x $DAEMON_PATH ] || exit 5
if [ "x$STDOUT" == "x" ]; then
STDOUT=/tmp/grafana.log
fi
function pidofproc() {
if [ $# -ne 3 ]; then
echo "Expected three arguments, e.g. $0 -p pidfile daemon-name"
fi
pid=`pgrep -f $3`
local pidfile=`cat $2`
if [ "x$pidfile" == "x" ]; then
return 1
fi
if [ "x$pid" != "x" -a "$pidfile" == "$pid" ]; then
return 0
fi
return 1
}
function killproc() {
if [ $# -ne 3 ]; then
echo "Expected three arguments, e.g. $0 -p pidfile signal"
fi
pid=`cat $2`
kill -s $3 $pid
}
function log_failure_msg() {
echo "$@" "[ FAILED ]"
}
function log_success_msg() {
echo "$@" "[ OK ]"
}
do_start() {
cd $DAEMON_PWD
# Checked the PID file exists and check the actual status of process
if [ -e $DAEMON_PID ]; then
pidofproc -p $DAEMON_PID $DAEMON_PATH > /dev/null 2>&1 && status="0" || status="$?"
# If the status is SUCCESS then don't need to start again.
if [ "x$status" = "x0" ]; then
log_failure_msg "$DAEMON_NAME process is running"
exit 1 # Exit
fi
fi
# Start the daemon.
log_success_msg "Starting the process" "$DAEMON_NAME"
# Start the daemon with the help of start-stop-daemon
# Log the message appropriately
if which start-stop-daemon > /dev/null 2>&1; then
start-stop-daemon \
--start --quiet --oknodo --background \
--nicelevel $DAEMON_NICE \
--chdir "${DAEMON_PWD}" \
--pidfile "${DAEMON_PID}" --make-pidfile \
--chuid "${DAEMON_USER}" \
--exec "${DAEMON_PATH}" -- $DAEMON_OPTS
result=$?
else
touch ${DAEMON_PID}
chown $DAEMON_USER "${DAEMON_PID}"
#daemon --user $DAEMON_USER --pidfile $DAEMON_PID nohup $DAEMON_PATH $DAEMON_OPTS
su -s /bin/sh -c "nohup ${DAEMON_PATH} --pidfile=${DAEMON_PID} ${DAEMON_OPTS} >> $STDOUT 3>&1 &" $DAEMON_USER
fi
log_success_msg "$DAEMON_NAME process was started"
}
do_stop() {
local result
pidofproc -p "${DAEMON_PID}" "${DAEMON_PATH}" > /dev/null
if [ $? -ne 0 ]; then
log_failure_msg "${DAEMON_NAME} is not started"
result=0
else
log_success_msg "Stopping ${DAEMON_NAME}"
killproc -p "${DAEMON_PID}" SIGTERM
result=$?
if [ $result = 0 ]; then
log_success_msg "Stopped ${DAEMON_NAME}"
rm "${DAEMON_PID}"
fi
fi
return $result
}
do_restart() {
local result
do_stop
result=$?
sleep 2
if [ $result = 0 ]; then
do_start
result=$?
fi
return $result
}
do_status() {
if [ -e $DEAMON_PID ]; then
pidofproc -p "${DAEMON_PID}" "${DAEMON_PATH}" > /dev/null
if [ $? -ne 0 ]; then
log_failure_msg "$DAEMON_NAME Process is not running"
exit 1
else
log_success_msg "$DAEMON_NAME Process is running"
exit 0
fi
else
log_failure_msg "$DAEMON_NAME Process is not running"
exit 3
fi
}
do_usage() {
echo $"Usage: $0 {start | stop | restart | status}"
exit 1
}
case "$1" in
start) do_start; exit $? ;;
stop) do_stop; exit $? ;;
restart) do_restart; exit $? ;;
status) do_status; exit $? ;;
*) do_usage; exit 1 ;;
esac