简单的安装就不做描述了,这里主要是实现自发现程序并进行监控,程序放置在同一目录下,文件名称就是进程名,通过自发现规则来自动识别添加。
第一步是编写批处理脚本
@echo off & setlocal EnableDelayedExpansion
::获取脚本后接的参数
set type=%1
::参数对比的值
set ifnameone=zcell
set ifnametwo=status
set file=C:\zcell
set writefile=C:\zabbix_agents\script\zcellpid.txt
set /a b=0
set /a c=0
::获取指定目录下的文件夹数量
for /f "delims=" %%a in ('dir /b %file%') do set/a b+=1
::返回json格式的统计数据
if %type% == %ifnameone% (
echo {
echo "data":[
for /f "delims=" %%i in ('dir /b %file%') do (
set /a c+=1
if %b% == !c! (
echo {"{#ZCELL}":"%%i"}
)else echo {"{#ZCELL}":"%%i"},
)
echo ]
echo }
)
::发送整理好的数据
if %type% == %ifnametwo% (
for /f "delims=" %%i in ('dir /b %file%') do (
for /f "usebackq" %%i in (`"tasklist | find /C "%%i""`) do set status=%%i
echo - zcellname.pid[%%i] !status!>> %writefile%
)
C:\zabbix_agents\bin\win64\zabbix_sender.exe -z server端IP -s "zabbix页面中配置的主机名" -i %writefile% > nul
DEL %writefile%
echo 0
)
第二步添加zabbix配置文件userparameter_pid.conf(注意如果脚本执行时间较长需要修改配置文件的timeout)
UserParameter=zcellname.discovery[*],C:\zabbix_agents\script\autoPID.cmd zcell #json数据返回
UserParameter=zcellname.pid[*],C:\zabbix_agents\script\autoPID.cmd status $1 #触发主动发送的行为
第三步配置模板
监控项(主要作用就是来触发批处理进行主动发送)
注意信息类型要字符型
自发现规则
全局配置
监控项原型
主要注意的是两点:
一是类型必须是采%器(敏感词,看图)
二是键值【】中包含的是之前生成的json格式中的key
第四步就是重启agentd端并将模板绑定到指定主机上
最后可以通过
/usr/local/zabbix/bin/zabbix_get -s "agentd端IP" -k zcellname.discovery
/usr/local/zabbix/bin/zabbix_get -s "agentd端IP" -k zcellname.pid
来进行测试