• 一键部署监控


    #!/bin/bash
    #==================================================================================================================================================
    #          编写:lnj
    #        22.8.15
    #             资源监控脚本
    get_cpu(){
    ##################################################################获取cpu信息######################################################################
    cpu_num=`grep -c 'processor' /proc/cpuinfo` #cpu个数
    cpu_name=` cat /proc/cpuinfo | grep "model name" | tail -n 1` #cpu名称
    cpu_he=`cat /proc/cpuinfo | grep -c "core id"` #cpu核个数
    cpu_liyong=`iostat -c | awk -F " " '{print $2}' | awk  'NR==4{print $1}'` #cpu利用率
    cpu_kongxian=`mpstat | awk -F" " '{print $12}' | grep -v "^$" | tail -n 1` #cpu剩余空闲
    echo "######################################################cpu详细信息###########################################################################"
    if [ $cpu_num -lt 2 ]
    then
        echo "cpu个数为:$cpu_num cpu个数过少,性能不足,谨慎使用及时备份。"
    else
        echo "cpu个数为:$cpu_num cpu个数正常,请放心使用。"
        fi

    echo "cpu型号为:$cpu_name "

    if [ $cpu_he -lt 4 ];then
        echo "cpu核个数为:$cpu_he 性能不足,请谨慎使用,及时备份。"
    else
        echo "cpu核个数为:$cpu_he cpu核正常,请放心使用 "
        
        fi
    cpu_liyong1=$cpu_liyong
    if [ $(echo "$cpu_liyong1 > 1" |bc) -eq 1 ];then
        echo "cpu利用率为:$cpu_liyong cpu剩余不足"
    else 
        echo "cpu利用率为:$cpu_liyong"
        fi
    echo "cpu剩余空闲:$cpu_kongxian%"
    }

    get_mem(){
    ################################################################获取内存信息#######################################################################
    mem_all=`free -m | grep "Mem" | awk -F" " '{print $2}'`
    mem_used=`free -m | grep "Mem" | awk -F" " '{print $3}'`
    mem_free=`free -m | grep "Mem" | awk -F" " '{print $4}'`
    mem_shared=`free -m | grep "Mem" | awk -F" " '{print $5}'`
    mem_bc=`free -m | grep "Mem" | awk -F" " '{print $6}'`
    mem_aliv=`free -m | grep "Mem" | awk -F" " '{print $7}'`
    echo "###################################################内存详细信息#############################################################################"
    echo "内存总量为:$mem_all M"
    echo "内存已使用:$mem_used M"
    echo "内存未使用:$mem_free M"
    echo "共享内存的大小:$mem_shared M"
    echo "缓存大小:$mem_bc M"
    echo "内存剩余可用:$mem_aliv M"
    echo -e "\033[1;35m对此机器内存进行评价 \033[0m"
    if [ $mem_all -lt 2048 ];then
        echo -e "\033[1;35m内存总量不多,请谨慎使用 \033[0m"
        else
        echo -e "\033[1;35m内存充裕,放心使用 \033[0m"
    fi
    if [ $mem_used -gt 1024 ];then
        echo -e "\033[1;35m内存使用过度,请关闭不需要的进程 \033[0m"
        else 
        echo -e "\033[1;35m内存剩余量足够,放心使用 \033[0m"
    fi

    if [ $mem_free -lt 1024 ];then
        echo -e "\033[1;35m内存剩余可用小于1024M,请做清理,谨慎使用 \033[0m"
        else 
        echo -e "\033[1;35m内存剩余可用大于1024M,剩余充足,放心使用 \033[0m"
    fi

    }

    get_disk(){
    ######################################################################磁盘使用####################################################################
    disk_all=`lsblk |sed -n '/disk/p'|awk -F '[ G]+' '{print $4}'|awk '{sum+=$1;print $1}END{print sum}'|tail -n 1G | tail -n 1` #机子磁盘总量
    disk_par=` df -hT | grep "/dev/mapper/centos-root" | awk -F" " '{print $3}' | cut -d 'G' -f1` 
    disk_used=` df -hT | grep "/dev/mapper/centos-root" | awk -F" " '{print $4}' | cut -d 'G' -f1`
    disk_free=` df -hT | grep "/dev/mapper/centos-root" | awk -F" " '{print $5}' | cut -d 'G' -f1`
    disk_percent=` df -hT | grep "/dev/mapper/centos-root" | awk -F" " '{print $6}' | cut -d '%' -f1`
    echo "#################################################磁盘使用情况###############################################################################"
    echo "所有磁盘包括后续创建的综合:$disk_all G"
    echo "主盘剩余:$disk_par G"
    echo "磁盘已使用:$disk_used G"
    echo "磁盘剩余:$disk_free G"
    echo "磁盘使用情况:$disk_percent %"
    echo -e "\033[1;35m开始对此机器磁盘情况进行评估 \033[0m"
    if [ $disk_all -gt 50 ];then
        echo -e "\033[1;35m 磁盘可用总量太少请添加磁盘 \033[0m"
        else
        echo -e "\033[1;35m 磁盘总可用量大于50G,够用 \033[0m"
    fi

    if [ $disk_percent -gt 50 ];then
        echo -e "\033[1;35m 磁盘已使用超过50%,建议清理不需要的文件 \033[0m"
    elif [ $disk_percent -gt 80 -a $disk_percent -lt 100 ];then
        echo -e "\033[1;35m 磁盘已使用超过80%,已无法存放过多数据,建议增加磁盘使用\033[0m"
        else
        echo -e "\033[1;35m 磁盘使用未超过50%,剩余重组,放心使用\033[0m"
    fi
    }

    get_zifu(){
    #####################################################################文件描述符利用率##############################################################
    echo "文件描述符即为系统可打开的最大数量"
    zifu_used=` cat /proc/sys/fs/file-nr | awk -F" " '{print $1}'`
    zifu_all=` cat /proc/sys/fs/file-nr | awk -F" " '{print $3}'`
    zifu_end=$(echo "scale=2; ${zifu_used}/${zifu_all}*100" | bc)
    echo "######################################################文件描述符利用率######################################################################"
    echo -e "\033[1;35m 文件描述字符使用:$zifu_used \033[0m"
    echo -e "\033[1;35m 系统文件描述字符可使用:$zifu_all \033[0m"
    echo -e "\033[1;35m 系统文件描述字符使用率为:$zifu_end% \033[0m"
    }

    get_wangka(){
    ######################################################################网卡信息#####################################################################
    wk_name=`ifconfig | awk -F" " NR==1,NR==8'{print NR $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12}' | head -n 2 | grep "ens33" | awk -F" " '{print $1}' | cut -d ':' -f 1 | sed 's/1//'`
    wk_ip=`ifconfig | awk -F" " NR==1,NR==8'{print NR $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12}' | head -n 2 | grep "inet" | awk -F" " '{print $2}'`
    wk_yanma=`ifconfig | awk -F" " NR==1,NR==8'{print NR $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12}' | head -n 2 | grep "inet" | awk -F" " '{print $4}'`
    wk_ljs=`netstat -napt | grep -v "^A\|^P" |awk '{print $6}'|sort |uniq -c`
    echo "########################################################网卡信息############################################################################"
    echo -e "\033[1;35m 此机器的网卡名称为:$wk_name\033[0m"
    echo -e "\033[1;35m 此机器的子网掩码为:$wk_yanma\033[0m"
    echo -e "\033[1;35m 此机器的ip地址为:$wk_ip\033[0m"
    echo -e "\033[1;35m 此机器的当前连接数为:/\n$wk_ljs\033[0m"
    }

    get_io(){
    #######################################################################i/o#########################################################################
    io_rs=`iostat -kx | sed '1d' | sed '1d' | sed '1d'| sed '1d' | sed '1d' | sed '1d' | grep "sda" | awk -F" " '{print $4}'`
    io_ws=`iostat -kx | sed '1d' | sed '1d' | sed '1d'| sed '1d' | sed '1d' | sed '1d' | grep "sda" | awk -F" " '{print $5}'`
    io_avg=`iostat -kx | sed '1d' | sed '1d' | sed '1d'| sed '1d' | sed '1d' | sed '1d' | grep "sda" | awk -F" " '{print $9}'`
    io_awit=`iostat -kx | sed '1d' | sed '1d' | sed '1d'| sed '1d' | sed '1d' | sed '1d' | grep "sda" | awk -F" " '{print $10}'`
    io_sv=`iostat -kx | sed '1d' | sed '1d' | sed '1d'| sed '1d' | sed '1d' | sed '1d' | grep "sda" | awk -F" " '{print $11}'`
    io_util=`iostat -kx | sed '1d' | sed '1d' | sed '1d'| sed '1d' | sed '1d' | sed '1d' | grep "sda" | awk -F" " '{print $12}'`
    echo "##########################################################i/o信息###########################################################################"
    echo -e "\033[1;35m 每秒向设备发起的读请求$io_rs\033[0m"
    echo -e "\033[1;35m 每秒向设备发起的写请求$io_ws\033[0m"
    echo -e "\033[1;35m 向设备发起的io请求平均值$io_avg\033[0m"
    echo -e "\033[1;35m 向设备发起的io请求平均时间$io_awit\033[0m"
    echo -e "\033[1;35m 向设备发起的io服务时间均值$io_sv\033[0m"
    echo -e "\033[1;35m 向设备发起io请求的cpu时间百分比$io_util\033[0m"
    }
    get_cpu
    get_mem
    get_disk
    get_zifu
    get_wangka
    get_io    

     

  • 相关阅读:
    【GNN】用 GCN 预测 CoraGraphDataset 结点类别
    短视频矩阵系统源代码开发搭建分享--代码开源SaaS
    小谈设计模式(18)—适配器模式
    Akshare获取分红数据
    编程技巧│php 自定义安装扩展
    zabbix 自动发现
    SpringBoot缓存@Cacheable注解
    基于win32实现TB登陆滑动验证
    水电站与数据可视化:洞察未来能源趋势的窗口
    Vue动态绑定class
  • 原文地址:https://blog.csdn.net/a_b_e_l_/article/details/126411809