dba551a518
Fix below linters errors E010 The "do" should be on same line as for E010 The "do" should be on same line as while E011 Then keyword is not on same line as if or elif keyword E020 Function declaration not in format ^function name {$ Ignore: E041 Arithmetic expansion using $[ is deprecated for $(( E042 local declaration hides errors E043 Arithmetic compound has inconsistent return semantics E044 Use [[ for non-POSIX comparisions Story: 2003366 Task: 24423 Change-Id: I8b6b72e702d3e89d1813772d6bf16819e28e818c Signed-off-by: Martin Chen <haochuan.z.chen@intel.com>
206 lines
5.8 KiB
Bash
Executable File
206 lines
5.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
#Copyright (c) 2016 Wind River Systems, Inc.
|
|
#
|
|
#SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
# This script is used to parse postgres bz2 files for postgres connection stats.
|
|
# It is called by parse-controllers.sh script for either large office or CPE.
|
|
|
|
source ../lab.conf
|
|
|
|
PARSERDIR=$(dirname $0)
|
|
. ${PARSERDIR}/parse-util.sh
|
|
|
|
if [ -z "${DATABASE_LIST}" ]; then
|
|
WARNLOG "DATABASE_LIST is not set in the lab.conf file. Use default setting"
|
|
DATABASE_LIST="cinder glance keystone nova neutron ceilometer heat sysinv aodh postgres nova_api"
|
|
fi
|
|
|
|
# Do all files if no files specified
|
|
if [ -z "${1}" ]; then
|
|
FILES=$(ls controller*postgres.bz2)
|
|
else
|
|
FILES=$(ls $@)
|
|
fi
|
|
LOG "Parsing postgres files ${FILES}"
|
|
|
|
function generate_header {
|
|
local header="Date/Time,Total"
|
|
for DB in ${DATABASE_LIST}; do
|
|
if [ ${DB} == "nova_api" ]; then
|
|
header="${header},Nova API"
|
|
else
|
|
header="${header},${DB^}"
|
|
fi
|
|
done
|
|
for DB in ${DATABASE_LIST}; do
|
|
if [ ${DB} == "nova_api" ]; then
|
|
header="${header},Nova API Active"
|
|
else
|
|
header="${header},${DB^} Active"
|
|
fi
|
|
done
|
|
for DB in ${DATABASE_LIST}; do
|
|
if [ ${DB} == "nova_api" ]; then
|
|
header="${header},Nova API Idle"
|
|
else
|
|
header="${header},${DB^} Idle"
|
|
fi
|
|
done
|
|
for DB in ${DATABASE_LIST}; do
|
|
if [ ${DB} == "nova_api" ]; then
|
|
header="${header},Nova API Other"
|
|
else
|
|
header="${header},${DB^} Other"
|
|
fi
|
|
done
|
|
echo $header
|
|
}
|
|
|
|
function generate_grep_str {
|
|
local grepstr="time:"
|
|
for DB in ${DATABASE_LIST}; do
|
|
grepstr="${grepstr}|${DB}"
|
|
done
|
|
grepstr="${grepstr}|breakdown|connections total|rows"
|
|
echo $grepstr
|
|
}
|
|
|
|
function init_variables {
|
|
CONN_TOTAL="0"
|
|
CONN_ACTIVE_TOTAL="0"
|
|
CONN_IDLE_TOTAL="0"
|
|
CONN_OTHER_TOTAL="0"
|
|
FIRST_TIME="no"
|
|
INIT_VAL="0"
|
|
for DB in ${DATABASE_LIST}; do
|
|
eval "CONN_${DB^^}=${INIT_VAL}"
|
|
eval "CONN_ACTIVE_${DB^^}=${INIT_VAL}"
|
|
eval "CONN_IDLE_${DB^^}=${INIT_VAL}"
|
|
eval "CONN_OTHER_${DB^^}=${INIT_VAL}"
|
|
done
|
|
}
|
|
|
|
function output_values {
|
|
local result="${DATEVAL} ${TIMEVAL},${CONN_TOTAL}"
|
|
for DB in ${DATABASE_LIST}; do
|
|
val=$(eval echo \${CONN_${DB^^}})
|
|
result=$result,$val
|
|
done
|
|
for DB in ${DATABASE_LIST}; do
|
|
val=$(eval echo \${CONN_ACTIVE_${DB^^}})
|
|
result=$result,$val
|
|
done
|
|
for DB in ${DATABASE_LIST}; do
|
|
val=$(eval echo \${CONN_IDLE_${DB^^}})
|
|
result=$result,$val
|
|
done
|
|
for DB in ${DATABASE_LIST}; do
|
|
val=$(eval echo \${CONN_OTHER_${DB^^}})
|
|
result=$result,$val
|
|
done
|
|
echo $result >> postgres-conns.csv
|
|
}
|
|
|
|
HEADER=$(generate_header)
|
|
echo ${HEADER} > postgres-conns.csv
|
|
GREPSTR=$(generate_grep_str)
|
|
|
|
[ -e postgres-tmp2.txt ] && rm postgres-tmp2.txt
|
|
|
|
for FILE in ${FILES}; do
|
|
TEST=`echo ${FILE} | grep bz2`
|
|
if [ ! -z "${TEST}" ]; then
|
|
bzcat ${FILE} | grep -E "time:|active|idle|breakdown|total|rows" >> postgres-tmp2.txt
|
|
fi
|
|
cat postgres-tmp2.txt | grep -E "${GREPSTR}" > postgres-tmp.txt
|
|
done
|
|
|
|
# Start parsing
|
|
|
|
FIRST_TIME="yes"
|
|
PARSING_TABLE="no"
|
|
|
|
while IFS='' read -r LINE || [[ -n "${LINE}" ]]; do
|
|
TEST=`echo ${LINE} | grep "time:" | awk '{print $4}'`
|
|
if [ ! -z "${TEST}" ]; then
|
|
DATEVAL=`echo ${LINE} | awk '{print $3}'`
|
|
TIMEVAL=`echo ${LINE} | awk '{print $4}'`
|
|
|
|
if [ "z${FIRST_TIME}" != "zyes" ]; then
|
|
init_variables
|
|
FIRST_TIME="no"
|
|
fi
|
|
fi
|
|
|
|
TEST=`echo ${LINE} | grep "connections total =" | awk '{print $4}'`
|
|
if [ ! -z "${TEST}" ]; then
|
|
CONN_TOTAL=${TEST}
|
|
fi
|
|
|
|
TEST=`echo ${LINE} | grep "connections breakdown (query)"`
|
|
if [ ! -z "${TEST}" ]; then
|
|
PARSING_TABLE="yes"
|
|
fi
|
|
|
|
if [ "x${PARSING_TABLE}" == "xyes" ]; then
|
|
TESTNAME=`echo ${LINE} | grep "|" | awk '{print $1}'`
|
|
TESTVAL=`echo ${LINE} | grep "|" | awk '{print $5}'`
|
|
CONNSTATE=`echo ${LINE} | grep "|" | awk '{print $3}'`
|
|
|
|
# This gets last field regardless of number of preceding spaces
|
|
FIELDS=(${LINE// / })
|
|
for I in ${!FIELDS[@]}; do
|
|
TESTVAL=${FIELDS[${I}]}
|
|
done
|
|
|
|
for DB in ${DATABASE_LIST}; do
|
|
if [ "x${TESTNAME}" == "x${DB}" ]; then
|
|
eval "CONN_${DB^^}=$((CONN_${DB^^} + ${TESTVAL}))"
|
|
break
|
|
fi
|
|
done
|
|
|
|
if [ "x${CONNSTATE}" == "xidle" ]; then
|
|
for DB in ${DATABASE_LIST}; do
|
|
if [ "x${TESTNAME}" == "x${DB}" ]; then
|
|
eval "CONN_IDLE_${DB^^}=$((CONN_IDLE_${DB^^} + ${TESTVAL}))"
|
|
break
|
|
fi
|
|
done
|
|
elif [ "x${CONNSTATE}" == "xactive" ]; then
|
|
for DB in ${DATABASE_LIST}; do
|
|
if [ "x${TESTNAME}" == "x${DB}" ]; then
|
|
eval "CONN_ACTIVE_${DB^^}=$((CONN_ACTIVE_${DB^^} + ${TESTVAL}))"
|
|
break
|
|
fi
|
|
done
|
|
else
|
|
for DB in ${DATABASE_LIST}; do
|
|
if [ "x${TESTNAME}" == "x${DB}" ]; then
|
|
eval "CONN_OTHER_${DB^^}=$((CONN_OTHER_${DB^^} + ${TESTVAL}))"
|
|
break
|
|
fi
|
|
done
|
|
fi
|
|
|
|
TEST=`echo ${LINE} | grep "rows"`
|
|
if [ ! -z "${TEST}" ]; then
|
|
PARSING_TABLE="no"
|
|
output_values
|
|
init_variables
|
|
else
|
|
TEST=`echo ${LINE} | grep "age:"`
|
|
if [ ! -z "${TEST}" ]; then
|
|
PARSING_TABLE="no"
|
|
echo "${DATEVAL} ${TIMEVAL} - no data"
|
|
init_variables
|
|
fi
|
|
fi
|
|
fi
|
|
done < postgres-tmp.txt
|
|
|
|
rm postgres-tmp.txt postgres-tmp2.txt
|
|
LOG "Parsing postgres connection stats data completed!"
|