zabbix自定义TCP 11种状态监控模板
如果一直对多个主机同时增加监控项那么会非常麻烦,在实际生产中有很多时候我们都需要对一批机器同时增加多个相同的监控项,如果一个一个手动添加将会非常麻烦,因此就有了模板的诞生,我们只需要创建一个模板,让需要监控的主机链接模板即可
我们先手动实现监控项的大规模创建,然后再做成模板
我们以tcp11种状态为例进行添加监控项
tcp11中状态 ESTABLISHED SYN_SENT SYN_RECV FIN_WAIT1 FIN_WAIT2 TIME_WAIT CLOSE CLOSE_WAIT LAST_ACK LISTEN CLOSING
tcp三次握手、四次挥手概念图
三次握手:
首先客户端处于close关闭状态,与服务器发送第一个SYN请求后(这个SYN请求会带一个seq随机序列),客户端处于SYN_SENT状态,服务器在接收客户端发送的请求的同时一定要处于listen监听状态,否则无法收到请求包,收到请求包之后处于SYN_RCVD状态,这时也会给客户端发送一个SYN的请求包(也有随机序列),并发送一个ACK的确认包(这里ACK的随机序列值就是客户端发送SYN的序列号+1),客户端收到这两个包后会处于ESTABLISHED状态,这时也会给服务器端发送一个ACK的包(这里ACK的随机序列值就是服务端发送的SYN序列+1),服务端收到后状态处于ESTABLISHED
注意这个状态的请求数如果很多会遭到ddos攻击
四次挥手:
需要断开连接时时由服务端主动断开连接的,因为数据传输是服务端发起的,因此断开也是由服务器发起
首先服务端给客户端发送一个FIN的请求包(表示要求断开连接),发送完成后服务端处于FIN_WAIT_1状态(_1只是为了和第二次挥手做一个区分)客户端收到后会发送一个ACK的确认包,发送完成后,客户端处于CLOSE_WAIT状态,服务端收到后会处于FIN_WAIT_2状态,这时客户端也会发送一个FIN的请求包,请求断开连接,客户端发送完成后悔处于LAST_ACK状态,服务端收到FIN请求包后会处于TIME_WAIT状态,这时会有一个2MSL时间(MSL时间为60s,2MSL就是120s),2分钟后会给客户端发送一个ACK的确认包,表示确认断开连接,客户端收到后会处于close状态,四次挥手完成
1.手动创建TCP11种状态监控项
1.1.创建自定义监控项key
1.批量获取tcp11种状态取值命令 [root@zabbix-server ~]# stata=(ESTABLISHED SYN_SENT SYN_RECV FIN_WAIT1 FIN_WAIT2 TIME_WAIT TIME_WAITCLOSE CLOSE_WAIT LAST_ACK LISTEN CLOSING ) [root@zabbix-server ~]# for i in ${stata[@]}; do echo "netstat -anpt | grep -c "\'$i\'""; done netstat -anpt | grep -c 'ESTABLISHED' netstat -anpt | grep -c 'SYN_SENT' netstat -anpt | grep -c 'SYN_RECV' netstat -anpt | grep -c 'FIN_WAIT1' netstat -anpt | grep -c 'FIN_WAIT2' netstat -anpt | grep -c 'TIME_WAIT' netstat -anpt | grep -c 'TIME_WAITCLOSE' netstat -anpt | grep -c 'CLOSE_WAIT' netstat -anpt | grep -c 'LAST_ACK' netstat -anpt | grep -c 'LISTEN' netstat -anpt | grep -c 'CLOSING' 2.批量获得key值 [root@zabbix-server ~]# for i in ${stata[@]} > do > echo "UserParameter=$i,netstat -anpt | grep -c "\'$i\'"" > done UserParameter=ESTABLISHED,netstat -anpt | grep -c 'ESTABLISHED' UserParameter=SYN_SENT,netstat -anpt | grep -c 'SYN_SENT' UserParameter=SYN_RECV,netstat -anpt | grep -c 'SYN_RECV' UserParameter=FIN_WAIT1,netstat -anpt | grep -c 'FIN_WAIT1' UserParameter=FIN_WAIT2,netstat -anpt | grep -c 'FIN_WAIT2' UserParameter=TIME_WAIT,netstat -anpt | grep -c 'TIME_WAIT' UserParameter=TIME_WAITCLOSE,netstat -anpt | grep -c 'TIME_WAITCLOSE' UserParameter=CLOSE_WAIT,netstat -anpt | grep -c 'CLOSE_WAIT' UserParameter=LAST_ACK,netstat -anpt | grep -c 'LAST_ACK' UserParameter=LISTEN,netstat -anpt | grep -c 'LISTEN' UserParameter=CLOSING,netstat -anpt | grep -c 'CLOSING 3.在配置文件定义key值 [root@zabbix-server ~]# vim /etc/zabbix/zabbix_agentd.d/tcp.conf UserParameter=ESTABLISHED,netstat -anpt | grep -c 'ESTABLISHED' UserParameter=SYN_SENT,netstat -anpt | grep -c 'SYN_SENT' UserParameter=SYN_RECV,netstat -anpt | grep -c 'SYN_RECV' UserParameter=FIN_WAIT1,netstat -anpt | grep -c 'FIN_WAIT1' UserParameter=FIN_WAIT2,netstat -anpt | grep -c 'FIN_WAIT2' UserParameter=TIME_WAIT,netstat -anpt | grep -c 'TIME_WAIT' UserParameter=TIME_WAITCLOSE,netstat -anpt | grep -c 'TIME_WAITCLOSE' UserParameter=CLOSE_WAIT,netstat -anpt | grep -c 'CLOSE_WAIT' UserParameter=LAST_ACK,netstat -anpt | grep -c 'LAST_ACK' UserParameter=LISTEN,netstat -anpt | grep -c 'LISTEN' UserParameter=CLOSING,netstat -anpt | grep -c 'CLOSING 4.重启zabbix-agent [root@zabbix-server ~]# systemctl restart zabbix-agent
1.2.页面创建监控项
找到我们的zabbix server主机,因为自定义key都是在zabbix server上创建的所有监控项都是这么创建
点击创建监控项
名称:ESTABLISHED状态数量
键值:ESTABLISHED
应用集:tcp 11 state
所有监控项创建完成
2.将tcp11种状态做成模板并给主机群组所有主机应用
2.1.将监控项key配置文件推送至监控主机
[root@zabbix-server ~]# for i in 192.168.81.220 192.168.81.230 > do > scp /etc/zabbix/zabbix_agentd.d/tcp.conf root@$i:/etc/zabbix/zabbix_agentd.d/ > ssh root@$i "systemctl restart zabbix-agent" > done Warning: Permanently added '192.168.81.220' (ECDSA) to the list of known hosts. root@192.168.81.220's password: tcp.conf 100% 660 205.2KB/s 00:00 root@192.168.81.220's password: Warning: Permanently added '192.168.81.230' (ECDSA) to the list of known hosts. root@192.168.81.230's password: tcp.conf 100% 660 708.3KB/s 00:00 root@192.168.81.230's password:
2.2.建立模板
点击配置—模板—创建模板
2.3.添加监控项
点击创建监控项即可
2.4.将已有的监控项加入到模板中
找到刚刚创建的tcp11个监控项点击复制
目标类型选择模板—找到对应的模板
可以看到已经有监控项了
2.5.创建应用集
找到模板—应用集—创建应用集
2.6.将监控项添加到应用集中
全选监控项—批量更新
找到添加新的或者已经存在的应用进行选择应用集
2.7.创建图形
模板—图形—创建图形
填写图形信息
名称:tcp11中状态
监控项选择所有tcp监控项
点击添加
2.8.模板创建完成
2.9.给主机群组中的主机应用模板
192.168.81.220操作
点击配置—主机—模板—选择模板—添加
点击更新
192.168.81.230操作一致
2.10.监控项已经增加
2.11查看监控数据
监测—最新数据—选择主机—选择应用集
2.12查看图形
配置—图形—选择主机—选择图形
3.缩小不支持监控项等待时间
默认10m,我们修改为10s
管理—一般—选择其他—刷新不支持的项目
10s后不支持的会自动刷新