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> ]*"
40 if [ $1 == "DOCKER" ]; then
47 if [ $(($#%2)) -ne 0 ]; then
51 elif [ $1 == "KUBE" ]; then
58 if [ $(($#%3)) -ne 0 ]; then
68 echo "Name;Time;PIDS;CPU perc;Mem perc" > $LOGFILE
70 if [ "$STARTTIME" -ne -1 ]; then
71 STARTTIME=$(($SECONDS-$STARTTIME))
75 docker stats --no-stream --format "table {{.Name}};{{.PIDs}};{{.CPUPerc}};{{.MemPerc}}" > tmp/.tmp_stat_out.txt
76 if [ "$STARTTIME" -eq -1 ]; then
79 CTIME=$(($SECONDS-$STARTTIME))
83 while read -r line; do
85 if [ $STAT_TYPE == "DOCKER" ]; then
86 for ((i=0; i<$#; i=i+2)); do
89 d=$(echo $line | grep -v "k8s" | grep $APP)
91 d=$(echo $d | cut -d';' -f 2- | sed -e 's/%//g' | sed 's/\./,/g')
92 echo "$SAPP;$CTIME;$d" >> $LOGFILE
93 TMP_APPS=$TMP_APPS" $SAPP "
97 for ((i=0; i<$#; i=i+3)); do
101 d=$(echo "$line" | grep -v "k8s_POD" | grep "k8s" | grep $APP | grep $NS)
102 if [ ! -z "$d" ]; then
103 d=$(echo "$d" | cut -d';' -f 2- | sed -e 's/%//g' | sed 's/\./,/g')
104 data="$SAPP-$NS;$CTIME;$d"
105 echo $data >> $LOGFILE
106 TMP_APPS=$TMP_APPS" $SAPP-$NS "
110 done < tmp/.tmp_stat_out.txt
113 if [ $STAT_TYPE == "DOCKER" ]; then
114 for ((i=0; i<$#; i=i+2)); do
116 APP=${APP_LIST[$i+1]}
117 if [[ $TMP_APPS != *" $SAPP "* ]]; then
118 data="$SAPP;$CTIME;0;0,00;0,00"
119 echo $data >> $LOGFILE
123 for ((i=0; i<$#; i=i+3)); do
125 APP=${APP_LIST[$i+1]}
127 if [[ $TMP_APPS != *" $SAPP-$NS "* ]]; then
128 data="$SAPP-$NS;$CTIME;0;0,00;0,00"
129 echo $data >> $LOGFILE