Zabbix 6.0 实现自动化运维 自动注册

 

 

 

Zabbix 自动注册

Zabbix 自动注册介绍

当Agent众多时,将每台主机手动添加到Zabbix,还手动添加关联模板,无疑是低效的.
但是利用网络发现实现,Zabbix Server 资源消耗又比较严重
利用Zabbix的自动注册功能,实现添加主机的自动化,可以大幅减少运维的工作量,减少Zabbix Server 的资源消耗

此方式和自动发现不同,是由Active agent主动发起请求zabbix server将这些agent加到主机里。
注意: Agent 必须使用主动模式才支持自动注册
自动注册由于比自动发现效率更好,Zabbix Server资源消耗更少,更适合大规模及云环境IP地址不固定的
场景使用

 

在Zabbix agent 端的配置文件修改以下项目

Server=<Zabbix Server IP>
ServerActive=<Zabbix Server IP> #客户端主动模式是实现自动注册的前提条件
Hostname=<agent IP>
#HostnameItem=system.hostname    
HostMetadata==<key>           #非必须项,可以做为添加主机的验证标识和分类,或者实现加入主机的验证功能

 

案例: 实现 Linux 主机自动注册

修改 Zabbix Agent 的配置

 

rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-latest-6.0.el9.noarch.rpm

dnf clean all

dnf install zabbix-agent2 -y

dnf install zabbix-agent2-plugin-mongodb zabbix-agent2-plugin-mssql zabbix-agent2-plugin-postgresql -y

 

 

修改Zabbix Agent 配置文件为主动模式的 Zabbix Proxy

 vim /etc/zabbix/zabbix_agent2.conf 

grep '^[^#]' /etc/zabbix/zabbix_agent2.conf 

 

Server=192.168.3.60
ServerActive=192.168.3.60
Hostname=192.168.3.61 #指定主机名,要确保唯一,如果不指定,则Zabbix使用agent的系统主机名,Agent2不支持IP格式(否则服务无法启动),只能写主机名格式
HostMetadata=test

AllowKey=system.run[*]
Include=/etc/zabbix/zabbix_agent2.d/plugins.d/*.conf
UnsafeUserParameters=1

 

cat /etc/zabbix/zabbix_agent2.d/plugins.d/tcp.conf
UserParameter=tcp[*],/etc/zabbix/bin/tcp.sh $1

mkdir -p /etc/zabbix/bin

cat /etc/zabbix/bin/tcp.sh 
#!/bin/bash 
#scripts for tcp status 
function CLOSEWAIT { 
        CLOSEWAIT=`netstat -natl| awk 'NR>2{s[$NF]++} END {for(k in s) print k,s[k]}' | grep 'CLOSE-WAIT' | awk '{print $2}'`
        if [ "$CLOSEWAIT" = "" ];then
                echo "0"
        else
                echo "$CLOSEWAIT"
        fi
}
function SYNRECV { 
        SYNRECV=`netstat -natl | awk 'NR>2{s[$NF]++} END {for(k in s) print k,s[k]}' | grep 'SYN-RECV' | awk '{print $2}'`
        if [ "$SYNRECV" = "" ];then
                echo "0"
        else
                echo "$SYNRECV"
        fi
} 
function ESTABLISHED { 
        ESTAB=`netstat -natl | awk 'NR>2{s[$NF]++} END {for(k in s) print k,s[k]}' | grep 'ESTABLISHED' | awk '{print $2}'`
        if [ "$ESTAB" = "" ];then
                echo "0"
        else
                echo "$ESTAB"
        fi
} 
function FINWAIT1 { 
        FINWAIT1=`netstat -natl | awk 'NR>2{s[$NF]++} END {for(k in s) print k,s[k]}' | grep 'FIN-WAIT-1' | awk '{print $2}'`
        if [ "$FINWAIT1" = "" ];then
                echo "0"
        else
                echo "$FINWAIT1"
        fi
} 
function FINWAIT2 { 
        FINWAIT2=`netstat -natl | awk 'NR>2{s[$NF]++} END {for(k in s) print k,s[k]}' | grep 'FIN-WAIT-2' | awk '{print $2}'`
        if [ "$FINWAIT2" = "" ];then
                echo "0"
        else
                echo "$FINWAIT2"
        fi
} 
function TIMEWAIT { 
        netstat -natl | awk 'NR>2{s[$NF]++} END {for(k in s) print k,s[k]}' | grep 'TIME_WAIT' | awk '{print $2}'
} 
function LASTACK { 
        LASTACK=`netstat -natl | awk 'NR>2{s[$NF]++} END {for(k in s) print s[k],k}' | grep 'LAST-ACK' | awk '{print $2}'`
        if [ "$LASTACK" = "" ];then
                echo "0"
        else
                echo "$LASTACK"
        fi
} 
function LISTEN { 
        netstat -natl | awk 'NR>2{s[$NF]++} END {for(k in s) print k,s[k]}' | grep 'LISTEN' | awk '{print $2}'
} 
$1

 

 chmod +x tcp.sh 

 

systemctl restart zabbix-agent2

systemctl enable zabbix-agent2

 

在 Zabbix Server 配置动作
在配置---动作---选择自动注册动作
6.X 版本

 

c03655ffd7ae80297ee92aad7aef19c5

 

创建新动作

使用元数据添加

dfc8f137325045e7cdccbd76887349e3

 

指定操作

指定操作,添加主机,添加主机到主机群组,关系相关模板 自定义模板

 

3fd4bf6e769e0553452f3316c83c2f59

 

 

dcf03bf4a37678fef0b8f8c151950b54

 

79e8d753fd2eb89f0512848ed1128937

 

 

验证结果
稍过一会儿,再观察可以看到下面显示添加主机成功

 

ccaa8e6fb08a8567d7244e79bd01bbf3

 

27ca37f5d8996433f5571dee1f24ec28

 

posted @ 2026-11-07 01:43  minger_lcm  阅读(3)  评论(0)    收藏  举报