在Zabbix中,内置宏是一种特殊的变量,通常用在 Trigger 名称和表达式中,引用有关监控对象的信息。
{HOST.NAME} 主机名
{HOST.IP} 主机 IP 地址
{TRIGGER.DESCRIPTION} 触发器描述
{TRIGGER.NAME} 触发器名
{TRIGGER.EVENTS.ACK} 触发器事件是否确认
Zabbix的自动发现(Zabbix Auto Discovery)是一种功能,它能够自动识别并监控网络、服务器、虚拟机、容器等资源,无需手动配置每个监控对象。
① 在“配置”菜单栏里,选择“自动发现”,点击“创建发现规则”
② 创建自动发现动作与操作细节:
自动发现状态 等于 上:检测正常运行的主机
③ 在“检测中” → “自动发现”可以查看已发现的设备:
主动模式:配置ServerActive ip
vim /etc/zabbix/zabbix_agentd.conf
systemctl restart zabbix-agent
选择“自动注册动作”,配置动作与操作细节
在“配置” → “主机”中查看注册的设备信息
CLOSED (0) | 初始状态,表示TCP连接未建立 |
LISTEN (1) | 表示TCP服务器正在等待来自客户端的连接请求,处于监听状态 |
SYN_SENT (2) | 表示TCP客户端已发送连接请求(SYN),等待确认(ACK) |
SYN_RECEIVED (3) | 表示TCP服务器已收到客户端的连接请求(SYN),并已发送确认(ACK) |
ESTABLISHED (4) | 表示TCP连接已成功建立,数据可以在客户端和服务器之间双向传输 |
FIN_WAIT_1 (5) | 表示TCP客户端已发送连接终止请求(FIN),等待服务器确认 |
CLOSE_WAIT (6) | 表示TCP服务器已收到客户端的连接终止请求(FIN),等待客户端关闭连接 |
FIN_WAIT_2 (7) | 表示TCP客户端已收到来自服务器的连接终止请求(FIN),等待服务器的确认 |
LAST_ACK (8) | 表示TCP服务器已发送确认(ACK)并等待客户端的确认,即将关闭连接 |
TIME_WAIT (9) | 表示TCP连接已经关闭,在等待可能延迟的数据包 |
vim /etc/zabbix/zabbix_agentd.d/tcp_status.conf
UserParameter=tcp.status.listen,ss -an |grep :80 | grep -i 'LISTEN' |wc -l
UserParameter=tcp.status.timewait,ss -an |grep :80 | grep -i 'TIME-WAIT' |wc -l
UserParameter=tcp.status.established,ss -an |grep :80 | grep -i 'ESTAB' |wc -l
UserParameter=tcp.status.syn_recv,ss -an |grep :80 | grep -i 'SYN_RECV' |wc -l
UserParameter=tcp.status.syn_sent,ss -an |grep :80 | grep -i 'SYN_SENT' |wc -l
UserParameter=tcp.status.close,ss -an |grep :80 | grep -i 'CLOSE' |wc -l
重启服务:systemctl restart zabbix-agent
zabbix_get -s 192.168.198.130 -k tcp.status.listen
zabbix 代理器:
vim /etc/zabbix/zabbix_agentd.d/tcp_status.conf
UserParameter=tcp.status[*],ss -an |grep :80 | grep -i "$1" |wc -l
● * :在这个命令中,* 作为 UserParameter 中的占位符,表示将接受用户传递的参数;
● $1:* 接收的参数将会传递给 $1(一次传参)
下载自定义 key 包,并授权:
cp tcp_connect_status/tcp_connect_status.sh /etc/zabbix/tcp_connect.status/
cp zabbix-example/tcp_connect_status/tcp_connect_status /etc/zabbix/zabbix_agentd.d/tcp_connect_status.conf
重启服务:systemctl restart zabbix-agent
① /etc/zabbix/zabbix_agentd.d/tcp_connect_status.conf
* 里的参数会传递给 $1(一次传参)
例如:用户输入命令 zabbix_get -s 192.168.198.130 -k tcp.status[LISTEN],* 的值就是 LISTEN,再传递给 $1,系统就会调用脚本
bash /etc/zabbix/tcp_connect.status/tcp_connect_status.sh LISTEN
② /etc/zabbix/tcp_connect.status/tcp_connect_status.sh
脚本里的 $1 匹配外部的参数(二次传参)
例如:系统调用了脚本
bash /etc/zabbix/tcp_connect.status/tcp_connect_status.sh LISTEN,脚本中就会调用 LISTEN() 函数,执行其对应的功能。
zabbix 服务器查看监控效果: