• Linux机器-网卡磁盘监控


    1)实时监控网卡流量的通用脚本:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    [root@ceph-node1 ~]# cat /root/net_monit.sh
    #!/bin/bash
    PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin;
    export PATH
    function traffic_monitor {
     
      OS_NAME=$(sed -n '1p' /etc/issue)
     
      eth=$1
     
      if [ ! -d /sys/class/net/$eth ];then
          echo -e "Network-Interface Not Found"
          echo -e "You system have network-interface: `ls /sys/class/net`"
          exit 5
      fi
      while "1" ]
      do
        
        STATUS="fine"
       
        RXpre=$(cat /proc/net/dev grep $eth | tr " " awk '{print $2}')
        TXpre=$(cat /proc/net/dev grep $eth | tr " " awk '{print $10}')
     
        sleep 1
        RXnext=$(cat /proc/net/dev grep $eth | tr " " awk '{print $2}')
        TXnext=$(cat /proc/net/dev grep $eth | tr " " awk '{print $10}')
        clear
      
        RX=$((${RXnext}-${RXpre}))
        TX=$((${TXnext}-${TXpre}))
     
        if [[ $RX -lt 1024 ]];then
          RX="${RX}B/s"
        elif [[ $RX -gt 1048576 ]];then
          RX=$(echo $RX | awk '{print $1/1048576 "MB/s"}')
          $STATUS="busy"
        else
          RX=$(echo $RX | awk '{print $1/1024 "KB/s"}')
        fi
     
        if [[ $TX -lt 1024 ]];then
          TX="${TX}B/s"
          elif [[ $TX -gt 1048576 ]];then
          TX=$(echo $TX | awk '{print $1/1048576 "MB/s"}')
        else
          TX=$(echo $TX | awk '{print $1/1024 "KB/s"}')
        fi
       
        echo -e "==================================="
        echo -e "Welcome to Traffic_Monitor stage"
        echo -e "version 1.0"
        echo -e "Since 2018.7.2"
        echo -e "Created by wangshibo"
        echo -e "BLOG: http://www.cnblogs.cn/kevingrace"
        echo -e "==================================="
        echo -e "System: $OS_NAME"
        echo -e "Date:   `date +%F`"
        echo -e "Time:   `date +%k:%M:%S`"
        echo -e "Port:   $1"
        echo -e "Status: $STATUS"
        echo -e  "      RX TX"
        echo "------------------------------"
        
        echo -e "$eth $RX   $TX "
        echo "------------------------------"
     
        echo -e "Press 'Ctrl+C' to exit"
      done
    }
     
    if [[ -n "$1" ]];then
      traffic_monitor $1
    else
      echo -e "None parameter,please add system netport after run the script! Example: 'sh traffic_monitor eth0'"
    fi
     
     
     
    [root@ceph-node1 ~]# chmod 755 /root/net_monit.sh
    [root@ceph-node1 ~]# sh /root/net_monit.sh eth0               #eth0是网卡设备名称,如果是网卡绑定bond0,后面就跟bond0
    ===================================
    Welcome to Traffic_Monitor stage
    version 1.0
    Since 2018.7.2
    Created by wangshibo
    BLOG: http://www.cnblogs.cn/kevingrace
    ===================================
    System: CentOS release 6.9 (Final)
    Date:   2018-07-02
    Time:   15:19:34
    Port:   eth0
    Status: fine
            RX  TX
    ------------------------------
    eth0   417B/s   390B/s
    ------------------------------
    Press 'Ctrl+C' to exit
    ===================================
    Welcome to Traffic_Monitor stage
    version 1.0
    Since 2018.7.2
    Created by wangshibo
    BLOG: http://www.cnblogs.cn/kevingrace
    ===================================
    System: CentOS release 6.9 (Final)
    Date:   2018-07-02
    Time:   15:19:35
    Port:   eth0
    Status: fine
            RX  TX
    ------------------------------
    eth0   1.49902KB/s   1.3252KB/s
    ------------------------------
    Press 'Ctrl+C' to exit

    2)监控磁盘的监控脚本

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    [root@ceph-node1 ~]# cat disk_monit.sh
    #!/bin/bash
    #filename:Monitor_Disk
    Monitor_Disk(){
    mkdir -p /mnt/Monitor_Disk
    fdisk -l|grep "Disk /dev/" awk '{print $2,$3$4}'|tr -d ',:'>/mnt/Monitor_Disk/device_list.log
    N=1;ECHO 90
    while read device_line
    do
    Device=`echo $device_line|awk '{print $1}'`
    Sum=`echo $device_line|awk '{print $2}'`
    df -h |grep "$Device"|sort>/mnt/Monitor_Disk/${N}_partitions.log
    echo
    echo "** 第$N块硬盘($Device):${Sum} **"grep -E "$Device|$Sum|$N" --color=yes
    echo "------------------------------------"
    echo -e "linux分区 挂载目录 总大小 已用 剩余 已用百分比 文件系统 ID system 
    块大小  预留空间  ">/mnt/Monitor_Disk/${N}_Over.log
    echo -e "========= ======== =====  ===  ===  ==========  ======= == ====== 
    ======  ======== ">>/mnt/Monitor_Disk/${N}_Over.log
    Num_Partition=`cat /mnt/Monitor_Disk/${N}_partitions.log|wc -l`
    n=0
    while read partition_line
    do
        Partition_Name=`echo $partition_line|awk '{print $1}'`
        Mount_Dir=`echo $partition_line|awk '{print $6}'`
        Partition_Sum=`echo $partition_line|awk '{print $2}'`
        Partition_Used=`echo $partition_line|awk '{print $3}'`
        Partition_Leave=`echo $partition_line| awk '{print $4}'`
        Partition_Percent=`echo $partition_line|awk '{print $5}'`
        Partition_Type=`mount|grep $Partition_Name|awk '{print $5$6}'`
        Partition_Id=`fdisk -l | grep $Partition_Name|tr -d '*'|awk '{print $5}'`
        Partition_System=`fdisk -l | grep $Partition_Name|tr -d '*'|awk '{print $6}'`
        Part_Block_Size_B=`tune2fs -l $Partition_Name|grep "Block size"|awk '{print $3}'`
        Part_Lift_For_Root_Blocks=`tune2fs -l $Partition_Name|grep "Reserved block count:"|
        awk '{print $4}'`
        Part_Block_Size=`echo $Part_Block_Size_B/1024|bc`
        Part_Lift_For_Root=`echo ${Part_Lift_For_Root_Blocks}*${Part_Block_Size}/1024|bc`
        echo -e "$Partition_Name $Mount_Dir $Partition_Sum $Partition_Used $Partition_Leave
    $Partition_Percent $Partition_Type  $Partition_Id $Partition_System 
    ${Part_Block_Size}K ${Part_Lift_For_Root}M">>/mnt/Monitor_Disk/${N}_Over.log
        let n++
     
        [ $n -eq $Num_Partition ]&&(cat /mnt/Monitor_Disk/${N}_Over.log|column -t;echo)
    done</mnt/Monitor_Disk/${N}_partitions.log
    let N++
    done</mnt/Monitor_Disk/device_list.log
    ECHO 90
    rm -fr /mnt/Monitor_Disk
    }
    ECHO(){
    for ((i=1;i<=$1;i++))
    do
    echo -n "#"
    [ $i -eq $1 ]&&(echo;echo)
    done
    }
    Monitor_Disk
     
     
    [root@ceph-node1 ~]# chmod 755 disk_monit.sh
    [root@ceph-node1 ~]# sh disk_monit.sh
    ##########################################################################################
     
     
    ** 第1块硬盘(/dev/sdb):577.4GB **
    ------------------------------------
    linux分区  挂载目录  总大小  已用  剩余  已用百分比  文件系统  ID  system  块大小  预留空间
    =========  ========  =====   ===   ===   ==========  =======   ==  ======  ======  ========
    /dev/sdb1  /data     530G    42G   461G  9%          ext4(rw)  83  Linux   4K      27532M
     
     
    ** 第2块硬盘(/dev/sda):322.1GB **
    ------------------------------------
    linux分区  挂载目录  总大小  已用  剩余  已用百分比  文件系统  ID  system  块大小  预留空间
    =========  ========  =====   ===   ===   ==========  =======   ==  ======  ======  ========
    /dev/sda1  /boot     283M    76M   193M  29%         ext4(rw)  83  Linux   1K      15M
    /dev/sda3  /         265G    3.1G  248G  2%          ext4(rw)  83  Linux   4K      13744M
     
    ##########################################################################################
  • 相关阅读:
    js正则表达式 验证手机号,email地址和邮政编码
    XP系统中IIS访问无法显示网页,目前访问网站的用户过多。终极解决办法
    读《现代前端技术解析》有感
    开源一套基于vue全家桶的webapp
    canvas图像处理汇总
    chrome调试工具高级不完整使用指南(实战二)
    chrome调试工具高级不完整使用指南(实战一)
    chrome调试工具高级不完整使用指南(优化篇)
    chrome调试工具高级不完整使用指南(基础篇)
    前端项目怎样合理使用模块化和闭包?
  • 原文地址:https://www.cnblogs.com/chengjian-physique/p/9803377.html
Copyright © 2020-2023  润新知