实践-监控系统连接数
创建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