• zabbix日常监控项TCP连接状态(六)


    TCP的连接状态对于我们web服务器来说是至关重要的,尤其是并发量ESTAB或者是syn_recv值,假如这个值比较大的话我们可以认为是不是受到了攻击,或是time_wait值比较高的话,我们要考虑看我们内核是否需要调优,太高的time_wait值的话会占用太多端口,要是端口少的话后果不堪设想

    对tcp的监控采用netstat命令,发现在服务器繁忙的时候效果不理想,这个命令占用大量的cpu有时候高达90%以上,可能会导致业务的不稳定,所以改用ss命令对脚本进行优化

    在被监控端操纵如下

    1、编写脚本来获取tcp状态

    mkdir -p /etc/zabbix/scripts/
    vim /etc/zabbix/scripts/tcp_status_ss.sh

    #!/bin/bash
    #scripts for tcp status
    function SYNRECV {
    /usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'SYN-RECV' | awk '{print $2}'
    }
    function ESTAB {
    /usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'ESTAB' | awk '{print $2}'
    }
    function FINWAIT1 {
    /usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'FIN-WAIT-1' | awk '{print $2}'
    }
    function FINWAIT2 {
    /usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'FIN-WAIT-2' | awk '{print $2}'
    }
    function TIMEWAIT {
    /usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'TIME-WAIT' | awk '{print $2}'
    }
    function LASTACK {
    /usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'LAST-ACK' | awk '{print $2}'
    }
    function LISTEN {
    /usr/sbin/ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'LISTEN' | awk '{print $2}'
    }
    $1

    或者

    function SYNRECV { 
    /usr/sbin/ss -s | grep 'synrecv' | awk '{print $2}'

    function ESTAB { 
    /usr/sbin/ss -s | grep 'estab' | awk '{print $2}'

    function FINWAIT1 { 
    /usr/sbin/ss -o |  grep 'FIN-WAIT-1'|wc -l

    function FINWAIT2 { 
    /usr/sbin/ss -ant| grep 'FIN-WAIT-2' | wc -l

    function TIMEWAIT { 
    /usr/sbin/ss -ant | grep 'TIME-WAIT' | wc -l

    function LASTACK { 
    /usr/sbin/ss -ant | grep 'LAST-ACK' | wc -l

    function LISTEN { 
    /usr/sbin/ss -ant | grep 'LISTEN' | wc -l

    $1

    2、赋予脚本执行权限

    chmod +x /etc/zabbix/scripts/tcp_status_ss.sh  

    3、修改zabbix-agent配置文件

    vim /etc/zabbix/zabbix_agentd.conf
    #monitor tcp 
    UserParameter=tcp[*],/etc/zabbix/scripts/tcp_status_ss.sh $1

    4、重启zabbix-agent服务

    service zabbix-agent restart

     

    在zabbix-server端操作如下

    1、在zabbix-server端测试

    [root@zabbix ~]# zabbix_get -s 10.0.0.199 -p 10050 -k "tcp[LISTEN]"
    6
    

     2、在web界面导入模板

    https://pan.baidu.com/s/1_vZMEeAR1CUDjPqnvewiiw

    3、在需要监控的主机上添加该模板

    参考文档:

    https://www.cnblogs.com/cloudos/p/8308946.html

  • 相关阅读:
    708. Insert into a Cyclic Sorted List
    24. Swap Nodes in Pairs
    877. Stone Game
    EOJ Monthly 2020.7 A. 打字机(前缀和+思维)
    EOJ Monthly 2020.7 B. 线上考试(排列组合)
    【JavaScript】Generator
    【JavaScript】Promise
    【JavaScript】throw 和 try...catch
    【JavaScript】JSON
    【JavaScript】WeakSet
  • 原文地址:https://www.cnblogs.com/huangyanqi/p/8528727.html
Copyright © 2020-2023  润新知