OpenStack平台监控脚本-基础版
控制节点(网卡名称,服务数量不尽相同,自行择决之):
#!/bin/bash
#分界线函数
b (){
echo -e "\033[31m-------------------------------------\033[0m"
sleep 1
}
#检查网络
ping -c 3 -i 0.2 -W 1 www.g.cn &> /dev/null
[ $? -ne 0 ] && echo "请检查你的网络是否畅通" && exit
#检查服务状态
echo "即将开始检查服务状态..."
sleep 3
for n in {chronyd,httpd,mariadb,memcached,rabbitmq-server,openstack-glance-api,openstack-glance-registry,openstack-nova-api,openstack-nova-consoleauth,openstack-nova-scheduler,openstack-nova-conductor,openstack-nova-novncproxy,neutron-linuxbridge-agent,neutron-server,neutron-dhcp-agent,neutron-metadata-agent,openstack-cinder-api,openstack-cinder-scheduler,openstack-cinder-volume}
do
systemctl status $n &> /dev/null
if [ $? -eq 0 ];then
echo "$n is ok!" && b
else
echo "正在帮您重启$n服务..."
systemctl restart $n && echo "$n已被正常启动,正在检查下一项服务..." && b && continue || echo "$n服务不能正常启动,请排除故障后再次尝试!" && exit
fi
done
echo "检查rabbitmq集群是否正常..." && sleep 1
rabbitmqctl cluster_status
echo "检查计算服务是否正常..." && sleep 1
openstack compute service list
echo "检查API运行是否正常..." && sleep 1
nova-status upgrade check
echo "检查cinder服务是否正常..." && sleep 1
cinder service-list
echo "查看openstack的项目..." && sleep 1
openstack project list
echo "查看openstack的镜像列表..." && sleep 1
openstack image list
ip=`ifconfig ens39 | awk '/inet /{print $2}'`
echo "本地IP地址是:"$ip
cpu=`uptime | awk '{print $NF}'`
#awk中NF为当前行的列数,$NF是最后一列
echo "本机CPU最近15分钟的负载是:$cpu%"
net_in=`ifconfig ens38 | awk '/RX p/{print $5}'`
echo "入站网卡流量为:"$net_in
net_out=`ifconfig ens38 | awk '/TX p/{print $5}'`
echo "出站网卡流量为:"$net_out
mem=`free -h| awk '/Mem/{print $4}'`
echo "内存剩余容量为:"$mem
disk=`df -h| awk '/\/$/{print $4}'`
echo "根分区剩余容量为:"$disk
user=`cat /etc/passwd |wc -l`
echo "本地账户数量为:"$user
login=`who | wc -l`
echo "当前登陆计算机的账户数量为:"$login
process=`ps aux | wc -l`
echo "当前计算机启动的进程数量为:$process 个"
soft=`rpm -qa | wc -l`
echo "当前计算机已安装的软件数量为:$soft 个"
计算节点(网卡名称,服务数量不尽相同,自行择决之):
#! /bin/bash
#分界线函数
b (){
echo -e "\033[31m-------------------------------------\033[0m"
sleep 1
}
#检查服务状态
echo "即将开始检查服务状态..."
sleep 3
for n in {chronyd,rabbitmq-server,libvirtd,openstack-nova-compute,neutron-linuxbridge-agent}
do
systemctl status $n &> /dev/null
if [ $? -eq 0 ];then
echo "$n is ok!" && b
else
echo "正在帮您重启$n服务..."
systemctl restart $n && echo "$n已被正常启动,正在检查下一项服务..." && b && continue || echo "$n服务不能正常启动,请排除故障后再次尝试!" && exit
fi
done
while :
do
clear
b="echo ---------------------------------------------------"
cpu=`uptime | awk '{print $NF}'`
$b
#awk中NF为当前行的列数,$NF是最后一列
echo "本机CPU最近15分钟的负载是:$cpu%"
$b
net_in=`ifconfig ens38 | awk '/RX p/{print $5}'`
echo "入站网卡流量为:$net_in KB"
$b
net_out=`ifconfig ens38 | awk '/TX p/{print $5}'`
echo "出站网卡流量为:$net_out KB"
$b
mem=`free -h| awk '/Mem/{print $4}'`
echo "内存剩余容量为:"$mem
$b
disk=`df -h| awk '/\/$/{print $4}'`
echo "根分区剩余容量为:"$disk
$b
echo "正在运行的实例有:"
virsh list |awk '{print $2}'
$b
sleep 1.5
done
存储节点(网卡名称,服务数量不尽相同,自行择决之):
#! /bin/bash
#分界线函数
b (){
echo -e "\033[31m-------------------------------------\033[0m"
sleep 1
}
#检查服务状态
echo "即将开始检查服务状态..."
sleep 3
for n in {chronyd,rabbitmq-server,lvm2-lvmetad,openstack-cinder-volume}
do
systemctl status $n &> /dev/null
if [ $? -eq 0 ];then
echo "$n is ok!" && b
else
echo "正在帮您重启$n服务..."
systemctl restart $n && echo "$n已被正常启动,正在检查下一项服务..." && b && continue || echo "$n服务不能正常启动,请排除故障后再次尝试!" && exit
fi
done
while :
do
clear
b="echo ---------------------------------------------------"
cpu=`uptime | awk '{print $NF}'`
$b
#awk中NF为当前行的列数,$NF是最后一列
echo "本机CPU最近15分钟的负载是:$cpu%"
$b
net_in=`ifconfig ens37 | awk '/RX p/{print $5}'`
echo "入站网卡流量为:$net_in KB"
$b
net_out=`ifconfig ens37 | awk '/TX p/{print $5}'`
echo "出站网卡流量为:$net_out KB"
$b
mem=`free -h| awk '/Mem/{print $4}'`
echo "内存剩余容量为:"$mem
$b
total=$(co=`lsblk |awk '/sdb/{print $4}'` && echo ${co/G/})
all_cinder=0
for n in $(lsblk |awk '/cinder--volumes-volume/{si[$4]++}END{for(i in si){print i}}') #筛选出已使用磁盘列表
do
m=`echo ${n%G}` #m=`echo ${n/G/}`
let all_cinder+=$m
done
echo "已使用云磁盘:$all_cinder G"
disk=`expr $total - $all_cinder`
echo "云磁盘剩余容量为:$disk G"
$b
sleep 2
done