zabbix系列-配置监控

实践-监控系统连接数

创建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]

网页端模板中添加自动发现:

创建完成后添加监控项原型:

添加触发器原型:

添加图形原型:

过段时间后,即可在主机中看到自动发现并添加的监控项和图形:

发表评论

error: Content is protected !!