之前对tcp的监控采用netstat命令,发现在服务器繁忙的时候效果不理想,这个命令占用大量的cpu有时候高达90%以上,可能会导致业务的不稳定,所以改用ss命令对脚本进行优化

  • 对tcp连接数和状态的监控意义主要有以下几点:
  • 可以观察服务器的压力分布(连接数大于5W的时候可能系统会有一定的压力,可以考虑加服务器)
  • 如果服务器的连接数突然变得极小(比如100以下),可能是业务系统故障导致在线用户被踢出

脚本编写

  • 在需要被监控的zabbix-agent端添加脚本编写
  • 创建文件夹
mkdir -p /usr/local/zabbix-agent/scripts/
mkdir -p /etc/zabbix/zabbix_agentd.d/
vim /usr/local/zabbix-agent/scripts/tcp_status_ss.sh

脚本内容:

#!/bin/bash
#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

或者:

function SYNRECV {
/usr/sbin/ss -s | grep 'synrecv' | awk '{print $2}'
}
function ESTAB {
/usr/sbin/ss -s | grep 'estab' | awk '{print $2}'
}
function FINWAIT1 {
/usr/sbin/ss -o | grep 'FIN-WAIT-1'|wc -l
}
function FINWAIT2 {
/usr/sbin/ss -ant| grep 'FIN-WAIT-2' | wc -l
}
function TIMEWAIT {
/usr/sbin/ss -ant | grep 'TIME-WAIT' | wc -l
}
function LASTACK {
/usr/sbin/ss -ant | grep 'LAST-ACK' | wc -l
}
function LISTEN {
/usr/sbin/ss -ant | grep 'LISTEN' | wc -l
}
$1
  • 赋予脚本执行权限
chmod +x /usr/local/zabbix-agent/scripts/tcp_status_ss.sh

服务端配置

  • 填写key值:当然大家在加入key值之后最好再服务器上面去执行看有没有返回值:
  • 编辑配置文件,定义监控项:
vim /etc/zabbix/zabbix_agentd.d/tcp_status_ss.conf

写入以下内容:

#monitor tcp
UserParameter=tcp[*],/usr/local/zabbix-agent/scripts/tcp_status_ss.sh $1
  • 重启agent
service zabbix-agent restart
  • zabbix-server服务端测试
zabbix_get -s 192.168.3.18 -p 10050 -k "tcp[LISTEN]"
zabbix_get -s 192.168.3.18 -p 20050 -k "tcp[LISTEN]"
22

zabbix web端配置:

  • 登录Zabbix的web界面,一次选择 Configuration > Templates,在主界面的右上角有个 Import 按钮,用来导入模板

使用ss命令对tcp连接数和状态的监控性能优化的更多相关文章

  1. zabbix3.0使用ss命令对tcp连接数和状态的监控性能优化

    zabbix3.0对tcp连接数及状态的监控优化 之前对tcp的监控采用netstat命令,发现在服务器繁忙的时候效果不理想,这个命令占用大量的cpu有时候高达90%以上,可能会导致业务的不稳定,所以 ...

  2. zabbix3.0对tcp连接数和状态的监控优化

    zabbix3.0对tcp连接数及状态的监控优化 之前对tcp的监控采用netstat命令,发现在服务器繁忙的时候效果不理想,这个命令占用大量的cpu有时候高达90%以上,可能会导致业务的不稳定,所以 ...

  3. zabbix系列(七)zabbix3.0添加对tcp连接数及状态的监控

    原理: netstat -an|awk '/^tcp/{++S[$NF]}END{for(a in S) print a,S[a]}' TIME_WAIT 79 ESTABLISHED 6 LISTE ...

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

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

  5. ss命令和Recv-Q和Send-Q状态

    ss 用来显示处于活动状态的套接字信息.ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容.但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比nets ...

  6. Linux下查看tcp连接数及状态

    netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’ TIME_WAIT 8947FIN_WAIT1 15FIN_W ...

  7. 服务器最大TCP连接数及调优汇总

    启动线程数: 启动线程数=[任务执行时间/(任务执行时间-IO等待时间)]*CPU内核数 最佳启动线程数和CPU内核数量成正比,和IO阻塞时间成反比.如果任务都是CPU计算型任务,那么线程数最多不超过 ...

  8. zabbix经常报警elasticsearch节点TCP连接数过高问题

    单服务器最大tcp连接数及调优汇总 单机最大tcp连接数 网络编程 在tcp应用中,server事先在某个固定端口监听,client主动发起连接,经过三路握手后建立tcp连接.那么对单机,其最大并发t ...

  9. 单服务器最大tcp连接数及调优汇总

    启动线程数: 启动线程数=[任务执行时间/(任务执行时间-IO等待时间)]*CPU内核数 最佳启动线程数和CPU内核数量成正比,和IO阻塞时间成反比.如果任务都是CPU计算型任务,那么线程数最多不超过 ...

随机推荐

  1. DVWA学习笔记-----环境搭建

    DVWA是一款渗透测试的演练系统,在圈子里是很出名的.如果你需要入门,那么就选它了. 我们通常将演练系统称为靶机,下面请跟着我一起搭建DVWA测试环境.  安装PHP集成环境 我这里用的是phpstu ...

  2. vue组件内部引入远程js文件

    之所以要做这个是因为,在一个组件内部需要引入一个js文件来定位.如果放在index.html,这样每个组件都会有这个js.所以需要在组件内单独引入. 第一种操作 Dom引入js: export def ...

  3. js数据放入缓存,需要再调用

    再贴代码之前先描述下,这个技术应用的场景:一个页面的http请求次数能少点就少,这样大大提高用户体验.所以再一个页面发起一个请求,把所有数据都拿到后储存在缓存里面,你想用的时候再调用出来,这个是非常好 ...

  4. linux和sqlserver 2017的安装

    这两天一直在弄linux的安装过程.中间也遇到了不少的坑,主要是网络上的坑人的文章太多.都是坑,最后从redhat官网下载了iso文件,顺便看到官网推荐了一个fedora media writer的烤 ...

  5. Azure系列2.1.14 —— CopyState

    (小弟自学Azure,文中有不正确之处,请路过各位大神指正.) 网上azure的资料较少,尤其是API,全是英文的,中文资料更是少之又少.这次由于公司项目需要使用Azure,所以对Azure的一些学习 ...

  6. 902. Kth Smallest Element in a BST

    Given a binary search tree, write a function kthSmallest to find the kth smallest element in it. You ...

  7. day 7-22 进程,线程,协程

    一.什么是进程 进程是一个具有独立功能的程序关于某个数据集合的一次运行活动.它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体.它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理 ...

  8. 剑指offer(4)

    题目: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2 ...

  9. Linux基础学习笔记3-用户权限

    本章内容 用户user 令牌token,identity Linux用户:Uername/UID 管理员:root,0 普通用户:1-65535 系统用户:1-499,1-999(Centos7) 对 ...

  10. HeapSter安装(k8s1.12以后废弃了)

    HeapSter InfluxDB(持久存储) Grafana 展示InfluxDB的数据(类似kibana) #安装InfluxDB #github https://github.com/kuber ...