source /etc/kolla/admin-openrc.sh
IFS=$(echo -en "\n\b")
function get_vm_details() {
LINE=$1
SERVER_ID=$(echo ${LINE} | cut -d" " -f3)
SERVER_JSON=$(openstack server show ${SERVER_ID} -f json)
SERVER_NAME=$(echo ${SERVER_JSON} | jq -r .name)
SERVER_PROJECT_ID=$(echo ${SERVER_JSON} | jq -r .project_id)
SERVER_PROJECT_JSON=$(openstack project show ${SERVER_PROJECT_ID} -f json)
SERVER_PROJECT_NAME=$(echo ${SERVER_PROJECT_JSON} | jq -r .name)
echo "${LINE} ${SERVER_NAME} ${SERVER_PROJECT_NAME}"
}
for COMPUTE_NODE in $(openstack compute service list --service nova-compute -c Host -f value | sort); do
echo "# ${COMPUTE_NODE}"
echo "VMs by CPU usage"
OUTPUT="$(ssh ${COMPUTE_NODE} ps -eo pid,%cpu,cmd --sort="-%cpu" --no-headers | head -5 | grep -o -P '^[0-9]?.*(?<=-uuid ).*(?= -smbios)\b' | awk '{ print $1,$2,$NF }')"
for LINE in ${OUTPUT}; do
get_vm_details "${LINE}"
done
echo "VMs by RAM usage"
OUTPUT="$(ssh ${COMPUTE_NODE} ps -eo pid,size,cmd --sort="-size" --no-headers | head -5 | grep -o -P '^[0-9]?.*(?<=-uuid ).*(?= -smbios)\b' | awk '{ print $1,$2,$NF }')"
for LINE in ${OUTPUT}; do
get_vm_details "${LINE}"
done
echo
done