IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    nagios增加监控网卡速率插件check_ethspeed.sh

    C1G发表于 2015-01-23 07:58:36
    love 0

    服务器上线时间长了,网线可能会老化或接触不良导致达不到工作速率.
    增加个nagios插件随机监控网卡速率

    参阅:linux查看和改变网卡工作速率

    cd /opt/nagios/libexec
    vi check_ethspeed.sh

    1. #!/bin/bash
    2. #########################################################################
    3. #
    4. # File: check_ethspeed.sh
    5. # Description: Nagios check plugins to check eth speed in *nix.
    6. # Language: GNU Bourne-Again SHell
    7. # Version: 1.0.1
    8. # Date: 2015-1-23
    9. # Author: C1g
    10. # Bog: http://blog.C1gStudio.com
    11. # Note: Allow nagios to run ethtool commands
    12. # visudo
    13. # #Defaults requiretty
    14. # nagios ALL=NOPASSWD:/sbin/ethtool
    15. #
    16. #########################################################################
    17. path=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
    18. export PATH
    19. STATE_OK=0
    20. STATE_WARNING=1
    21. STATE_CRITICAL=2
    22. STATE_UNKNOWN=3
    23. warn_num=100
    24. critical_num=10
    25. eth=eth0
    26. usage(){
    27. echo -e "Usage: $0 -i|--interface interface -w|--warning warning threshold -c|--critical critical threshold"
    28. echo -e "Example:"
    29. echo -e "$0 -i eth0 -w 100 -c 10"
    30. }
    31. select_arg(){
    32. if [ $# -eq 0 ];then
    33. return 1
    34. fi
    35. until [ $# -eq 0 ];do
    36. case $1 in
    37. -i|--interface)
    38. [ $# -lt 2 ] && return 1
    39. if ! cat /var/log/dmesg |grep $2 >/dev/null 2>&1;then
    40. return 1
    41. fi
    42. eth=$2
    43. shift 2
    44. ;;
    45. -w|--warning)
    46. [ $# -lt 2 ] && return 1
    47. if ! echo $2 |grep -E -q "^[1-9][0-9]*$";then
    48. return 1
    49. fi
    50. warn_num=$2
    51. shift 2
    52. ;;
    53. -c|--critical)
    54. [ $# -lt 2 ] && return 1
    55. if ! echo $2 |grep -E -q "^[1-9][0-9]*$";then
    56. return 1
    57. fi
    58. critical_num=$2
    59. shift 2
    60. ;;
    61. *)
    62. return 1
    63. ;;
    64. esac
    65. done
    66. return 0
    67. }
    68. select_arg $@
    69. [ $? -ne 0 ] && usage && exit $STATE_UNKNOWN
    70. #echo "warn :$warn_num"
    71. #echo "critical :$critical_num"
    72. if [ $critical_num -gt $warn_num ];then
    73. usage
    74. exit $STATE_UNKNOWN
    75. fi
    76. #ethtool $eth| grep Speed | grep -o '[0-9]\+'
    77. #kernel >=2.6.33
    78. #cat /sys/class/net/$eth/speed
    79. total=`sudo /sbin/ethtool $eth |grep Speed:|awk '{print $2}' |awk -F 'Mb' '{print $1}'`
    80. if [ $total = Unknown! ];then
    81. echo "UNKNOWN STATE $eth maybe not working!"
    82. exit $STATE_UNKNOWN
    83. elif [ $total -gt $warn_num ];then
    84. echo "$eth OK - Speed: $total Mb/s |$eth=$total;$warn_num;$critical_num;0"
    85. exit $STATE_OK
    86. elif [ $total -le $warn_num -a $total -gt $critical_num ];then
    87. echo "$eth WARNING - Speed: $total Mb/s |$eth=$total;$warn_num;$critical_num;0"
    88. exit $STATE_WARNING
    89. elif [ $total -le $critical_num ];then
    90. echo "$eth CRITICAL - Speed: $total Mb/s |$eth=$total;$warn_num;$critical_num;0"
    91. exit $STATE_CRITICAL
    92. else
    93. echo "UNKNOWN STATE"
    94. exit $STATE_UNKNOWN
    95. fi

    下载check_ethspeed.sh

    chown nagios:nagios check_ethspeed.sh
    chmod 775 check_ethspeed.sh

    运行ethtool命令需root权限
    visudo

    1. Defaults requiretty

    注释这一行

    添加nagios用户无需密码运行ethtool权限

    1. nagios ALL=NOPASSWD:/sbin/ethtool

    客户端nrpe增加监控命令
    echo ‘command[check_ethspeed2]=/opt/nagios/libexec/check_ethspeed.sh -i eth2 -w 100 -c 10′ >> /opt/nagios/etc/nrpe.cfg

    重启nrpe
    kill `cat /var/run/nrpe.pid`
    /opt/nagios/bin/nrpe -c /opt/nagios/etc/nrpe.cfg -d

    监控端增加监控服务
    vi c1gstudio.cfg

    1. define service{
    2. use local-service,srv-pnp ; Name of service template to use
    3. host_name c1gstudio
    4. service_description check_ethspeed eth2
    5. check_command check_ethspeed!eth2!100!10
    6. notifications_enabled 0
    7. }

    重启nagios
    /etc/init.d/nagios reload

    check_ethspeed

    参阅:http://blog.c1gstudio.com/archives/1748

    Related Posts

    • linux下如何查看网卡mac地址 ( 2012-07-03)
    • Dell R410 网卡在Centos5.5 上丢包 ( 2011-04-28)
    • nagios 使用check_file.pl 检查服务是否运行 ( 2010-08-25)


沪ICP备19023445号-2号
友情链接