logo资料库

运维之道 | Zabbix 监控服务器TCP连接状态信息.pdf

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
运维之道 | Zabbix 监控服务器 运维之道 监控服务器TCP连接状态信息 连接状态信息 前言前言 TCP的连接状态对于我们web服务器来说是至关重要的,尤其是并发量ESTAB,或者是syn_recv值,假如这个值比较大的话我们可以认为是不是受到了攻击;time_wait值比较高的 话,我们要考虑看我们内核是否需要调优,太高的time_wait值的话会占用太多端口,要是端口少的话后果不堪设想 一、一、TCP状态介绍 状态介绍 1、、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 :没有任何连接状态; 2、监控原理 、监控原理 [root@zabbix ~]# /bin/netstat -an|awk '/^tcp/{++S[$NF]}END{for(a in S) print a,S[a]}' LISTEN 9 ESTABLISHED 53 FIN_WAIT2 1 TIME_WAIT 139 二、二、Zabbix-agent 端配置端配置 1、编写、编写TCP监控脚本 监控脚本 [root@zabbix zabbix_agentd.d]# pwd /etc/zabbix/zabbix_agentd.d ///脚本存放目录 脚本存放目录 [root@zabbix zabbix_agentd.d]# vim tcp_status.sh ///脚本名脚本名 #!/bin/bash #This script is used to get tcp and udp connetion status #tcp status metric=$1 tmp_file=/tmp/tcp_status.txt /bin/netstat -an|awk '/^tcp/{++S[$NF]}END{for(a in S) print a,S[a]}' > $tmp_file case $metric in closed) output=$(awk '/CLOSED/{print $2}' $tmp_file) if [ "$output" == "" ];then echo 0 else echo $output fi ;; listen) output=$(awk '/LISTEN/{print $2}' $tmp_file) if [ "$output" == "" ];then echo 0 else echo $output fi ;; synrecv) output=$(awk '/SYN_RECV/{print $2}' $tmp_file) if [ "$output" == "" ];then echo 0 else echo $output fi ;; synsent)
output=$(awk '/SYN_SENT/{print $2}' $tmp_file) if [ "$output" == "" ];then echo 0 else echo $output fi ;; established) output=$(awk '/ESTABLISHED/{print $2}' $tmp_file) if [ "$output" == "" ];then echo 0 else echo $output fi ;; timewait) output=$(awk '/TIME_WAIT/{print $2}' $tmp_file) if [ "$output" == "" ];then echo 0 else echo $output fi ;; closing) output=$(awk '/CLOSING/{print $2}' $tmp_file) if [ "$output" == "" ];then echo 0 else echo $output fi ;; closewait) output=$(awk '/CLOSE_WAIT/{print $2}' $tmp_file) if [ "$output" == "" ];then echo 0 else echo $output fi ;; lastack) output=$(awk '/LAST_ACK/{print $2}' $tmp_file) if [ "$output" == "" ];then echo 0 else echo $output fi ;; finwait1) output=$(awk '/FIN_WAIT1/{print $2}' $tmp_file) if [ "$output" == "" ];then echo 0 else echo $output fi ;; finwait2) output=$(awk '/FIN_WAIT2/{print $2}' $tmp_file) if [ "$output" == "" ];then echo 0 else echo $output fi ;; *) echo -e "\e[033mUsage: sh $0 [closed|closing|closewait|synrecv|synsent|finwait1|finwait2|listen|established|lastack|timewait]\e[0m" esac 2、赋予脚本执行权限 、赋予脚本执行权限 [root@zabbix zabbix_agentd.d]# chmod +x tcp_status.sh [root@zabbix zabbix_agentd.d]# ll 总用量总用量 8 -rwxr-xr-x. 1 root root 2570 2月月 15 17:51 tcp_status.sh 3、添加、添加zabbix配置文件,放于 配置文件,放于/etc/zabbix/zabbix_agentd.d/目录下目录下 agent的配置文件 /etc/zabbix/zabbix_agentd.conf 中定义了其他key的包含目录,创建配置文件tcp_status.conf [root@zabbix zabbix_agentd.d]# pwd /etc/zabbix/zabbix_agentd.d ///脚本目录 [root@zabbix zabbix_agentd.d]# cat tcp_status.conf UserParameter=tcp.status[*],/etc/zabbix/zabbix_agentd.d/tcp_status.sh "$1" ///脚本内容 配置文件开启自定义参数UnsafeUserParameters=1 4、确保配置 、确保配置Agent配置文件开启自定义参数 [root@zabbix zabbix]# egrep -v "#|^$" zabbix_agentd.conf PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=0 Server=192.168.1.111 ServerActive=192.168.1.111 Hostname=villian Include=/etc/zabbix/zabbix_agentd.d/*.conf UnsafeUserParameters=1 ///1代表允许,0代表关闭 5、重启、重启zabbix-agent服务服务 [root@zabbix ~]# systemctl restart zabbix-agent.service PS:因为脚本是把tcp的一些信息存放在/tmp/下,为了zabbix可以读取到我们设置zabbix可以读的权限,确保属主与属组都为zabbix即可 [root@zabbix ~]# touch /tmp/tcp_status.txt [root@zabbix ~]# chown zabbix.zabbix /tmp/tcp_status.txt 定义应用集nginx_status—>定义监控项 三、三、Zabbix-web 界面配置 界面配置 思路:思路:定义定义application_status模板模板—>定义应用集 1、在、在 zabbix servere 服务器上测试,是否能正常获取数据 服务器上测试,是否能正常获取数据 [root@zabbix ~]# zabbix_get -s 192.168.1.111 -p 10050 -k "tcp.status[listen]" 9 [root@zabbix ~]# zabbix_get -s 192.168.1.111 -p 10050 -k "tcp.status[timewait]" 123 [root@zabbix ~]# zabbix_get -s 192.168.1.111 -p 10050 -k "tcp.status[established]" 55 定义监控项—->定义图形 定义图形—>定义触发器 定义触发器—->添加主机或主机关联这个模板 添加主机或主机关联这个模板 键值:键值:
tcp.status[closed] tcp.status[closewait] tcp.status[established] tcp.status[finwait1] tcp.status[finwait2] tcp.status[lastack] tcp.status[listen] tcp.status[synrecv] tcp.status[synsent] tcp.status[timewait] 2、、zabbix-web端添加模板 端添加模板 3、定义应用集 、定义应用集 4、定义监控项((添加键值) 、定义监控项((添加键值)这里只定义 这里只定义listen,其他一样方式定义 ,其他一样方式定义))
5、定义图形 、定义图形
6、主机关联模板 、主机关联模板 8、查看、查看Nginx状态信息 状态信息
拓展:或者通过导入TCP Connection Status模板进行配置 模板进行配置 拓展:或者通过导入 1、导入事先准备好的 、导入事先准备好的TCP Connection Status模板,自动创建监控项 模板,自动创建监控项 路径:路径:Configuration-->Templates-->Import,选择相应的模板,点击 ,选择相应的模板,点击Import即可即可
2、关联模板 、关联模板 路径:路径:Configuration-->Hosts-->villian--Templates,选择模板 ,选择模板,点击点击Updtae即可即可 3、查看、查看TCP状态状态 路径:路径:Monitoring-->Graphs-->Host(Node1)-->Grahp(TCP Status)
作者:VillianTsang
分享到:
收藏