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 "Name;Time;PIDS;CPU perc;Mem perc" > $LOGFILE
72 if [ "$STARTTIME" -ne -1 ]; then
73 STARTTIME=$(($SECONDS-$STARTTIME))
77 docker stats --no-stream --format "table {{.Name}};{{.PIDs}};{{.CPUPerc}};{{.MemPerc}}" > tmp/.tmp_stat_out.txt
78 if [ "$STARTTIME" -eq -1 ]; then
81 CTIME=$(($SECONDS-$STARTTIME))
85 while read -r line; do
87 if [ $STAT_TYPE == "DOCKER" ]; then
88 for ((i=0; i<$#; i=i+2)); do
91 d=$(echo $line | grep -v "k8s" | grep $APP)
93 d=$(echo $d | cut -d';' -f 2- | sed -e 's/%//g' | sed 's/\./,/g')
94 echo "$SAPP;$CTIME;$d" >> $LOGFILE
95 TMP_APPS=$TMP_APPS" $SAPP "
99 for ((i=0; i<$#; i=i+3)); do
101 APP=${APP_LIST[$i+1]}
103 d=$(echo "$line" | grep -v "k8s_POD" | grep "k8s" | grep $APP | grep $NS)
104 if [ ! -z "$d" ]; then
105 d=$(echo "$d" | cut -d';' -f 2- | sed -e 's/%//g' | sed 's/\./,/g')
106 data="$SAPP-$NS;$CTIME;$d"
107 echo $data >> $LOGFILE
108 TMP_APPS=$TMP_APPS" $SAPP-$NS "
112 done < tmp/.tmp_stat_out.txt
115 if [ $STAT_TYPE == "DOCKER" ]; then
116 for ((i=0; i<$#; i=i+2)); do
118 APP=${APP_LIST[$i+1]}
119 if [[ $TMP_APPS != *" $SAPP "* ]]; then
120 data="$SAPP;$CTIME;0;0,00;0,00"
121 echo $data >> $LOGFILE
125 for ((i=0; i<$#; i=i+3)); do
127 APP=${APP_LIST[$i+1]}
129 if [[ $TMP_APPS != *" $SAPP-$NS "* ]]; then
130 data="$SAPP-$NS;$CTIME;0;0,00;0,00"
131 echo $data >> $LOGFILE