Zabbix3.0 使用SS代替netstat监控TCP状态

对于Zabbix监控TCP状态,在网上查了很多资料,大多数都是使用netstat命令来实现。

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

平时一直用SS,所以试着用SS代替netstat,速度快了不少。

个人较喜欢偷懒,看到网上很多少写了非常长的脚本,又是函数,又是写临时文件的。其实完全没必要,不用写啥脚本,临时文件,很简单的就搞定了。

下面是具体实现方式:

1、在Web端创建模板,具体版本如下面这些图。

2、通过下面ss的源码我们可以知道SS能识别的TCP状态的关键字。

static const char *sstate_name[] = {
        "UNKNOWN",
        [TCP_ESTABLISHED] = "ESTAB",
        [TCP_SYN_SENT] = "SYN-SENT",
        [TCP_SYN_RECV] = "SYN-RECV",
        [TCP_FIN_WAIT1] = "FIN-WAIT-1",
        [TCP_FIN_WAIT2] = "FIN-WAIT-2",
        [TCP_TIME_WAIT] = "TIME-WAIT",
        [TCP_CLOSE] = "UNCONN",
        [TCP_CLOSE_WAIT] = "CLOSE-WAIT",
        [TCP_LAST_ACK] = "LAST-ACK",
        [TCP_LISTEN] =  "LISTEN",
        [TCP_CLOSING] = "CLOSING",
};

我们用这些关键字替换上面Item中的KEY来实现所有状态的获取。

3、配置zabbix agent配置文件。

  cat tcp_status.sh 
  UserParameter=tcp.status[*], /usr/sbin/ss -ant|grep -c $1

        4、最后重启zabbix agent后,关联模板即可。

        写的比较简单,大家自己尝试先,有问题再聊。

一些Zabbix相关教程集合

ZABBIX 的详细介绍请点这里
ZABBIX 的下载地址请点这里

猜你喜欢

转载自www.linuxidc.com/Linux/2017-05/143296.htm
今日推荐