• zabbix监控TCP连接个数


    zabbix版本: 5.0

    1.首先用netstat命令 打印所有 TCP 连接

    基于netstat命令输出的TCP连接信息,统计各连接状态的数量。

    主要使用的命令为netstat -tan,涉及三个选项:

    -t,显示TCP连接。

    -u,显示UDP连接。

    -a,Show both listening and non-listening sockets. 连接状态总的分为两大类,listening和non-listening,即监听/非监听,也就是连接状态为LISTEN/非LISTEN。

    -a就是显示所有状态的连接。

    -l,仅显示LISTEN状态的连接。

    -n,Show numerical addresses instead of trying to determine symbolic host, port or user names. 关闭名称解析,以数字方式显示IP和端口。 这个在这次统计过程中作用不大,但一般都习惯性地加上。

    [root@zabbix-server ~]# netstat -tan

     2.awk 格式化输出统计结果

    从netstat命令中可以看出,我们需要取的是第6列的State,但忽略第一行,将各State各自循环+1,得到各种状态的连接数量。

    根据需求,得到格式化输出命令:

    [root@zabbix-server ~]# netstat -tan | awk 'NR>1 {++v[$6]} END {for(k in v) print k,v[k]}'

    这样就得到了全面的基础数据,接下来通过grep来匹配连接状态,取到对应的行,经过剪切就能取到对应连接状态的数量了。

    [root@zabbix-server ~]# netstat -tan | awk 'NR>1 {++v[$6]} END {for(k in v) print k,v[k]}' | grep ESTABLISHED | cut -d' ' -f2

     

    3.编写脚本

    vi /etc/zabbix/zabbix_agentd.d/Tcp_State_Statistic.sh

    1. #!/bin/bash
    2. # Description: 统计并获取TCP连接状态
    3. # Author: yqc
    4. # Define variables
    5. Tcp_State=$1
    6. # Define function "Tcp_State_Statistic"
    7. Tcp_State_Statistic(){
    8. State_Num=$(netstat -tan | awk 'NR>1 {++v[$6]} END {for(k in v) print k,v[k]}' | grep ${Tcp_State} | cut -d' ' -f2)
    9. if [[ -z $State_Num ]]; then
    10. State_Num=0
    11. fi
    12. echo $State_Num
    13. }
    14. # Notification or Use function "Tcp_State_Statistic"
    15. if [[ $# != 1 ]]; then
    16. echo "Usage: bash $0 <LISTEN|SYN_SENT|SYN_RCVD|ESTABLISHED|FIN_WAIT1|CLOSE_WAIT|FIN_WAIT2|LAST_ACK|TIME_WAIT>"
    17. else
    18. Tcp_State_Statistic $1
    19. fi

    4.zabbix agent配置文件中添加 UserParameter

    vi /etc/zabbix/zabbix_agentd.conf

    1. [root@zabbix-server ~]# grep '^[a-Z]' /etc/zabbix/zabbix_agentd.conf
    2. PidFile=/var/run/zabbix/zabbix_agentd.pid
    3. LogFile=/var/log/zabbix/zabbix_agentd.log
    4. LogFileSize=0
    5. Server=127.0.0.1,192.168.85.148
    6. ServerActive=127.0.0.1,192.168.85.148
    7. Hostname=Zabbix server
    8. Include=/etc/zabbix/zabbix_agentd.d/*.conf

    启动:

    [root@zabbix-server ~]# systemctl enable zabbix-agent && systemctl restart zabbix-agent

    5.添加自定义监控项

    /etc/zabbix/zabbix_agentd.d/目录下新建配置文件来添加自定义监控项,配置文件模块化有利于后期维护。

    1. vim /etc/zabbix/zabbix_agentd.d/tcp_state_statistic.conf
    2. UserParameter=tcp_state_statistic[*],/etc/zabbix/zabbix_agentd.d/Tcp_State_Statistic.sh "$1" #新文件,只添加这一行
    3. chmod +x /etc/zabbix/zabbix_agentd.d/Tcp_State_Statistic.sh
    4. /etc/zabbix/zabbix_agentd.d/Tcp_State_Statistic.sh LISTEN

    重启zabbix-agentd

    [root@zabbix-server ~]# systemctl restart zabbix-agent
    6.zabbix Server测试手动获取监控项数据

    安装zabbix-get:

    yum -y install zabbix-get

    手动获取监控数据

    1. [root@zabbix-server ~]# zabbix_get -s 192.168.85.148 -p 10050 -k "tcp_state_statistic["LISTEN"]"
    2. 13
    3. [root@zabbix-server ~]# zabbix_get -s 192.168.85.148 -p 10050 -k "tcp_state_statistic["EASTAB"]"
    4. 0

     

    7.Zabbix Server 制作 TCP 连接状态监测模板

    创建模板

    配置-模板-创建模板:

     

    填写模板信息:

     

    创建应用集

    找到对应模板,点击应用集

     

     

     

    创建监控项

    找到相应模板,点击监控项

    配置--->主机--->监控项

     

     

    依次克隆并修改,将TCP连接各状态的监控项都创建好。

    img

    可以根据需要继续创建图形、触发器等,这里的目的是为了熟悉了解TCP连接状态,以及如何通过Zabbix来监测到数据,不做过多个性化的操作。

    8.Zabbix Server 添加主机并关联模板

     

     

    验证监控数据

     

    图形显示

     

  • 相关阅读:
    IT行业的6大热门岗位,薪酬都有多高?
    Postman历史版本下载
    AutoJs学习-几个QQ群脚本(群引流\提取成员\加群友\加群)
    angular ag-grid api
    Linux cd命令:切换目录
    时间本地化开发规范
    .NET宝藏API之:OutputFormatter,格式化输出对象
    基于java+springboot+mybatis+vue+elementui的校园新闻网站
    idea docker插件安装及使用
    kubernetes集群基于kubeadm部署以及常见问题解决
  • 原文地址:https://blog.csdn.net/weixin_44989941/article/details/125484708