freebsd-ports/databases/mysqlard/files/mysqlard.sh.in
Gabor Kovesdan b12b87e98e - Use /bin/sh and do not depend on bash
PR:		ports/109768
Submitted by:	Pankov Pavel <pankov_p@mail.ru>
Approved by:	maintainer timeout
2007-03-17 22:22:19 +00:00

184 lines
4.8 KiB
Bash

#!/bin/sh
#
# $Id: mysqlard.server.sh 40 2006-01-20 20:26:11Z dewitge $
#
# MySQL Activity Report
# mysqlard Start script for the MySQL Activity Report Daemon
#
# Copyright 2004 Gert Dewit <gert.dewit@sos.be>
#
# chkconfig: - 79 11
# description: MySQL Activity Report Daemon
# processname: mysqlard
# config: %%PREFIX%%/etc/mysqlard.cnf
# pidfile: /var/run/mysqlard.pid
. %%RC_SUBR%%
# Source the config script
if [ -z "$datadir" ] ; then
echo Loading defaultsettings
. %%PREFIX%%/etc/mysqlard.cnf
fi
########################################################################
# Options, change them in %%PREFIX%%/etc/mysqlard.cnf or you can override
# them here, but that's not recommended. Read the comments in
# %%PREFIX%%/etc/mysqlard.cnf if you want to know what you're changing.
step=${step:="60"}
minsamples=${minsamples:="720"}
datadir=${datadir:="%%PREFIX%%/www/mysqlard"}
pidfile=/var/run/mysqlard.pid
RRDTOOL=${RRDTOOL:="%%PREFIX%%/bin/rrdtool"}
MYSQLARD=${MYSQLARD:="%%PREFIX%%/sbin/mysqlard"}
MYSQLUSER=${MYSQLUSER:="mysqlar"}
MYSQLHOST=${MYSQLHOST:=""}
########################################################################
# don't change anything below this line, but heck, I can't stop you ;-)
confile=${confile:="${datadir}/connections.rrd"}
tabfile=${tabfile:="${datadir}/table_cache.rrd"}
keyfile=${keyfile:="${datadir}/key_cache.rrd"}
queryfile=${queryfile:="${datadir}/queries.rrd"}
slavefile=${slavefile:="${datadir}/slave.rrd"}
slaveopt=
if [ -n "$slave" ]; then
slaveopt=-L
fi
if [ -n "$MYSQLHOST" ] ; then
MYSQLHOST=--host=$MYSQLHOST
fi
# functions
avgsamps () {
avg=$(($1 / $2))
if [ ${avg} -lt 1 ]
then
avg=1
fi
echo ${avg}
}
archives () {
arch=$(($1 / $2))
if [ $(($2 * ${arch} * $3)) -lt $4 ]
then
arch=$((${arch} + 1))
fi
echo ${arch}
}
# calculated values
heartbeat=$((${step} * 2))
hoursamps=$((3600 / ${step}))
houravgs=$(avgsamps ${hoursamps} ${minsamples})
hourarchives=$(archives ${hoursamps} ${houravgs} ${step} 3600)
daysamps=$((86400 / ${step}))
dayavgs=$(avgsamps ${daysamps} ${minsamples})
dayarchives=$(archives ${daysamps} ${dayavgs} ${step} 86400)
weeksamps=$((604800 / ${step}))
weekavgs=$(avgsamps ${weeksamps} ${minsamples})
weekarchives=$(archives ${weeksamps} ${weekavgs} ${step} 604800)
monthsamps=$((2678400 / ${step}))
monthavgs=$(avgsamps ${monthsamps} ${minsamples})
montharchives=$(archives ${monthsamps} ${monthavgs} ${step} 2678400)
yearsamps=$((31622400 / ${step}))
yearavgs=$(avgsamps ${yearsamps} ${minsamples})
yeararchives=$(archives ${yearsamps} ${yearavgs} ${step} 31622400)
# calculated RRA's
hourrra="RRA:AVERAGE:0.5:${houravgs}:${hourarchives}"
dayrra="RRA:AVERAGE:0.5:${dayavgs}:${dayarchives}"
weekrra="RRA:AVERAGE:0.5:${weekavgs}:${weekarchives}"
monthrra="RRA:AVERAGE:0.5:${monthavgs}:${montharchives}"
yearrra="RRA:AVERAGE:0.5:${yearavgs}:${yeararchives}"
allrras="${hourrra} ${dayrra} ${weekrra} ${monthrra} ${yearrra}"
initrrd () {
if [ ! -f ${confile} ]
then
${RRDTOOL} create ${confile} --step ${step} \
DS:threads_connected:GAUGE:${heartbeat}:0:U \
DS:max_connections:GAUGE:${heartbeat}:0:U \
${allrras}
fi
if [ ! -f ${tabfile} ]
then
${RRDTOOL} create ${tabfile} --step ${step} \
DS:open_tables:GAUGE:${heartbeat}:0:U \
DS:table_cache:GAUGE:${heartbeat}:0:U \
DS:created_tmp_tables:COUNTER:${heartbeat}:0:U \
DS:created_tmp_disk_t:COUNTER:${heartbeat}:0:U \
${allrras}
fi
if [ ! -f ${keyfile} ]
then
${RRDTOOL} create ${keyfile} --step ${step} \
DS:key_reads:COUNTER:${heartbeat}:0:U \
DS:key_read_requests:COUNTER:${heartbeat}:0:U \
DS:key_buffer_size:GAUGE:${heartbeat}:0:U \
DS:key_blocks_used:GAUGE:${heartbeat}:0:U \
DS:select_full_join:COUNTER:${heartbeat}:0:U \
DS:select_range_check:COUNTER:${heartbeat}:0:U \
DS:handler_read_key:COUNTER:${heartbeat}:0:U \
DS:handler_read_rnd:COUNTER:${heartbeat}:0:U \
DS:slow_queries:COUNTER:${heartbeat}:0:U \
${allrras}
fi
if [ ! -f ${queryfile} ]
then
${RRDTOOL} create ${queryfile} --step ${step} \
DS:questions:COUNTER:${heartbeat}:0:U \
DS:com_select:COUNTER:${heartbeat}:0:U \
DS:com_insert:COUNTER:${heartbeat}:0:U \
DS:com_update:COUNTER:${heartbeat}:0:U \
DS:com_delete:COUNTER:${heartbeat}:0:U \
${allrras}
fi
if [ ! -f ${slavefile} ]
then
${RRDTOOL} create ${slavefile} --step ${step} \
DS:read_master_log_pos:COUNTER:${heartbeat}:0:U \
DS:exec_master_log_pos:COUNTER:${heartbeat}:0:U \
${allrras}
fi
}
status() {
if [ -f $pidfile ]
then
echo $0 is running. PID `cat ${pidfile}`
else
echo $0 is not running.
fi
}
case "$1" in
start)
initrrd
${MYSQLARD} --step=${step} --datadir=${datadir} --user=${MYSQLUSER}
$MYSQLHOST --pidfile=${pidfile} ${slaveopt}
;;
stop)
kill `cat ${pidfile}`
rm -f ${pidfile}
;;
initrrd)
initrrd
;;
status)
status
;;
*)
echo "Usage: $0 {start|stop|status|initrrd}"
exit 1
esac
exit $?