第一次接触 zabbix 的时候应该是在 2017 年吧,我记得当时的版本应该是 3.0 的样子,过去了这么久,已经完全忘了怎么玩了,只好从新搭了一个 zabbix 7.0 的环境,重新学一下吧

zabbix 的安装过程我就不赘述了,官方文档已经非常傻瓜化了,大家按照官方文档下载安装即可

zabbix 官方安装文档:https://www.zabbix.com/cn/download

# 自动注册

登陆 zabbix 管理页面,依次点击 Alerts --> Actions --> Autoregistration actions --> Create action ,创建一个 Windows Serveraction

upload successful

填写 Name ,添加 Conditions 标签,类型选择 Host metadata , 操作选择 matchesValue 填写 Windows Server

upload successful

Operations 可以添加多个操作吗,例如添加主机、添加主机组和链接模板等

upload successful

再创建一个 Linuxaction ,填写 Name ,添加 Conditions 标签,操作选择 matchesValue 填写 Linux ,这里就不细分发行版了

upload successful

添加 Operations 动作

upload successful

这样我们就创建一个 windows serverlinux 的自动注册动作,这里客户端是根据 HOSTMETADATA 的值自动匹配对应的 action ,该值可以从后面的 agent 部署脚本更改

# Windows agent2

测试环境,脚本写的比较随意

l
# zabbix agent2 官方下载地址
$Url="https://cdn.zabbix.com/zabbix/binaries/stable/7.0/7.0.12/zabbix_agent2-7.0.12-windows-amd64-openssl.msi"
$OutFile="c:\zabbix_agent2.msi"
Start-BitsTransfer -Source $Url -Destination $OutFile
# 配置 zabbix server 地址、客户端 HOSTMETADATA 信息和客户端主机名
$ZabbixServer = "192.168.80.142"
$OSName = (systeminfo | Select-String 'OS 名称:\s*(.+)').Matches.Groups[1].Value.Trim()
$Hostname = $env:COMPUTERNAME
# 安装 zabbix agent2
Start-Process msiexec -Wait -ArgumentList @(
    "/i",
    "`"$OutFile`"",
    "/qn",
    "HOSTNAME=`"$Hostname`"",
    "SERVER=`"$ZabbixServer`"",
    "SERVERACTIVE=`"$ZabbixServer`"",
    "HOSTMETADATA=`"$OSName`""   
)
# 移除安装包
Remove-Item -Path $OutFile -Force

运行脚本后,客户端会自动部署 abbix agent2 代理程序,部署完后可以便可以在服务器上看到该主机的注册信息

upload successful

# Linux agent2

linux 的话,这里以 debian12 为例,后续有需要再写一个通用脚本吧

l
#!/bin/sh
# 检查是否以 root 权限运行
if [ "$(id -u)" -ne 0 ]; then
    echo "此脚本必须以root权限运行!" >&2
    exit 1
fi
# 定义变量
server="192.168.80.142"
hostname="$(hostname)"
osinfo="$(uname -o)"
# 下载 Zabbix 仓库包
echo "正在下载Zabbix安装包..."
if command -v wget >/dev/null 2>&1; then
    wget -q -O /tmp/zabbix_repo.deb https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest_7.0+debian12_all.deb
elif command -v curl >/dev/null 2>&1; then
    curl -s -o /tmp/zabbix_repo.deb https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest_7.0+debian12_all.deb
else
    echo "错误:未找到wget或curl,无法下载安装包!" >&2
    exit 1
fi
# 检查下载是否成功
if [ ! -f /tmp/zabbix_repo.deb ]; then
    echo "下载失败!请检查网络连接或地址是否正确。" >&2
    exit 1
fi
# 安装仓库包
echo "安装Zabbix仓库..."
dpkg -i /tmp/zabbix_repo.deb >/dev/null 2>&1
# 更新包列表并安装 Zabbix Agent 2
echo "更新包列表并安装Zabbix Agent 2..."
apt-get update >/dev/null 2>&1
apt-get install -y zabbix-agent2 >/dev/null 2>&1
# 检查安装是否成功
if ! systemctl is-active --quiet zabbix-agent2; then
    echo "Zabbix Agent 2安装失败!" >&2
    exit 1
fi
# 备份原始配置文件
echo "备份原始配置文件..."
cp /etc/zabbix/zabbix_agent2.conf /etc/zabbix/zabbix_agent2.conf.bak
# 修改配置文件
echo "更新配置文件..."
sed -i "s/^Server=.*/Server=${server}/" /etc/zabbix/zabbix_agent2.conf
sed -i "s/^ServerActive=.*/ServerActive=${server}/" /etc/zabbix/zabbix_agent2.conf
sed -i "s/^Hostname=.*/Hostname=${hostname}/" /etc/zabbix/zabbix_agent2.conf
echo "HostMetadata=${osinfo}" >> /etc/zabbix/zabbix_agent2.conf
# 创建日志目录并设置权限
mkdir -p /var/log/zabbix
chown zabbix:zabbix /var/log/zabbix
# 重启服务
echo "重启Zabbix Agent 2服务..."
systemctl restart zabbix-agent2
# 设置开机自启
systemctl enable zabbix-agent2 >/dev/null 2>&1
# 清理临时文件
rm -f /tmp/zabbix_repo.deb
exit 0

执行脚本后便可以在服务器上看到该主机的注册信息

upload successful

# 服务监控