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\n", a,S[a]}}'
ESTAB
State
TIME-WAIT
CLOSE-WAIT
LISTEN

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}'
}
$

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

3、测试脚本的可用性

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

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 $

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

#、/etc/zabbix/zabbix_agentd.d/下面找不到可执行脚本
[root@manage ~]# zabbix_get -s 10.45.139.112 -p -k "tcp[ESTAB]"
sh: /etc/zabbix/zabbix_agentd.d/tcp_status.conf: No such file or directory ##、脚本tcp_status.conf没有执行权限会出现下面错误,解决:chmod +x tcp_status.conf
[root@manage ~]# zabbix_get -s 10.45.139.112 -p -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  -k "tcp[ESTAB]"

2、zabbix页面导入模板

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

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

3、主机添加模板

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

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

4、添加触发器

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

5、添加图形

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

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

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

图形如下:

zabbix监控tcp状态的更多相关文章

  1. zabbix 监控TCP状态连接数

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

  2. (十)zabbix监控TCP状态

    1)agent端配置 agent端脚本获取监控项 #vim /etc/zabbix/zabbix_agentd.d/tcp_status.sh #bin/bash [ $# -ne 1 ] & ...

  3. Zabbix 监控 Nginx 状态

    简介: 如何使用 Zabbix 监控 Nginx 状态 ? 1.获取 Nginx 状态( HTTP Stub Status ) shell > /usr/local/nginx/sbin/ngi ...

  4. Zabbix 监控 Mysql 状态

    简介: 如何使用 Zabbix 来监控 Mysql 状态 ? Zabbix 有自带监控 Mysql 的模板,但是却不能直接使用.. 需要我们根据模板提供的 Key 自己写脚本获取数据 1.查看都有哪些 ...

  5. zabbix对tcp状态监控

    1.先编写一个获取tcp状态的脚本文件,脚本放在/usr/lib/zabbix/alertscripts/vim /usr/lib/zabbix/alertscripts/tcp_status.sh ...

  6. zabbix 监控 tcp 连接数

    一.zabbix-agent 服务器配置 1.编辑zabbix_agent配置文件,添加以下内容 vim /etc/zabbix/zabbix_agentd.conf ##添加此行 UserParam ...

  7. Tomcat 常规配置并通过zabbix 监控 jvm状态

    一:jdk和tomcat基础 apache有两种方式运行php,一是使用模块,二是使用fastcgi nginx也可以通过fastcgi处理动态请求,也可以转发至tomcat tomcat监控主要是监 ...

  8. zabbix监控tcp连接并发数

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

  9. Zabbix 监控端口状态并邮件报警

    Zabbix监控端口 前提 zabbix安装 zabbix邮件报警 添加监控项 添加触发器 添加动作 设置完成后,在配置过报警媒介后也就是 邮件报警  后就完成了.

随机推荐

  1. JavaScript实现最简单的拖拽效果

    一.一些无关痛痒的唠叨 拖拽还是挺不错的一个页面效果,我个人认为,其生命力在于可以让用户自己做一些操作,所谓自定义.例如: ①浏览器标签顺序的拖拽切换 现在基本上所有的选项卡式的浏览器都有顺序拖拽切换 ...

  2. C#爬网页时“远程服务器返回错误: (403) 已禁止”解决方法

    HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(uri); //这个一定要加上,在某些网站没有会发生"远程服务器返回错误: ...

  3. PHP字符串offset取值特性

    在PHP的代码基础上,PHP字符串offset取值特性,可以拿来利用,给PHP应用程序带来安全风险. 在PHP中,可以像操作数组一样操作字符串,字符串中的字符可以用类似数组结构中的方括号包含对应的数字 ...

  4. Ubuntu图形界面和字符界面转换、指定默认启动界面

    1.按ALT+CTRL+F1.F2.F3.F4.F5.F6.F7可来回切换7个界面(Linux实体机)      其中ALT+CTRL+F7可切换到图形界面(Linux实体机)        如果是V ...

  5. AddChild

    using UnityEngine; using UnityEngine; using UnityEditor; using System.Collections; public class AddC ...

  6. 如何使用 SSH 连接 VMWare 虚拟机中的 Ubuntu

    环境:VMWare Player 5.0.2,Ubuntu 13.10  VMWare共有3种网络连接模式,分别是: 1. bridged(桥接模式):虚拟机将直接连接到物理局域网,使自身独立于宿主机 ...

  7. Elasticsearch 版本控制

    悲观并发控制(Pessimistic concurrency control) 这在关系型数据库中被广泛的使用,假设冲突的更改经常发生,为了解决冲突我们把访问区块化.典型的例子是在读一行数据前锁定这行 ...

  8. 在recycler中写的布局不起作用

    把 LinearLayout 改成 RelativeLayout   ok了 创建的两种方式 1.LayoutInflater.from(parent.getContext()).inflate(R. ...

  9. WINDOWS消息和窗口简介

    一.WINDOWS的消息和窗口简介:1.什么是windows在这里我就不介绍了,但是作为一个程序员我们要知道WINDOWS最重要的一个也是我们程序员常用的一个东西就是消息.窗口是以消息的形式输入的,窗 ...

  10. vs必备快捷键整理

    .格式化代码:Ctrl+E,D .格式化部分代码:选中代码->Ctrl+K,F.或者Ctrl+E,F. .折叠cs文件所有方法:Ctrl+M,O .打开或折叠所有代码:Ctrl+M,L (打开或 ...