You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-10-20 00:09:21 +03:00
141 lines
4.4 KiB
Bash
141 lines
4.4 KiB
Bash
#!/bin/sh
|
|
#
|
|
#/*******************************************************************************
|
|
#* Script Name: getps.sh
|
|
#* Date Created: 2009.03.09
|
|
#* Author: Calpont Corp.
|
|
#* Purpose: Retrieve the appropriate ps files on all servers in the stack
|
|
#*
|
|
#* Parameters: date - day of month in question (dd)
|
|
#* starttime - start of ps period (hh:mm)
|
|
#* endtime - end of ps period (hh:mm)
|
|
#*
|
|
#******************************************************************************/
|
|
|
|
CTOOLS=/usr/local/mariadb/columnstore/tools
|
|
|
|
date=$1
|
|
starttime=$2
|
|
endtime=$3
|
|
hostdir=$4
|
|
localhost=$(hostname -s)
|
|
modulename=`cat /usr/local/mariadb/columnstore/local/module`
|
|
if [ -f /tmp/.prat/.hostlist2.txt ]; then
|
|
sc=`wc -l < /tmp/.prat/.hostlist2.txt`
|
|
else
|
|
sc=0
|
|
fi
|
|
rc=1
|
|
#
|
|
readserverlist ()
|
|
{ cat /tmp/hostlist.txt |
|
|
while read moduletype hostname hostdir; do
|
|
if [ $hostname = $localhost ]; then
|
|
echo Extracting system activity data from local host $localhost
|
|
getpslocal $date $starttime $endtime $hostdir
|
|
elif [ $rc -lt $sc ]; then
|
|
rc=$sc
|
|
cat /tmp/.prat/.hostlist2.txt |
|
|
while read servername srvpwd hostdir; do
|
|
if [ $servername != $localhost ]; then
|
|
echo Extracting system activity data from remote host $servername
|
|
getpsremote $servername $srvpwd $date $starttime $endtime $hostdir
|
|
fi
|
|
done
|
|
fi
|
|
done
|
|
}
|
|
#
|
|
getpsremote ()
|
|
{ # Send the command to the remote module(s) to extract ps data
|
|
/usr/local/mariadb/columnstore/bin/remote_command.sh $servername $srvpwd "$CTOOLS/getps.sh $date $starttime $endtime $hostdir"
|
|
}
|
|
#
|
|
getpslocal ()
|
|
{ mkdir -p $CTOOLS/data/$hostdir/ps
|
|
# create the beginning and ending time search variables
|
|
st=`echo $starttime | awk -F":" '{ printf "%.4d\n", $1$2 }'`
|
|
sh=`echo $starttime | awk -F":" '{ print $1 }'`
|
|
sm=`echo $starttime | awk -F":" '{ print $2 }'`
|
|
et=`echo $endtime | awk -F":" '{ printf "%.4d\n", $1$2 }'`
|
|
eh=`echo $endtime | awk -F":" '{ print $1 }'`
|
|
em=`echo $endtime | awk -F":" '{ print $2 }'`
|
|
start="Start $sh:$sm"
|
|
end="End $eh:$em"
|
|
foundstart="no"
|
|
foundend="no"
|
|
#
|
|
# Find the proper daily log to search
|
|
curdate=`date +%d`
|
|
logdate=`expr $curdate - $date`
|
|
if [ $date == $curdate ]; then
|
|
logfile="pslog"
|
|
elif [ $logdate -gt 7 ]; then
|
|
echo "ps daily logs are available for one week only"
|
|
exit
|
|
else
|
|
logfile="pslog.$logdate"
|
|
fi
|
|
#
|
|
#-----------------------------------------------------------------------------
|
|
# Search through the file looking for start and end time matches
|
|
#-----------------------------------------------------------------------------
|
|
#
|
|
# Look for beginning time
|
|
k=$st
|
|
while [ $k -ge $st ] && [ $k -le $et ] && [ $foundstart == "no" ]; do
|
|
if [ $sm -ge 60 ]; then
|
|
k=`expr $k + 39`
|
|
sm=`expr $sm - 61`
|
|
elif [ $k -ge $st ] && [ $k -le $et ]; then
|
|
grep -q "Start $sh:$sm" /var/log/prat/ps/$logfile
|
|
if [ "$?" -eq "0" ] && [ $foundstart == "no" ]; then
|
|
start="Start $sh:$sm"
|
|
foundstart="yes"
|
|
fi
|
|
fi
|
|
if [ $foundstart == "no" ]; then
|
|
k=`expr $k + 0`
|
|
k=$((k + 1))
|
|
((sm++))
|
|
fi
|
|
done
|
|
#
|
|
# Look for ending time
|
|
while [ $k -ge $st ] && [ $k -le $et ] && [ $foundend == "no" ]; do
|
|
if [ $em -ge 60 ]; then
|
|
k=`expr $k + 39`
|
|
em=`expr $em - 61`
|
|
elif [ $k -ge $st ] && [ $k -le $et ]; then
|
|
grep -q "End $eh:$em" /var/log/prat/ps/$logfile
|
|
if [ "$?" -eq "0" ] && [ $foundend == "no" ]; then
|
|
end="End $eh:$em"
|
|
foundend="yes"
|
|
fi
|
|
fi
|
|
if [ $foundend == "no" ]; then
|
|
k=`expr $k + 0`
|
|
k=$((k + 1))
|
|
((em++))
|
|
fi
|
|
done
|
|
#
|
|
# create the awk command and write it to a temporary run file
|
|
cmd="/$start/,/$end/ {print \$0} "
|
|
echo $cmd >> /tmp/cmd.$$
|
|
#
|
|
# execute the command
|
|
awk -f /tmp/cmd.$$ /var/log/prat/ps/$logfile > $CTOOLS/data/$hostdir/ps/pslog
|
|
#
|
|
rm -rf /tmp/cmd.$$
|
|
}
|
|
#
|
|
if [ $modulename = "dm1" ]; then
|
|
# Read through the host list and process each module in the stack
|
|
readserverlist
|
|
else
|
|
getpslocal $date $starttime $endtime $hostdir
|
|
fi
|
|
#
|
|
exit 0
|