centos 7 带宽资源消耗统计

简介: 使用centos7自身的命令统计网卡的资源情况,并发送告警信息至企业微信群聊里,如有问题,可联系微信公众号:阿牛哥在厦门

有一云上的项目,没有安装云提供的agent,项目也没配套的监控,因此打算使用shell统计网卡带宽的消耗信息。

脚本如下:


#!/bin/bash
#echo -e "\033[36m*************带宽资源消耗统计*************\033[0m"

#用数组存放网卡名
nic=($(ifconfig | grep ^[a-z] | grep -vE 'lo|docker0' | awk -F: '{print $1}'))
time=$(date "+%Y-%m-%d %k:%M")
num=0

log="/tmp/network.txt"
log_all="/tmp/network_all.txt"
file=/proc/net/dev
# 运行前 重置 日志文件
echo '' > /tmp/network.txt

dk_warn='10'

#循环五次,避免看到的是偶然的数据
for ((i = 0; i < ${
   
   #nic[@]}; i++)); do
    while (($num < 5)); do
        rx_before=$(cat ${
   
   file} | grep ${
   
   nic[$i]} | tr : " " | awk '{print $2}')
        tx_before=$(cat ${
   
   file} | grep ${
   
   nic[$i]} | tr : " " | awk '{print $10}')
        sleep 2

        #用sed先获取第7,再用awk获取第2列,再cut切割,从第7个到最后,即只切割网卡流量数字部分
        rx_after=$(cat $file | grep ${
   
   nic[$i]} | tr : " " | awk '{print $2}')
        tx_after=$(cat $file | grep ${
   
   nic[$i]} | tr : " " | awk '{print $10}')

        #注意下面截取的相差2秒的两个时刻的累计和发送的bytes(即累计传送和接收的位)
        rx_xc=$[rx_after-rx_before]
        rx_re=`echo "scale=5;${
     
     rx_xc}/1024/1024/2*8"|bc`
        rx_result=$(printf "%.5f" `echo ${
     
     rx_re}`)

        tx_xc=$[tx_after-tx_before]
        tx_re=`echo "scale=5;${
     
     tx_xc}/1024/1024/2*8"|bc`
        tx_result=$(printf "%.5f" `echo ${
     
     tx_re}`)

        echo  "$time Now_In_Speed: $rx_result Mbps Now_OUt_Speed: $tx_result Mbps" >> $log

        let "num++"
    done

    #注意下面grep后面的$time变量要用双引号括起来
    rx_result=$(cat $log|grep "$time"|awk '{In+=$4}END{print In}')
    tx_result=$(cat $log|grep "$time"|awk '{Out+=$7}END{print Out}')
    In_Speed=$(printf "%.2f"  `echo "scale=5;$rx_result/5"|bc`)
    Out_Speed=$(printf "%.2f" `echo "scale=5;$tx_result/5"|bc`)

    echo -e " $time -> ${nic[$i]}  ->  In_Speed_average: $In_Speed Mbps Out_Speed_average: $Out_Speed Mbps! "  >> ${
   
   log_all}

    # 去掉小数点和后面的数值
    if [[ ${
   
   In_Speed%.*} -gt $dk_warn ]];then
        ip_temp=$(hostname -I | awk '{print $1}')

        # 这个时间中间不能有空格
        time_temp=$(date "+%Y-%m-%d_%H:%M:%S")
        # 这个link是企业微信上的 群聊机器人助手、需要手动创建
        link='https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=XXXXXXXXXXXXX'

        curl -X POST $link \
        -H 'Content-Type: application/json' \
        -d '
        {
   
   
                "msgtype": "markdown",
                "markdown": {
   
   
                "content": "
                **有报警信息请注意**
                >故障主机: <font color=\"info\">**'${ip_temp}'**</font>\n
                >故障时间: <font color=\"comment\">'${time_temp}'</font>\n
                >故障详情: <font color=\"red\">'网卡进流量超出10Mbps,请注意!!'</font>\n
                >实际流量: <font color=\"blue\">'${In_Speed}Mbps'</font>\n
                "
                }
        }'
    fi

    if [[ ${
   
   Out_Speed%.*} -gt $dk_warn ]];then
        ip_temp=$(hostname -I | awk '{print $1}')
        # 这个时间中间不能有空格
        time_temp=$(date "+%Y-%m-%d_%H:%M:%S")
        # 这个link是企业微信上的 群聊机器人助手、需要手动创建
        link='https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=XXXXXXXXXXXXX'

        curl -X POST $link \
        -H 'Content-Type: application/json' \
        -d '
        {
   
   
                "msgtype": "markdown",
                "markdown": {
   
   
                "content": "
                **有报警信息请注意**
                >故障主机: <font color=\"info\">**'${ip_temp}'**</font>\n
                >故障时间: <font color=\"comment\">'${time_temp}'</font>\n
                >故障详情: <font color=\"red\">'网卡出流量超出10Mbps,请注意!!'</font>\n
                >实际流量: <font color=\"blue\">'${Out_Speed}Mbps'</font>\n
                "
                }
        }'
    fi

done

image.png

image.png

目录
相关文章
|
3天前
|
分布式计算 关系型数据库 MySQL
Sqoop【部署 01】CentOS Linux release 7.5 安装配置 sqoop-1.4.7 解决警告并验证(附Sqoop1+Sqoop2最新版安装包+MySQL驱动包资源)
【2月更文挑战第8天】Sqoop CentOS Linux release 7.5 安装配置 sqoop-1.4.7 解决警告并验证(附Sqoop1+Sqoop2最新版安装包+MySQL驱动包资源)
56 1
|
7天前
|
Java Linux 开发工具
Azkaban【部署 01】Linux环境 CentOS Linux release 7.5.1804安装配置azkaban-3.70.0编译阶段(附安装包及gradle-4.6资源)
【2月更文挑战第4天】Linux环境 CentOS Linux release 7.5.1804安装配置azkaban-3.70.0编译阶段(附安装包及gradle-4.6资源)
17 1
|
3月前
|
安全 Linux 网络安全
Greenplum【部署 01】CentOS Linux release 7.5 环境单机版详细安装配置步骤+问题解决(含安装包资源)
Greenplum【部署 01】CentOS Linux release 7.5 环境单机版详细安装配置步骤+问题解决(含安装包资源)
30 2
|
Linux
Linux CentOS各大网站镜像资源地址展示,各种rpm资源包下载地址,rpm安装包大全
Linux CentOS各大网站镜像资源地址展示,各种rpm资源包下载地址,rpm安装包大全
579 0
Linux CentOS各大网站镜像资源地址展示,各种rpm资源包下载地址,rpm安装包大全
|
Linux Python
centos使用Linux命令行测试网速/带宽
安装speedtest-cli speedtest-cli是一个用Python编写的轻量级Linux命令行工具,在Python2.4至3.4版本下均可运行。
3357 0
|
Linux 数据安全/隐私保护 Windows
|
5天前
|
关系型数据库 MySQL Linux
centos7.0环境下安装MySql_8.0.12
centos7.0环境下安装MySql_8.0.12