you have to create a user parameter, which starts a “disk-search”-script on the host. This script searches for the disks and outputs a list (in json notification).
#discovery-disks.sh
#!/bin/sh
disks=`ls -l /dev/*da* | awk '{print $NF}' | awk -F "/" '{print $NF}'`
first="1"
echo "{"
echo " \"data\":["
for disk in $disks
do
if [ "$first" -eq "0" ]
then
printf ",\n"
fi
first="0"
printf " {\"{#DEVICE}\":\"$disk\"}"
done
printf "\n ] \n}"
#zabbix_agentd.conf UserParameter = discovery.disks, discovery-disks.sh
Now restart the zabbix-agentd and test the script output interactively:
shell> zabbix_get -s 192.168.0.100 -k "discovery.disks"
{
"data":[
{"{#DEVICE}":"ada0"},
{"{#DEVICE}":"ada1"},
{"{#DEVICE}":"da0"},
{"{#DEVICE}":"da1"}
]
}
If everything is in order, you can now use this user-parameter (key=discovery.disks) in an discovery-rule in zabbix. The substitution name for the devices is “{#DEVICE}”