В настоящее время у нас есть сценарий мониторинга серверов, который отслеживает 63 сервера, и мы хотим добавить еще 40 серверов к этому сценарию.Проблема в том, что мы хотели бы хранить все содержимое скрипта на одном мониторе (оказалось 90 градусов).
Мне интересно, возможно ли вообще выводить 2 сервера в одну строку и возможно ли это, как это делается.например,
В настоящее время у нас есть
web1 | 2.11 | 2.05 | 1.95 | (116) HTTP Processes
web2 | 0.06 | 0.12 | 0.15 | (113) HTTP Processes
data1 | 1.04 | 0.93 | 0.90 |
data2 | 0.36 | 0.52 | 0.43 |
data3 | 0.41 | 0.31 | 0.28 |
data4 | 1.48 | 1.41 | 1.28 |
data5 | 1.10 | 1.07 | 1.10 |
data6 | 5.60 | 4.78 | 4.08 |
data7 | 0.30 | 0.31 | 0.29 |
data8 | 1.44 | 2.18 | 2.00 |
data9 | 0.11 | 0.22 | 0.26 |
data10 | 0.19 | 0.25 | 0.31 |
sql1 | 0.42 | 0.58 | 0.61 |
sql2 | 0.26 | 0.24 | 0.27 |
sql3 | 0.06 | 0.08 | 0.09 |
. Мы хотели бы сделать следующее:
web1 | 2.11 | 2.05 | 1.95 | (116) HTTP Processes
web2 | 0.06 | 0.12 | 0.15 | (113) HTTP Processes
data1 | 1.04 | 0.93 | 0.90 | - data6 | 5.60 | 4.78 | 4.08 |
data2 | 0.36 | 0.52 | 0.43 | - data7 | 0.30 | 0.31 | 0.29 |
data3 | 0.41 | 0.31 | 0.28 | - data8 | 1.44 | 2.18 | 2.00 |
data4 | 1.48 | 1.41 | 1.28 | - data9 | 0.11 | 0.22 | 0.26 |
data5 | 1.10 | 1.07 | 1.10 | - data10 | 0.19 | 0.25 | 0.31 |
sql1 | 0.42 | 0.58 | 0.61 |
sql2 | 0.26 | 0.24 | 0.27 |
sql3 | 0.06 | 0.08 | 0.09 |
и т. д.
Как видите, мыхотите сгруппировать определенные типы серверов (web, cassandra, sql, grid).
Скрипт отслеживает среднюю нагрузку, поэтому его тоже нужно подогнать (достаточно места на мониторе для отображения)
Возможно или я спрашиваю о невозможном?
Текущий сценарий:
cleanquit () {
echo "$(tput sgr0)"
clear
exit $?
}
trap cleanquit SIGINT
clear
while [ 1 ]
do
tput cup 0 0
echo "$(tput sgr0)"
for i in web1 web2 data1 data2 data3 data4
if [ $i == "space" ]; then
echo "$(tput setaf 7)"
UPS=""
else
if [ $i == "self" ]; then
UPTIME=$(cat /proc/loadavg);
else
UPTIME=$(ssh root@$i cat /proc/loadavg);
fi
if [ -z "$UPTIME" ]; then
tput cuu1
tput el
printf " $(tput setaf 1)%-25s\t | CONNECTION FAILED |\n" $i;
else
thisloadavg1=$(echo $UPTIME|awk '{ print $1}' | bc -q 2>/dev/null)
thisloadavg2=$(echo $UPTIME|awk '{ print $2}' | bc -q 2>/dev/null)
thisloadavg3=$(echo $UPTIME|awk '{ print $3}' | bc -q 2>/dev/null)
additional=""
if [ ${i:0:3} == "web" -o ${i:0:4} == "grid" ]; then
additional=$(ssh root@$i ps aux | grep "sbin/http" | wc -l)
if [ $additional -gt 0 ]; then
additional="("$additional") HTTP Processes"
else
additional=""
fi
fi
if [ $i == "self" ]; then
additional=$(ps aux | grep "sbin/http" | wc -l)
if [ $additional -gt 0 ]; then
additional="("$additional") HTTP Processes"
else
additional=""
fi
fi
if [ $(echo "$thisloadavg1 > 5.0" | bc) -eq 1 ]; then
printf " $(tput setaf 1)%-25s\t $(tput setaf 7)|$(tput setaf 1) %0.2f $(tput setaf 7)|$(tput setaf 1) %0.2f $(tput setaf 7)|$(tput setaf 1) %0.2f $(tput setaf 7)| %s %s %s\n" $i $thisloadavg1 $thisloadavg2 $thisloadavg3 $additional;
else
if [ $(echo "$thisloadavg1 > 3.0" | bc) -eq 1 ]; then
printf " $(tput setaf 3)%-25s\t $(tput setaf 7)|$(tput setaf 3) %0.2f $(tput setaf 7)|$(tput setaf 3) %0.2f $(tput setaf 7)|$(tput setaf 3) %0.2f $(tput setaf 7)| %s %s %s \n" $i $thisloadavg1 $thisloadavg2 $thisloadavg3 $additional;
else
if [ $(echo "$thisloadavg1 > 1.5" | bc) -eq 1 ]; then
printf " $(tput setaf 6)%-25s\t $(tput setaf 7)|$(tput setaf 6) %0.2f $(tput setaf 7)|$(tput setaf 6) %0.2f $(tput setaf 7)|$(tput setaf 6) %0.2f $(tput setaf 7)| %s %s %s \n" $i $thisloadavg1 $thisloadavg2 $thisloadavg3 $additional;
else
printf " $(tput setaf 7)%-25s\t | %0.2f | %0.2f | %0.2f | %s %s %s\n" $i $thisloadavg1 $thisloadavg2 $thisloadavg3 $additional;
fi
fi
fi
fi
fi
tput el
done
echo
tput sgr0
tput ed
sleep 2;
done`