meta data for this page
  •  

Ez a dokumentum egy előző változata!


Oracle VM CPU pin map

ovm_cpu_pin_map.sh
#!/bin/bash
#####################################################
# OVM CPU PIN MAP v1.0
# Keszitette: Agoston Peter
#####################################################
CPU_SUM_WARN=2
CPU_SUM_CRIT=10
OVM_ADMIN_PASSWD=PAssword123
OVMC="/u01/app/oracle/ovm-manager-3/ovm-utils/ovm_vmcontrol"
SSHC="ssh -n -p 10000 admin@localhost"
if [[ -z "$OVM_ADMIN_PASSWD" ]]; then
        read -s -p "Add meg az oracle VM Manager admin jelszavat: " OVM_ADMIN_PASSWD
fi
 
red=$'\e[1;31m'
grn=$'\e[1;32m'
yel=$'\e[1;33m'
blu=$'\e[1;34m'
mag=$'\e[1;35m'
cyn=$'\e[1;36m'
whi=$'\e[1;37m'
inv=$'\e[7;37m'
gry=$'\e[1;90m'
end=$'\e[0m'
 
function fejlec {
    # $1: CIM, $2: hossz
    FEJLEC=`echo $1 | tr '[:lower:]' '[:upper:]'`
    KIMENET="-=[ ${yel}$FEJLEC${end} ]=-"
    for I in `seq 1 $((($2-${#FEJLEC}-3)/2))`; do
        KIMENET="_$(echo $KIMENET)_"
    done
    echo -e $KIMENET
}
 
 
function vastag_fejlec {
    # $1: CIM, $2: hossz
    FEJLEC=`echo $1 | tr '[:lower:]' '[:upper:]'`
    KIMENET="-=[ ${yel}$FEJLEC${whi} ]=-"
    printf "${whi}"
    for I in `seq 1 $2`; do printf '#'; done
    echo
    for I in `seq 1 $((($2-${#FEJLEC}-7)/2))`; do
        KIMENET="#$(echo $KIMENET)#"
    done
    echo -e $KIMENET
    printf "${whi}"
    for I in `seq 1 $2`; do printf '#'; done
    printf "${end}"
}
 
echo Kulcs ellenorzese a CLI-hez...
if [[ $(ssh -o StrictHostKeyChecking=no -o BatchMode=yes -o ConnectTimeout=5 admin@localhost -p 10000 list manager |grep -c Success) -eq 0 ]]; then
        echo "Nincs SSH kulcs a CLI-hez, legeneralom:"
#       read -s -p "Add meg az oracle VM Manager administrator jelszavat: " OVM_PASSWD
        echo "Kulcs legeneralasa:"
        ssh-keygen -t rsa
        echo "Publikus kulcs masolasa a /home/oracle/.ssh/ovmcli_authorized_keys-be..."
        su - oracle -c "touch /home/oracle/.ssh/ovmcli_authorized_keys"
        cat ~/.ssh/id_rsa.pub >> /home/oracle/.ssh/ovmcli_authorized_keys
        echo "Elso kapcsolodas (jelszot ker):"
        ssh admin@localhost -p 10000 exit
        echo "Teszt kapcsolodas:"
        if [[ $(ssh -o StrictHostKeyChecking=no -o BatchMode=yes -o ConnectTimeout=5 admin@localhost -p 10000 list manager |grep -c Success) -eq 0 ]]; then
                echo "Sikertelen. Eddig tartott a tudomanyom, ellenorizd mi lehet a gond!"
                exit 1
        else
                echo "Sikeres!"
        fi
fi
 
CURR_DIR=$(pwd)
cd ${OVMC%/*} >/dev/null 2>&1
if [[ $? -gt 0 || ! -e $OVMC ]]; then
        echo "Vagy az ovm_vmcontrol fajl, vagy az utvonala hibas: $OVMC"
        exit 1
fi
 
clear
TERMINAL_COLS=$(/usr/bin/tput cols)
vastag_fejlec "Oracle VM CPU pin map by Agoston Peter" $(($TERMINAL_COLS-5)) '#'
echo
echo -e "${yel}Szerverek beolvasasa...${end}"
MAX_CPU_NUM=0
while read SERVER; do
        SERVERS="${SERVERS# } ${SERVER##*:}"
        CPU_NUM=$($SSHC show server name="${SERVER##*:}" | grep -c '^.*Cpu.*Processor ')
    if [[ $MAX_CPU_NUM -lt $CPU_NUM ]]; then MAX_CPU_NUM=$CPU_NUM; fi
        VM_NUM=$($SSHC show server name="${SERVER##*:}" | grep -c '^.*Vm .*\[.*\]')
        echo -e "${whi}${SERVER##*:}${end} ${whi}$CPU_NUM${end} ${whi}$VM_NUM${end}" | awk '{printf "%-30s:     %5s vcpu, %5s VM\n",$1,$2,$3}'
done <<< "`$SSHC "list server" | grep 'id:' | sort`"
 
for OVS in $SERVERS; do
    echo
    CPU_NUM=$($SSHC show server name="$OVS" | grep -c '^.*Cpu.*Processor ')
    fejlec "#$OVS# CPU PIN MAP" $(($MAX_CPU_NUM*3-3))
    VM_NUM=$($SSHC show server name="${OVS}" | grep -c '^.*Vm .*\[.*\]')
    if [[ $VM_NUM -eq 0 ]]; then
        echo -e "${whi}Ezen a szerveren nincs VM.${end}"
        continue
    fi
 
    # CPU PIN MAP
    for CPU in $(seq 0 $(($CPU_NUM-1))); do
        printf "|${yel}%02d${end}" $CPU
    done
    echo "| vCPU"
    for I in $(seq 0 $(($MAX_CPU_NUM-1))); do printf "+--"; done
    echo "+"
        while read VM; do
        VM_NAME=$(echo $VM | grep -oP '(?<=\[).*(?=\])')
        VM_ID=$(echo $VM | awk '{print $5}')
        PINS=$($OVMC -u admin -p $OVM_ADMIN_PASSWD -h localhost -v $VM_NAME -c getvcpu | awk -F':' '/Current pinned CPU/{print $2}')
        if [[ $PINS =~ - ]]; then
            PIN_TOL=$(echo $PINS | awk -F'-' '{print $1}')
            PIN_IG=$(echo $PINS | awk -F'-' '{print $2}')
            PINS=""
            for I in $(seq $PIN_TOL $PIN_IG); do
                PINS="${PINS# } $I"
            done
        else
            PINS=$(echo $PINS | sed 's/,/ /g')
        fi
        for CPU in $(seq 0 $(($CPU_NUM-1))); do
            if [[ $(echo $PINS | grep -Pc "\b$CPU\b") -eq 1 ]]; then
                printf "|${whi}##${end}"
                CPU_PIN_SUM[$CPU]=$((${CPU_PIN_SUM[$CPU]}+1))
            else
                printf "|  "
            fi
        done
        if [[ -z $PINS ]]; then
                echo -e "| ${red}$VM_NAME [${PINS:-Nincs pinelve}]${end}"
        else
                echo -e "| ${whi}$VM_NAME [${PINS:-Nincs pinelve}]${end}"
        fi
        done <<< "`$SSHC "show server name=$OVS" | grep '^.*Vm .*\[.*\]' | sort`"
    # CPU pin szumma / cpu
    for I in $(seq 0 $(($MAX_CPU_NUM-1))); do printf "+--"; done
    echo "+"
    for CPU in $(seq 0 $(($CPU_NUM-1))); do
        if [[ ${CPU_PIN_SUM[$CPU]} -ge $CPU_SUM_CRIT ]]; then
            printf "|${red}%02d${end}" ${CPU_PIN_SUM[$CPU]}
        elif [[ ${CPU_PIN_SUM[$CPU]} -ge $CPU_SUM_WARN ]]; then
            printf "|${yel}%02d${end}" ${CPU_PIN_SUM[$CPU]}
        elif [[ ${CPU_PIN_SUM[$CPU]} -gt 0 ]]; then
            printf "|${grn}%02d${end}" ${CPU_PIN_SUM[$CPU]}
        else
            printf "|  "
        fi
    done
    echo "| Pins / vCPU"
done
echo
cd $CURR_DIR