PR: ports/109768 Submitted by: Pankov Pavel <pankov_p@mail.ru> Approved by: maintainer timeout
184 lines
4.8 KiB
Bash
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 $?
|