zabbix tcp监控

TCP 11种状态图 (我也记不住所有的) 
15.jpg-43.3kB

TCP连接可以使用命令获取

 
  1. [root@abcdocker ~]# netstat -an|awk '/^tcp/{++S[$NF]}END{for(a in S) print a,S[a]}'
  2. TIME_WAIT 99
  3. CLOSE_WAIT 44
  4. FIN_WAIT1 1
  5. FIN_WAIT2 5
  6. ESTABLISHED 275
  7. LAST_ACK 1
  8. LISTEN 25

可以使用man netstat查看TCP的各种状态信息描述

LISTEN - 侦听来自远方TCP端口的连接请求; 

SYN-SENT -在发送连接请求后等待匹配的连接请求; 

SYN-RECEIVED - 在收到和发送一个连接请求后等待对连接请求的确认; 

ESTABLISHED- 代表一个打开的连接,数据可以传送给用户; 

FIN-WAIT-1 - 等待远程TCP的连接中断请求,或先前的连接中断请求的确认;

FIN-WAIT-2 - 从远程TCP等待连接中断请求; 

CLOSE-WAIT - 等待从本地用户发来的连接中断请求; 

CLOSING -等待远程TCP对连接中断的确认; 

LAST-ACK - 等待原来发向远程TCP的连接中断请求的确认; 

TIME-WAIT -等待足够的时间以确保远程TCP接收到连接中断请求的确认; 

CLOSED - 没有任何连接状态;

一、编写配置文件

 
  1. [root@abcdocker zabbix]# grep "Include" zabbix_agentd.conf
  2. Include=/etc/zabbix/zabbix_agentd.d/*.conf
  3. 我们查看我们设置的Include目录,这下面的*.conf文件都是可以读取的

编写配置文件

 
  1. [root@abcdocker zabbix_agentd.d]# cat status.conf
  2. UserParameter=tcp.status[*],/etc/zabbix/zabbix_agentd.d/tcp_status.sh "$1"
  3. 咳咳,注意听讲(敲黑板)
  4. UserParameter= 后面是key的名称
  5. /etc/zabbix/zabbix_agentd.d 存放脚本的路径
  6. 以前的文章有写过,大家可以看我的zabbix板块

复制脚本

 
  1. [root@abcdocker zabbix_agentd.d]# cat tcp_status.sh
  2. #!/bin/bash
  3. #this script is used to get tcp and udp connetion status
  4. #tcp status
  5. metric=$1
  6. tmp_file=/tmp/tcp_status.txt
  7. /bin/netstat -an|awk '/^tcp/{++S[$NF]}END{for(a in S) print a,S[a]}' > $tmp_file
  8. case $metric in
  9. closed)
  10. output=$(awk '/CLOSED/{print $2}' $tmp_file)
  11. if [ "$output" == "" ];then
  12. echo 0
  13. else
  14. echo $output
  15. fi
  16. ;;
  17. listen)
  18. output=$(awk '/LISTEN/{print $2}' $tmp_file)
  19. if [ "$output" == "" ];then
  20. echo 0
  21. else
  22. echo $output
  23. fi
  24. ;;
  25. synrecv)
  26. output=$(awk '/SYN_RECV/{print $2}' $tmp_file)
  27. if [ "$output" == "" ];then
  28. echo 0
  29. else
  30. echo $output
  31. fi
  32. ;;
  33. synsent)
  34. output=$(awk '/SYN_SENT/{print $2}' $tmp_file)
  35. if [ "$output" == "" ];then
  36. echo 0
  37. else
  38. echo $output
  39. fi
  40. ;;
  41. established)
  42. output=$(awk '/ESTABLISHED/{print $2}' $tmp_file)
  43. if [ "$output" == "" ];then
  44. echo 0
  45. else
  46. echo $output
  47. fi
  48. ;;
  49. timewait)
  50. output=$(awk '/TIME_WAIT/{print $2}' $tmp_file)
  51. if [ "$output" == "" ];then
  52. echo 0
  53. else
  54. echo $output
  55. fi
  56. ;;
  57. closing)
  58. output=$(awk '/CLOSING/{print $2}' $tmp_file)
  59. if [ "$output" == "" ];then
  60. echo 0
  61. else
  62. echo $output
  63. fi
  64. ;;
  65. closewait)
  66. output=$(awk '/CLOSE_WAIT/{print $2}' $tmp_file)
  67. if [ "$output" == "" ];then
  68. echo 0
  69. else
  70. echo $output
  71. fi
  72. ;;
  73. lastack)
  74. output=$(awk '/LAST_ACK/{print $2}' $tmp_file)
  75. if [ "$output" == "" ];then
  76. echo 0
  77. else
  78. echo $output
  79. fi
  80. ;;
  81. finwait1)
  82. output=$(awk '/FIN_WAIT1/{print $2}' $tmp_file)
  83. if [ "$output" == "" ];then
  84. echo 0
  85. else
  86. echo $output
  87. fi
  88. ;;
  89. finwait2)
  90. output=$(awk '/FIN_WAIT2/{print $2}' $tmp_file)
  91. if [ "$output" == "" ];then
  92. echo 0
  93. else
  94. echo $output
  95. fi
  96. ;;
  97. *)
  98. echo -e "\e[033mUsage: sh $0 [closed|closing|closewait|synrecv|synsent|finwait1|finwait2|listen|established|lastack|timewait]\e[0m"
  99. esac

提示: 脚本来源于网络

因为脚本是把tcp的一些信息存放在/tmp/下,为了zabbix可以读取到我们设置zabbix可以读的权限

 
  1. [root@abcdocker zabbix_agentd.d]# chmod +x tcp_connection_status.sh
  2. [root@abcdocker zabbix_agentd.d]# chown zabbix.zabbix /tmp/tcp_status.txt

重点: 这里要添加执行权限和tcp_status的属主属组


执行脚本测试

既然脚本写完了,我们就需要执行一下

 
  1. [root@abcdocker zabbix_agentd.d]# zabbix_get -s 127.0.0.1 -k tcp.status[established]
  2. 8
  3. [root@abcdocker zabbix_agentd.d]# zabbix_get -s 127.0.0.1 -k tcp.status[lastack]
  4. 0
  5. [root@abcdocker zabbix_agentd.d]# zabbix_get -s 127.0.0.1 -k tcp.status[finwait1]
  6. 0
  7. [root@abcdocker zabbix_agentd.d]# zabbix_get -s 127.0.0.1 -k tcp.status[timewait]
  8. 101

如果没有zabbix_get需要yum安装

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值