Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > cfb0e85c24472307f1d51e15f8caddcc > files > 7

mysqlard-1.0.0-10mdv2010.0.i586.rpm

#!/bin/bash
#
#  $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: 2345 79 11
# description: MySQL Activity Report Daemon
# processname: mysqlard
# config: /etc/mysqlard/mysqlard.cnf
# pidfile: /var/run/mysqlard/mysqlard.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source the config script
if [[ "$datadir" == "" ]] ; then
	. /etc/mysqlard/mysqlard.cnf
fi

########################################################################
# Options, change them in /etc/mysqlard/mysqlard.cnf or you can override
# them here, but that's not recommended. Read the comments in
# /etc/mysqlard/mysqlard.cnf if you want to know what you're changing.

step=${step:="60"}
minsamples=${minsamples:="720"}
datadir=${datadir:="/var/lib/mysqlard"}
pidfile=${pidfile:="/var/run/mysqlard/mysqlard.pid"}
RRDTOOL=${RRDTOOL:="/usr/bin/rrdtool"}
MYSQLARD=${MYSQLARD:="/usr/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"}

# Source configuration.
if [ -f /etc/sysconfig/mysqlard ]; then
    . /etc/sysconfig/mysqlard
fi

slaveopt=
if [[ "$slave" != "" ]]; then
  slaveopt=-L
fi

if [[ "$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
}

RETVAL=0

start() {
        echo -n "Starting mysqlard"
	initrrd
	${MYSQLARD} \
	    --step=${step} \
	    --datadir=${datadir} \
	    --user=${MYSQLUSER} $MYSQLHOST \
	    --pidfile=${pidfile} ${slaveopt} 2>/dev/null 1>&2 && success || failure
        RETVAL=$?
	echo
        [ $RETVAL = 0 ] && touch /var/lock/subsys/mysqlard
        return $RETVAL
}
stop() {
	echo -n "Stopping mysqlard"
	killproc mysqlard
	RETVAL=$?
	echo
	[ $RETVAL = 0 ] && rm -f /var/lock/subsys/mysqlard ${pidfile}
}

# See how we were called.
case "$1" in
  start)
	start
	;;
  stop)
	stop
	;;
  initrrd)
	initrrd
	;;
  status)
        status mysqlard
	RETVAL=$?
	;;
  restart|reload)
	stop
	start
	;;
  condrestart)
	if [ -f ${pidfile} ] ; then
	    stop
	    start
	fi
	;;
  *)
	echo -n "Usage: $0 {start|stop|initrrd|status|restart|condrestart|reload}"
	exit 1
esac

exit $RETVAL