一、zabbix-agent 服务器配置

1、编辑zabbix_agent配置文件,添加以下内容

 vim  /etc/zabbix/zabbix_agentd.conf
 ##添加此行
 UserParameter=tcp.state[*],/etc/zabbix/auto_detection_tcp_state.sh $1

2、重启zabbix-agent

 service zabbix_agentd restart

3、脚本内容

cat /etc/zabbix/auto_detection_tcp_state.sh
#!/bin/bash
#TCP连接数及状态
 
if [ $# -ne 1 ];then
        echo -e "\033[32mUsage: sh $0 {ESTABLISHED|LISTEN|TIME_WAIT|CLOSED|CLOSE_WAIT|CLOSING|FIN_WAIT1|FIN_WAIT2|LAST_ACK|SYN_RECV|SYN_SENT}\033[0m"
        exit 1
fi
 
case $1 in
        #socket已经建立连接
        ESTABLISHED)
        result=$(netstat -an | awk '/^tcp/ {print $0}'|grep -wc "ESTABLISHED")
        echo $result
        ;;
        #监听状态  
        LISTEN)
        result=$(netstat -an | awk '/^tcp/ {print $0}'|grep -wc "LISTEN")
        echo $result
        ;;
        #表示收到了对方的FIN报文,并发送出了ACK报文,等待2MSL后就可回到CLOSED状态
        TIME_WAIT)
        result=$(netstat -an | awk '/^tcp/ {print $0}'|grep -wc "TIME_WAIT")
        echo $result
        ;;
        #socket没有被使用,无连接
        CLOSED)
        result=$(netstat -an | awk '/^tcp/ {print $0}'|grep -wc "CLOSED")
        echo $result
        ;;
        #等待关闭连接
        CLOSE_WAIT)
        result=$(netstat -an | awk '/^tcp/ {print $0}'|grep -wc "CLOSE_WAIT")
        echo $result
        ;;
        #服务器端和客户端都同时关闭连接
        CLOSING)
        result=$(netstat -an | awk '/^tcp/ {print $0}'|grep -wc "CLOSING")
        echo $result
        ;;
        #套接字已关闭,连接正在关闭
        FIN_WAIT1)
        result=$(netstat -an | awk '/^tcp/ {print $0}'|grep -wc "FIN_WAIT1")
        echo $result
        ;;
        #连接已关闭,套接字正在等待从远程端关闭
        FIN_WAIT2)
        result=$(netstat -an | awk '/^tcp/ {print $0}'|grep -wc "FIN_WAIT2")
        echo $result
        ;;
        #远端关闭,当前socket被动关闭后发送FIN报文,等待对方ACK报文
        LAST_ACK)
        result=$(netstat -an | awk '/^tcp/ {print $0}'|grep -wc "LAST_ACK")
        echo $result
        ;;
        #接收到SYN报文
        SYN_RECV)
        result=$(netstat -an | awk '/^tcp/ {print $0}'|grep -wc "SYN_RECV")
        echo $result
        ;;
        #已经发送SYN报文
        SYN_SENT)
        result=$(netstat -an | awk '/^tcp/ {print $0}'|grep -wc "SYN_SENT")
        echo $result
        ;;
        *)
        echo -e "\033[32mUsage: sh $0 {ESTABLISHED|LISTEN|TIME_WAIT|CLOSED|CLOSE_WAIT|CLOSING|FIN_WAIT1|FIN_WAIT2|LAST_ACK|SYN_RECV|SYN_SENT}\033[0m"
esac

4、授权并验证脚本

 chmod +x auto_detection_tcp_state.sh
./auto_detection_tcp_state.sh   LISTEN
9
zabbix_get -s 10.0.10.243 -k "tcp.state[LISTEN]"
9

二、Zabbix监控平台配置

1、模板

 

2、导入TCP状态监控模板

配置->模板->导入(右上角)->选择下载的模板文件->最后点击导入
 

3、关联模板

要把导入的模板关联到相对应的主机上边、配置->点击你的主机->模板->选择刚才导入模板,点击添加,最后点击更新即可。

最后展示

 
ESTABLISHED socket已经建立连接
CLOSED socket没有被使用,无连接
CLOSING 服务器端和客户端都同时关闭连接
CLOSE_WAIT 等待关闭连接
TIME_WAIT 表示收到了对方的FIN报文,并发送出了ACK报文,等待2MSL后就可回到CLOSED状态
LAST_ACK 远端关闭,当前socket被动关闭后发送FIN报文,等待对方ACK报文
LISTEN 监听状态
SYN_RECV 接收到SYN报文
SYN_SENT 已经发送SYN报文
FIN_WAIT1 The socket is closed, and the connection is shutting down
FIN_WAIT2 Connection is closed, and the socket is waiting for a shutdown from the remote
 

TCP 相关资料

time_wait状态产生的原因,危害,如何避免
什么是time_wait?如何产生的?

zabbix 监控 tcp 连接数的更多相关文章

  1. zabbix监控tcp连接数的脚本!!

    #!/bin/bash #this script is used to get tcp and udp connetion status #tcp status metric=$ tmp_file=/ ...

  2. zabbix监控tcp连接并发数

    第一步,想在zabbix的web监控tcp连接数,那么要看zabbix-server的版本和zabbix-agent版本是否一致,不然TCP-status图没有数据 也会报错.下图就是版本不符合报错的 ...

  3. zabbix 监控TCP状态连接数

    1.zabbix客户端,监控TCP状态脚本,并保存到的定路径.(/usr/local/zabbix-agent/shells) # cat zabbix_linux_plugin.sh #!/bin/ ...

  4. zabbix加入TCP连接数及状态的监控

    一 监控原理: [root@ nginx]# /bin/netstat -an|awk '/^tcp/{++S[$NF]}END{for(a in S) print a,S[a]}' TIME_WAI ...

  5. zabbix (11) 监控TCP连接数

    对TCP的监控可以采用ss.netstat./proc/net/tcp这三个不同的方案来实现.其中ss是最快的 (1)ss命令 [root@manager1 script_py ::]#time ss ...

  6. zabbix自定义监控tcp连接数

    首先在客户端修改配置文件 # vim /usr/local/zabbix/etc/zabbix_agentd.conf UnsafeUserParameters=1 UserParameter=tcp ...

  7. zabbix监控tcp/nginx/memcache连接数自定义监控shell

    #!/bin/bashtcp_status_fun(){ TCP_STAT=$1 #netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in st ...

  8. zabbix监控tcp状态

    Tcp的连接状态对于我们web服务器来说是至关重要的,从TCP的连接状态中可以看出网络的连接情况,服务器的压力情况,对服务器的并发有很好的直观反映:尤其是并发量ESTAB:或者是syn_recv值,假 ...

  9. zabbix监控应用连接数

    zabbix使用用户自定义键值来监控应用系统连接数: 1.修改配置文件zabbix_agentd.conf 格式: UserParameter=<key>,<shell comman ...

随机推荐

  1. [Unity A*算法]A*算法的简单实现

    写在前面:之前看过一点,然后看不懂,也没用过. 最近正好重构项目看到寻路这块,想起来就去查查资料,总算稍微理解一点了,下面记录一下自己的成果(哈哈哈 :> ) 下面分享几篇我觉得挺不错的文章 A ...

  2. 如何在没有core文件的情况下用dmesg+addr2line定位段错误

    前言 在现网环境下,程序奔溃后不一定会留下core文件,原因有很多,比如存储空间不足就是其中一个常见的原因.此时我们只能依据linux记录的错误日志来定位问题. 涉及linux命令 本文涉及以下几条命 ...

  3. 王艳 201771010127《面向对象程序设计(java)》第十三周学习总结

    一:理论部分. 1.事件处理基础. 1)事件源:能够产生事件的对象都可以成为事件源,如文本框.按钮等.一个事件源是一个能够注册监听器并向监听器发送事件对象的对象. 2)事件监听器:事件监听器对象接收事 ...

  4. Mac更新系统后提示xcrun error

    更新mac os后无法运行git,gcc等命令,出现missing xcrun错误. 这是因为更新系统后会卸载xcode,重新安装后会缺失xcode的命令行工具(command line tools) ...

  5. 【python爬虫】scrapy入门7:Scrapy中runspider和crawl的区别

    runspider:不依赖创建项目 命令:scrapy runspider myspider.py  等同于  pyhton myspider.py crawl:使用spider进行爬取,依赖项目创建 ...

  6. IO字节流与字符流的操作

    字节流:        FileInputStream读取,FileOutputStream输出 字节流使用数组缓冲区复制文件,最后得出所使用的时间 public class work2 { publ ...

  7. Django + Celery 实现动态配置定时任务

    哈喽,今天给大家分享一篇Django+Celery实现动态配置定时任务,因为最近也是无意间看到一位大佬关于这块的文章,然后自己觉得不错,也想学习写一下,然后最终实现功能是在前端页面统一管理计划任务,大 ...

  8. Maven系列(二) -- 将开源库上传到maven仓库私服

    前言 之前简单说了下Maven的搭建,现在跟大家说一下如何将自己的aar传到我们新搭建的maven仓库里面,接下来我们就从最基本的新建一个library开始讲述整个流程,话不多说,让我们把愉快的开始吧 ...

  9. NOIP 2017 P3959 宝藏 (状态压缩DP板子)

    洛谷题目传送门!! 题目的N这么小,当然是选择用状压DP啦!  等等,我好像不会状缩.... 首先,我们当然是要写状态转移方程了!! 那么,如果我们设  f[s]  状态s下,所要的最小花费,那么很显 ...

  10. Python中出现 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 12-13: truncated \UXXXXXXXX escape

    Python中出现 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 12-13: t ...