zabbix批量添加被监控windows客户端

由于公司大部分用的是windows服务器,大概有50多台。如果是一台一台添加的话很是麻烦,如果数量更多的话那工作量可想而知。所以网络管理员通常都是非常懒的。
环境:公司虽是域环境,但是除了几台域服务器成员服务器外其它大部分服务器都没有加入域。
处理思路:
  • 在zabbix server端创建自动注册
  • 在被监控端使用脚本安装zabbix agent
在zabbix server端创建自动注册
打开zabbix web控制台 添加一条如下的自动注册项。
zabbix批量添加被监控windows客户端
其中主机元数据需要在被监控端的conf配置文件中配置
zabbix批量添加被监控windows客户端
上图中2个选项只能启用其中一个,否则服务无法启动。这里启用HostMetadataItem=system.uname
system.uname会读取当前系统的主机名等系统信息,自动识别windows或linux,如果是windows就添加主机元数据似windows.
添加完主机元数据后,再添加相应的操作动作,即识别出windows后要执行的操作,如:加入主机组,链接模板等
zabbix批量添加被监控windows客户端
被控端安装脚本

@echo off
set OsVersion=0
set OsProcessor=0
echo 操作系统版本:
ver|findstr /r /i " [版本 5.1.*]" > NUL && goto WindowsXP
ver|findstr /r /i " [版本 6.1.*]" > NUL && goto Windows7
goto UnknownVersion
:WindowsXP
set OsVersion="WindowsXP"
goto GetProcessor
:Windows7
set OsVersion="Windows7"
goto GetProcessor
:UnknownVersion
set OsVersion="UnknownVersion"
goto GetProcessor
:GetProcessor
if /i "%processor_architecture%" equ "x86" (
set OsProcessor="X86"
) else (
if /i "%processor_architecture%" equ "amd64" (
set OsProcessor="X64"
) else (
set OsProcessor="UnknownProcessor"
)
)
echo "The system arch:" %OsProcessor%
cd c:\
if not exist c:\zabbix (
mkdir zabbix
xcopy \\tsclient\E\zabbix\conf\* c:\zabbix /e /r /c /y
if /i %OsProcessor% equ "x86" (
xcopy \\tsclient\e\zabbix\bin\win32\* c:\zabbix /e /r /y /c
)
if /i %OsProcessor% equ "x64" (
xcopy \\tsclient\E\zabbix\bin\win64\* c:\zabbix /e /r /y /c
)
)else (
echo "zabbix文件夹已存在"
)
dir c:\zabbix

rem 安装并注册zabbix服务
C:\zabbix\zabbix_agentd.exe -i -c C:\zabbix\zabbix_agentd.win.conf
C:\zabbix\zabbix_agentd.exe -s -c C:\zabbix\zabbix_agentd.win.conf
pause

这是一个半自动化的脚本,需要在每台终端上执行,由于我用的是remote desktop manager远程管理软件,打开远程会话后会自动映射本地盘符到目标器,所以在使用xcopy的时候很方便。大家根据自己的环境修改一下。

过一会在主机列表中就会自动添加进来
zabbix批量添加被监控windows客户端

上一篇:23_迭代器、模拟For循环


下一篇:深入理解自定义ListView