实践-监控系统连接数
创建TCP监控脚本:
mkdir scripts vim scripts/tcp_status.sh
#!/bin/bash
# Author:Chris __On 2018/12/16
# =====================Description=====================
# [Features]: This is for collect TCP status With Zabbix Agent.
# [Usage]: Put it in zabbix_agentd.conf.d.
# =====================================================
NET_STATUS () {
/usr/sbin/ss -ant | awk '{if (NR>2) s[$1]++} END {for(k in s) print k,s[k]}' | grep "$1" | awk '{print $2}'
}
case $1 in
synrecv)
NET_STATUS SYN-RECV
;;
estab)
NET_STATUS ESTAB
;;
finwait1)
NET_STATUS FIN-WAIT-1
;;
finwait2)
NET_STATUS FIN-WAIT-2
;;
timewait)
NET_STATUS TIME-WAIT
;;
lastack)
NET_STATUS LAST-ACK
;;
listen)
NET_STATUS LISTEN
;;
closed)
NET_STATUS CLOSED
;;
synsent)
NET_STATUS SYN_SENT
;;
closewait)
NET_STATUS CLOSE_WAIT
;;
closing)
NET_STATUS CLOSING
;;
*)
echo "useage: ./tcp_status.sh synrecv|estab|finwait1|finwait2|timewait|lastack|listen|closed|synsent|closewait|closing"
exit 1
;;
esac
chmod +x scripts/tcp_status.sh
创建Agent副配置文件,添加监控项:
vim etc/zabbix_agentd.conf.d/tcp-status-params.conf
UserParameter=tcp.status[*],/usr/local/zabbix/scripts/tcp_status.sh $1
systemctl restart zabbix-agentd
修改sudo权限:
vim /etc/sudoers
zabbix ALL=(ALL) NOPASSWD: /usr/local/zabbix/scripts/*.sh
服务端查看验证:
cd /usr/local/zabbix/bin ./zabbix_get -s 172.16.220.105 -k tcp.status[listen]
验证成功,创建监控项:
同样的操作添加其它几项:
创建图形,把状态添加进去:
过一会儿就可以在监控–图形中看到新建的信息了:
实践-监听端口自动发现
Zabbix自动发现,是根据Agent端返回值来确定的,返回值是json格式,如下:
cd /usr/local/zabbix/bin/ ./zabbix_get -s 172.16.220.105 -k net.if.discovery
故制作脚本,放于被监控端使其能够返回相同格式的值即可:
cd /usr/local/zabbix/scripts/ ./tcp_listen.sh discovery
注意:Zabbix中Json格式的键必需是全大写;使用Zabbix Agentd端自带的net.tcp.listen[]方法进行Listen端口状态监控有时会出现误报的情况,这跟直接读取文件有关,详见官网讨论。
修改zabbix-agentd配置,增加新的方法键值:
vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/tcp-listen.conf
UserParameter=net.tcp.listen.discovery,sudo /usr/local/zabbix/scripts/tcp_listen.sh discovery UserParameter=net.tcp.listen.grep[*],/usr/local/zabbix/scripts/tcp_listen.sh state $1
vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/tcp-status-params.conf
UserParameter=tcp.status[*],/usr/local/zabbix/scripts/tcp_status.sh $1 UserParameter=tcp.port.status[*],/usr/local/zabbix/scripts/tcp_port_status.sh $1 $2
systemctl restart zabbix-agentd
服务端测试:
./zabbix_get -s 172.16.220.105 -k net.tcp.listen.discovery
./zabbix_get -s 172.16.220.105 -k net.tcp.listen.grep[80]
网页端模板中添加自动发现:
创建完成后添加监控项原型:
添加触发器原型:
添加图形原型:
过段时间后,即可在主机中看到自动发现并添加的监控项和图形:
页码: 1 2















