zoukankan      html  css  js  c++  java
  • OpenStack平台监控脚本-基础版

    控制节点(网卡名称,服务数量不尽相同,自行择决之):

    #!/bin/bash
    #分界线函数
    b (){
        echo -e "33[31m-------------------------------------33[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 "33[31m-------------------------------------33[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 "33[31m-------------------------------------33[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

  • 相关阅读:
    分布式锁原理及实现方式
    【FAQ】Maven 本地仓库明明有jar包,pom文件还是报错解决办法
    【FAQ】tomcat启动jdk版本不一致
    【Map,HashMap,Vector,List】资料汇总
    【FAQ】调用接口序列化问题
    【docker】docker下安装mysql
    linux tcpdump抓包Post请求
    Springboot 在@Configuration注解的勒种 使用@Autowired或者@value注解 读取.yml属性失败
    Springboot使用Shiro-整合Redis作为缓存 解决定时刷新问题
    CentOS yum 安装nginx
  • 原文地址:https://www.cnblogs.com/guarding/p/12880691.html
Copyright © 2011-2022 走看看