第一次接触 zabbix
的时候应该是在 2017
年吧,我记得当时的版本应该是 3.0
的样子,过去了这么久,已经完全忘了怎么玩了,只好从新搭了一个 zabbix 7.0
的环境,重新学一下吧
zabbix
的安装过程我就不赘述了,官方文档已经非常傻瓜化了,大家按照官方文档下载安装即可
zabbix
官方安装文档:https://www.zabbix.com/cn/download
# 自动注册
登陆 zabbix
管理页面,依次点击 Alerts --> Actions --> Autoregistration actions --> Create action
,创建一个 Windows Server
的 action
填写 Name
,添加 Conditions
标签,类型选择 Host metadata
, 操作选择 matches
, Value
填写 Windows Server
Operations
可以添加多个操作吗,例如添加主机、添加主机组和链接模板等
再创建一个 Linux
的 action
,填写 Name
,添加 Conditions
标签,操作选择 matches
, Value
填写 Linux
,这里就不细分发行版了
添加 Operations
动作
这样我们就创建一个 windows server
和 linux
的自动注册动作,这里客户端是根据 HOSTMETADATA
的值自动匹配对应的 action
,该值可以从后面的 agent
部署脚本更改
# Windows agent2
测试环境,脚本写的比较随意
# 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
代理程序,部署完后可以便可以在服务器上看到该主机的注册信息
# Linux agent2
linux
的话,这里以 debian12
为例,后续有需要再写一个通用脚本吧
#!/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 |
执行脚本后便可以在服务器上看到该主机的注册信息