• zabbix监控tcp状态


         Tcp的连接状态对于我们web服务器来说是至关重要的,从TCP的连接状态中可以看出网络的连接情况,服务器的压力情况,对服务器的并发有很好的直观反映;尤其是并发量ESTAB;或者是syn_recv值,假如这个值比较大的话我们可以认为是不是受到了攻击,或是是time_wait值比较高的话,我们要考虑看我们内核是否需要调优,太高的time_wait值的话会占用太多端口,要是端口少的话后果不堪设想。

     我们可以利用下面命令来查询11中状态的连接数,下面我们也可以利用这个命令来写脚本。

    [root@manage root]# ss state all|awk '{++S[$1]} END {for(a in S) {printf "%11-s %s
    ", a,S[a]}}'
    ESTAB       12
    State       1
    TIME-WAIT   203
    CLOSE-WAIT  1
    LISTEN      9

    zabbix客户端

    1、备份zabbix客户端配置文件

     cp /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf.bak

    2、编写获取tcp状态的脚本tcp_status.conf

    #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

    这里最好使用ss命令,如果服务器的压力小,链接少,不会有问题,但随着服务器压力和链接数的增加,用netstat就会造成执行速度慢,server端无法接收到执行结果,造成监控异常。

    3、测试脚本的可用性

    1、给脚本授权
    chmod +x tcp_status.conf
    2、执行脚本
    [root@iZ256ms9dbzZ zabbix_agentd.d]# ss -ant | awk '{++s[$1]} END {for(k in s) print k,s[k]}' | grep 'LISTEN' | awk '{print $2}'
    12

    4、编辑zabbix客户端配置文件

    vim /etc/zabbix/zabbix_agentd.conf
    在285行左右添加下面命令,注意要提前将具有执行权限的脚本tcp_status.conf放到/etc/zabbix/zabbix_agentd.d/下面
    UserParameter=tcp[*],/etc/zabbix/zabbix_agentd.d/tcp_status.conf  $1

    否则会出现下面几种错误:

    #1、/etc/zabbix/zabbix_agentd.d/下面找不到可执行脚本
    [root@manage ~]# zabbix_get -s 10.45.139.112 -p 10050 -k "tcp[ESTAB]"
    sh: /etc/zabbix/zabbix_agentd.d/tcp_status.conf: No such file or directory
    
    ##2、脚本tcp_status.conf没有执行权限会出现下面错误,解决:chmod +x tcp_status.conf
    [root@manage ~]# zabbix_get -s 10.45.139.112 -p 10050 -k "tcp[ESTAB]"
    sh: /usr/local/zabbix/scripts/tcp_status.conf: Permission denied

    5、重启zabbix_agent

    [root@iZ256ms9dbzZ zabbix_agentd.d]# /etc/init.d/zabbix-agent restart
    Shutting down Zabbix agent:                                [  OK  ]
    Starting Zabbix agent:                                     [  OK  ]

    zabbix服务端

    1、命令行测试连接K值

    [root@manage zabbix]# zabbix_get -s 10.45.139.112 -p 10050 -k "tcp[ESTAB]"
    11

    2、zabbix页面导入模板

    【配置】-【模板】-【选择文件】

    tcp模板链接:https://pan.baidu.com/s/1TMtZtApDuVXxkNxNQUVi6Q 密码:2wfk

    3、主机添加模板

     【配置】-【主机】,选择配置模板的主机

    此时添加完后会添加7个监控项,但是并没有添加触发器,并不会进行报警,接下来就要看每个业务的不同来设置触发器的阈值。

    4、添加触发器

    选择刚才添加模板的主机,然后点击触发器,然后进行下列添加阈值的操作。

     

     5、添加图形

    仍旧选择刚才配置触发器的主机,点击【图形】-【创建图形】

    这样图形创建成功后,我们就可以在下面看到tcp的状态

    当然图形也可以添加多个监控项。

    图形如下:

  • 相关阅读:
    Maven MicroTip: Get sources and Javadocs
    重定向标准流
    Unix: How to redirect stderr to stdout
    ruby doc
    1. 数据流重定向(stdin,stdout,stderr)
    jruby.org十多M的jar都是放到amazon s3上提供服务的
    试试rvm
    ruby doc
    Velocity用户手册中文版
    对Windows Mobile Timer不准的总结
  • 原文地址:https://www.cnblogs.com/dadonggg/p/8579268.html
Copyright © 2020-2023  润新知