作者:SRE运维博客
博客地址:https://www.cnsre.cn
文章地址:https://www.cnsre.cn/posts/210425130327/
相关话题:https://www.cnsre.cn/tags/zabbix/
zabbix-agent 服务器配置
脚本内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
cat /etc/zabbix/scripts/auto_detection_tcp_state.sh
#!/bin/bash
#TCP连接数及状态
if [ $# -ne 1 ] ; then
echo -e "\033[32mUsage: sh $0 {ESTABLISHED|LISTEN|TIME_WAIT|CLOSED|CLOSE_WAIT|CLOSING|FIN_WAIT1|FIN_WAIT2|LAST_ACK|SYN_RECV|SYN_SENT}\033[0m"
exit 1
fi
case $1 in
#socket已经建立连接
ESTABLISHED)
result = $( netstat -an | awk '/^tcp/ {print $0}' | grep -wc "ESTABLISHED" )
echo $result
;;
#监听状态
LISTEN)
result = $( netstat -an | awk '/^tcp/ {print $0}' | grep -wc "LISTEN" )
echo $result
;;
#表示收到了对方的FIN报文,并发送出了ACK报文,等待2MSL后就可回到CLOSED状态
TIME_WAIT)
result = $( netstat -an | awk '/^tcp/ {print $0}' | grep -wc "TIME_WAIT" )
echo $result
;;
#socket没有被使用,无连接
CLOSED)
result = $( netstat -an | awk '/^tcp/ {print $0}' | grep -wc "CLOSED" )
echo $result
;;
#等待关闭连接
CLOSE_WAIT)
result = $( netstat -an | awk '/^tcp/ {print $0}' | grep -wc "CLOSE_WAIT" )
echo $result
;;
#服务器端和客户端都同时关闭连接
CLOSING)
result = $( netstat -an | awk '/^tcp/ {print $0}' | grep -wc "CLOSING" )
echo $result
;;
#套接字已关闭,连接正在关闭
FIN_WAIT1)
result = $( netstat -an | awk '/^tcp/ {print $0}' | grep -wc "FIN_WAIT1" )
echo $result
;;
#连接已关闭,套接字正在等待从远程端关闭
FIN_WAIT2)
result = $( netstat -an | awk '/^tcp/ {print $0}' | grep -wc "FIN_WAIT2" )
echo $result
;;
#远端关闭,当前socket被动关闭后发送FIN报文,等待对方ACK报文
LAST_ACK)
result = $( netstat -an | awk '/^tcp/ {print $0}' | grep -wc "LAST_ACK" )
echo $result
;;
#接收到SYN报文
SYN_RECV)
result = $( netstat -an | awk '/^tcp/ {print $0}' | grep -wc "SYN_RECV" )
echo $result
;;
#已经发送SYN报文
SYN_SENT)
result = $( netstat -an | awk '/^tcp/ {print $0}' | grep -wc "SYN_SENT" )
echo $result
;;
*)
echo -e "\033[32mUsage: sh $0 {ESTABLISHED|LISTEN|TIME_WAIT|CLOSED|CLOSE_WAIT|CLOSING|FIN_WAIT1|FIN_WAIT2|LAST_ACK|SYN_RECV|SYN_SENT}\033[0m"
esac
编辑zabbix_agent配置文件
添加以下内容
1
2
3
vim /etc/zabbix/zabbix_agentd.conf
##添加此行
UserParameter = tcp.state[ *] ,/etc/zabbix/scripts/auto_detection_tcp_state.sh $1
重启zabbix-agent
1
service zabbix_agentd restart
授权并验证脚本
1
2
3
4
5
chmod +x auto_detection_tcp_state.sh
./auto_detection_tcp_state.sh LISTEN
9
zabbix_get -s 10.0.10.243 -k "tcp.state[LISTEN]"
9
Zabbix监控平台配置
模板
点击下载zabbix_tcp_templates.xml
导入TCP状态监控模板
配置
->模板
->导入
(右上角)->选择下载的模板文件
->最后点击导入
关联模板
要把导入的模板关联到相对应的主机上边、配置
->点击你的主机
->``模板->选择刚才导入模板,
点击添加,最后点击
更新`即可。
最后展示
ESTABLISHED socket已经建立连接
CLOSED socket没有被使用,无连接
CLOSING 服务器端和客户端都同时关闭连接
CLOSE_WAIT 等待关闭连接
TIME_WAIT 表示收到了对方的FIN报文,并发送出了ACK报文,等待2MSL后就可回到CLOSED状态
LAST_ACK 远端关闭,当前socket被动关闭后发送FIN报文,等待对方ACK报文
LISTEN 监听状态
SYN_RECV 接收到SYN报文
SYN_SENT 已经发送SYN报文
FIN_WAIT1 The socket is closed, and the connection is shutting down
FIN_WAIT2 Connection is closed, and the socket is waiting for a shutdown from the remote
TCP 相关材料
Time_Wait状态产生的原因,危害,如何避免
什么是time_Wait?如何产生的?
附送送几个自定义脚本
接口健康检查
监控磁盘IO
接口健康检查
1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
healthyCheck = https://validation.xxx.cn/healthyCheck
if [ $# -ne 1 ] ; then
echo "Follow the script name with an argument"
fi
case $1 in
healthyCheck)
curl -k -s $healthyCheck | awk -F '"|:|,' '{print $4}'
;;
*)
echo -e "\033[5;31m Usage: sh -bash [Boradlink|Hcmini]\033[0m"
esac
监控磁盘IO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/bash
Device = ` iostat | awk '{print $1}' | awk 'NR==7{print}' `
if [ $# -ne 1 ] ; then
echo "Follow the script name with an argument"
fi
case $1 in
rrqm)
iostat -dxk 1 1| grep -w $Device | awk '{print $3}'
;;
rps)
iostat -dxk 1 1| grep -w $Device | awk '{print $4}'
;;
wps)
iostat -dxk 1 1| grep -w $Device | awk '{print $5}'
;;
rKBps)
iostat -dxk 1 1| grep -w $Device | awk '{print $6}'
;;
wKBps)
iostat -dxk 1 1| grep -w $Device | awk '{print $7}'
;;
avgrq-sz)
iostat -dxk 1 1| grep -w $Device | awk '{print $8}'
;;
avgqu-sz)
iostat -dxk 1 1| grep -w $Device | awk '{print $9}'
;;
await)
iostat -dxk 1 1| grep -w $Device | awk '{print $10}'
;;
svctm)
iostat -dxk 1 1| grep -w $Device | awk '{print $13}'
;;
util)
iostat -dxk 1 1| grep -w $Device | awk '{print $14}'
;;
*)
echo -e "\e[033mUsage: sh $0 [rrqm|rps|wps|rKBps|wKBps|avgqu-sz|avgrq-sz|await|svctm|util]\e[0m"
esac
eof
作者:SRE运维博客
博客地址:https://www.cnsre.cn
文章地址:https://www.cnsre.cn/posts/210425130327/
相关话题:https://www.cnsre.cn/tags/zabbix/