3 # ============LICENSE_START===============================================
4 # Copyright (C) 2020 Nordix Foundation. All rights reserved.
5 # ========================================================================
6 # Licensed under the Apache License, Version 2.0 (the "License");
7 # you may not use this file except in compliance with the License.
8 # You may obtain a copy of the License at
10 # http://www.apache.org/licenses/LICENSE-2.0
12 # Unless required by applicable law or agreed to in writing, software
13 # distributed under the License is distributed on an "AS IS" BASIS,
14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
17 # ============LICENSE_END=================================================
20 # This script collects container statistics to a file. Data is separated with semicolon.
21 # Works for both docker container and kubernetes pods.
22 # Relies on 'docker stats' so will not work for other container runtimes.
23 # Used by the test env.
25 # args: docker <start-time-seconds> <log-file> <app-short-name> <app-name> [ <app-short-name> <app-name> ]*
27 # args: kube <start-time-seconds> <log-file> <app-short-name> <app-name> <namespace> [ <app-short-name> <app-name> <namespace> ]*
30 echo "Usage: genstat.sh DOCKER <start-time-seconds> <log-file> <app-short-name> <app-name> [ <app-short-name> <app-name> ]*"
32 echo "Usage: genstat.sh KUBE <start-time-seconds> <log-file> <app-short-name> <app-name> <namespace> [ <app-short-name> <app-name> <namespace> ]*"
41 if [ $1 == "DOCKER" ]; then
48 if [ $(($#%2)) -ne 0 ]; then
52 elif [ $1 == "KUBE" ]; then
59 if [ $(($#%3)) -ne 0 ]; then
69 echo "Time;Name;PIDS;CPU perc;Mem perc" > $LOGFILE
71 if [ "$STARTTIME" -ne -1 ]; then
72 STARTTIME=$(($SECONDS-$STARTTIME))
76 docker stats --no-stream --format "table {{.Name}};{{.PIDs}};{{.CPUPerc}};{{.MemPerc}}" > tmp/.tmp_stat_out.txt
77 if [ "$STARTTIME" -eq -1 ]; then
80 CTIME=$(($SECONDS-$STARTTIME))
84 while read -r line; do
86 if [ $STAT_TYPE == "DOCKER" ]; then
87 for ((i=0; i<$#; i=i+2)); do
90 d=$(echo $line | grep -v "k8s" | grep $APP)
92 d=$(echo $d | cut -d';' -f 2- | sed -e 's/%//g' | sed 's/\./,/g')
93 echo "$SAPP;$CTIME;$d" >> $LOGFILE
94 TMP_APPS=$TMP_APPS" $SAPP "
98 for ((i=0; i<$#; i=i+3)); do
100 APP=${APP_LIST[$i+1]}
102 d=$(echo "$line" | grep -v "k8s_POD" | grep "k8s" | grep $APP | grep $NS)
103 if [ ! -z "$d" ]; then
104 d=$(echo "$d" | cut -d';' -f 2- | sed -e 's/%//g' | sed 's/\./,/g')
105 data="$SAPP-$NS;$CTIME;$d"
106 echo $data >> $LOGFILE
107 TMP_APPS=$TMP_APPS" $SAPP-$NS "
111 done < tmp/.tmp_stat_out.txt
114 if [ $STAT_TYPE == "DOCKER" ]; then
115 for ((i=0; i<$#; i=i+2)); do
117 APP=${APP_LIST[$i+1]}
118 if [[ $TMP_APPS != *" $SAPP "* ]]; then
119 data="$SAPP;$CTIME;0;0,00;0,00"
120 echo $data >> $LOGFILE
124 for ((i=0; i<$#; i=i+3)); do
126 APP=${APP_LIST[$i+1]}
128 if [[ $TMP_APPS != *" $SAPP-$NS "* ]]; then
129 data="$SAPP-$NS;$CTIME;0;0,00;0,00"
130 echo $data >> $LOGFILE