zabbix 创建自动发现清单

​有时候我们需要自己创建自动发现清单,来给自己省事,但是在网上这样的高级应用配置却并没有; 自己经过几天的摸索过后才配置好的,这里要注意的有几个点, 1、注意输出给zabbix的东西要是一个json串, 2、可能在自动发现的时候时间可能会长一些,我之前明明写好了,但是却没有结果一直以为自己做的失败了,结果等到第二天再来看,却是没问题了! 一、配置zabbix自动发现Json串: 1、编写脚本 自动发现规则的 健值 会拿到一个一组数或者一个json串如下所示 root@redBase[23:38:37]:/data/zabbix/zabbix5/etc $ df -h |awk 'NR>2{printf $NF" "}END{printf"\n"}' /dev /dev/shm /run /sys/fs/cgroup /os /boot /run/user/0 2、转化传入输入为Json串 如果脚本传入的数据直接为Json串则这里可不用转化直接使用 在自动发现规则中配置“进程 ---> 预定步骤 ----> JavaScript”如下: 这里传入一个json串,zabbix应该是会把字典中的值,逐个的传入《监控项原型》中, 当然,如果你不想做处理,你也可以直接上传和第三步结果一样的Json串也行 return JSON.stringify(value.split(" ").map(function (name) { return ({"{#FSNAME}": name}); })); 3、测试结果 [{"{#FSNAME}":"/dev"},{"{#FSNAME}":"/dev/shm"},{"{#FSNAME}":"/run"},{"{#FSNAME}":"/sys/fs/cgroup"},{"{#FSNAME}":"/os"},{"{#FSNAME}":"/boot"},{"{#FSNAME}":"/run/user/0"}] 4、创建监控原型 二、创建自动发现实例 例子以自动发现挂载目录为例子,其他的自动发现应该也是大同小异的 1、创建zabbix自定义监控项的脚本目录 mkdir -p /data/zabbix/zabbix/etc/agent_script/ cat > /data/zabbix/zabbix/etc/agent_script/check_disk.sh <1{print $NF}') # echo ${disk_name} #disk_list_json for disk_name in $disk_name_list do disk_list_json="${disk_list_json},{\"{#DISKNAME1}\":\"$disk_name\"}" done #echo {\"data\":\[${disk_list_json}\]}|sed 's/\[,{/\[{/' echo \[${disk_list_json}\]|sed 's/\[,{/\[{/' } check_disk_value(){ disk_value=$(df -h |awk -v diskName=${disk_name} '{if(diskName == $NF) print +$5}') echo ${disk_value} } $func_name EOF 2、开启zabbix agent的自定义监控文件 root@redBase[22:56:13]:/data/zabbix/zabbix/etc $ cat zabbix_agentd.conf ListenPort=10050 LogFileSize=0 Server=10.0.0.75 ServerActive=10.0.0.75:10051 Hostname=redBase1 RefreshActiveChecks=60 BufferSize=10000 MaxLinesPerSecond=200 Timeout=5 HostMetadataItem=system.uname PidFile=/data/zabbix/zabbix/pid/zabbix_agentd.pid LogFile=/data/zabbix/zabbix/logs/zabbix_agentd.log Include=/data/zabbix/zabbix/etc/zabbix_agentd.conf.d/*.conf 3、配置自定义监控文件 root@redBase[22:56:26]:/data/zabbix/zabbix/etc $ cat zabbix_agentd.conf.d/disk_check.conf UserParameter=check_disk.discovery[*],/data/zabbix/zabbix/etc/agent_script/check_disk.sh check_disk_name UserParameter=check_disk.value[*],/data/zabbix/zabbix/etc/agent_script/check_disk.sh check_disk_value "$1" 4、重启zabbix agent之后,测试自定义监控值 root@redBase[22:59:47]:/data/zabbix/zabbix/etc $ zabbix_get -s 10.0.0.75 -k check_disk.discovery [{"{#DISKNAME1}":"/"},{"{#DISKNAME1}":"/dev"},{"{#DISKNAME1}":"/dev/shm"},{"{#DISKNAME1}":"/run"},{"{#DISKNAME1}":"/sys/fs/cgroup"},{"{#DISKNAME1}":"/os"},{"{#DISKNAME1}":"/boot"},{"{#DISKNAME1}":"/run/user/0"}] root@redBase[22:59:57]:/data/zabbix/zabbix/etc $ zabbix_get -s 10.0.0.75 -k check_disk.value[/] 50 root@redBase[23:00:11]:/data/zabbix/zabbix/etc $ zabbix_get -s 10.0.0.75 -k check_disk.value[/dev] 0 root@redBase[23:00:15]:/data/zabbix/zabbix/etc $ zabbix_get -s 10.0.0.75 -k check_disk.value[/boot] 15 root@redBase[23:00:33]:/data/zabbix/zabbix/etc $ zabbix_get -s 10.0.0.75 -k check_disk.value[/os] 100 5、在zabbix server的web上配置自动发现监控项 5.1、创建监控模板 5.2、创建自动发现规则 5.3、测试结果 测试自动发现规则结果-从下图可以看出,我们在值的一栏拿到了结果,从结果就是我们从脚本里面输出的值 [{"{#DISKNAME1}":"/"},{"{#DISKNAME1}":"/dev"},{"{#DISKNAME1}":"/dev/shm"},{"{#DISKNAME1}":"/run"},{"{#DISKNAME1}":"/sys/fs/cgroup"},{"{#DISKNAME1}":"/os"},{"{#DISKNAME1}":"/boot"},{"{#DISKNAME1}":"/run/user/0"}] 5.4、添加监控原型 填写我们上面传入的变量名["{#DISKNAME1}"] ​注:这里面也有测试的功能,但是无法使用,应该是zabbix的小BUG,无法从发现原型里面传入值进来;     因此这里就不做测试了,测试了也是报错,但是测试报错了,不意味着你就做错了,(我就是在这里栽了跟斗);     测试报错了,我一直以为自己做错了,然后就放弃了,但是最后还好自己有做了一次,才发现自己没有做错! 5.5、把模板添加到主机中去测试结果 添加到了主机中,不断的刷新去拿结果就能拿到值了 5.6、在最新数据里面查看获取到的值 这里在拿到值了以后,在做别的什么操作就属于基础操作,就不用多说了!

尚美源码坑位教程提供精美的网站源码教程,小程序、公众号、H5、APP、游戏、直播、支付、区块链、商城、影音、小说等源码信息大全。
尚美源码教程库 » zabbix 创建自动发现清单
赞助VIP 享更多特权,立即登录下载海量资源
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡