ZABBIX 3.2 监控服务器TCP连接状态

Posted Abcdocker运维社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ZABBIX 3.2 监控服务器TCP连接状态相关的知识,希望对你有一定的参考价值。

ZABBIX 3.2 监控服务器TCP连接状态

zabbix

TCP 11种状态图   (我也记不住所有的)
ZABBIX 3.2 监控服务器TCP连接状态

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安装

二、WEB界面配置

1. 创建模板
ZABBIX 3.2 监控服务器TCP连接状态

2.设置模板
ZABBIX 3.2 监控服务器TCP连接状态

3.添加监控项
ZABBIX 3.2 监控服务器TCP连接状态

添加完基本上就是下面这样
ZABBIX 3.2 监控服务器TCP连接状态

为了方便大家添加,我已经将name和key整理如下. 手动添加即可

Name                 Key
CLOSED              tcp.status[closed]
CLOSE_WAIT          tcp.status[closewait]
CLOSING             tcp.status[closing]
ESTABLISHED         tcp.status[established]
FIN WAIT1           tcp.status[finwait1]
FIN WAIT2           tcp.status[finwait2]
LAST ACK            tcp.status[lastack]
LISTEN              tcp.status[listen]
SYN RECV            tcp.status[synrecv]
SYN SENT            tcp.status[synsent]
TIME WAIT           tcp.status[timewait]

我这里提供模板:
链接:http://pan.baidu.com/s/1sle6oNj 密码:oqgs
可以直接使用模板导入即可


4.添加图表
 我们所有的操作都在TCP 模板下面添加和设置的,大家不要设置错了
ZABBIX 3.2 监控服务器TCP连接状态

ZABBIX 3.2 监控服务器TCP连接状态

ZABBIX 3.2 监控服务器TCP连接状态

添加完之后我们点击update

三、添加主机

ZABBIX 3.2 监控服务器TCP连接状态
ZABBIX 3.2 监控服务器TCP连接状态

进行查看
ZABBIX 3.2 监控服务器TCP连接状态



四、出图结果



小结:

因为tcp连接数不太好设置触发器,因为业务不同,具体设置多少还是要根据需求来。因为我这是个人博客监控所以连接数是多少都可以!

关于tcp最大连接可以参考下面的文章
http://www.cnblogs.com/fjping0606/p/4729389.html

关于ZABBIX更多相关文章请前往 ZABBIX板块

参考  http://john88wang.blog.51cto.com/2165294/1586234/


愿各位与君同勉  (点个赞在走呗!)


以上是关于ZABBIX 3.2 监控服务器TCP连接状态的主要内容,如果未能解决你的问题,请参考以下文章

十zabbix监控TCP连接状态

Zabbix 监控 tcp 连接状态的第二版(python+zabbix_sender)

zabbix 监控tcp连接的状态

zabbix监控硬盘指标,tcp连接状态

Zabbix之TCP状态监控

zabbix如何监控tcp连接数