Instalação do Zabbix e template no Proxmox
apt update
apt install zfsutils-linux zabbix-agent -y
cd /etc/zabbix/zabbix_agentd.conf.d/
wget https://raw.githubusercontent.com/euerickandrade/monitorando-zfs/refs/heads/main/monitoramento-zfs.conf
chown root:zabbix monitoramento-zfs.conf && chmod 0440 monitoramento-zfs.conf
Edite o arquivo abaixo acrescentando o IP do Zabbix para envio das informações
Nas linhas Server=IP do ZABBIX e ServerActive=IP do ZABBIX
nano /etc/zabbix/zabbix_agentd.conf
systemctl restart zabbix-agent
#Descobrir o uso de Memória RAM feito pelo ARC do ZFS
UserParameter=system.zfs.mempct,awk '/^size/ { printf "%.2f\n", $3 / 1048576 }' < /proc/spl/kstat/zfs/arcstats
#Contar o Total de pools que existem no servidor
UserParameter=zfs-userparams.pool.totaldepools,/usr/sbin/zpool list -H | /usr/bin/wc -l
#Ver o Nome e Status do Disco
UserParameter=zfs-userparams.pool.disco.unavail,/usr/sbin/zpool status -v | grep -iE 'NAME|unavail'
UserParameter=zfs-userparams.pool.disco.online,/usr/sbin/zpool status -v | grep -iE 'NAME|online'
#Ver se existe alguma Pool OFFLINE, se o valor for maior que zero você receberá um alerta
UserParameter=zfs-userparams.pool.offline,/usr/sbin/zpool list -H -o health | grep -ci offline
#Ver se existe alguma Pool DEGRADADO, se o valor for maior que zero você receberá um alerta
UserParameter=zfs-userparams.pool.degradado,/usr/sbin/zpool list -H -o health | grep -ci degraded
#Ver se existe alguma Pool INDISPONÍVEL, se o valor for maior que zero você receberá um alerta
UserParameter=zfs-userparams.pool.indisponivel,/usr/sbin/zpool list -H -o health | grep -ci unavail
#Ver se existe alguma Pool FALHOU, se o valor for maior que zero você receberá um alerta
UserParameter=zfs-userparams.pool.falhou,/usr/sbin/zpool list -H -o health | grep -ci faulted
#Ver se existe alguma Pool REMOVIDA, se o valor for maior que zero você receberá um alerta
UserParameter=zfs-userparams.pool.removido,/usr/sbin/zpool list -H -o health | grep -ci removed
#Ver se existe alguma Pool SUSPENSA, se o valor for maior que zero você receberá um alerta
UserParameter=zfs-userparams.pool.suspenso,/usr/sbin/zpool list -H -o health | grep -ci suspended
#Exibe a Pool que estiver com >90% de uso
#Listado por Nome
UserParameter=zfs-userparams.pool.90deuso-nome,/usr/sbin/zpool list -H -o name,capacity | awk '{gsub(/%/, "", $2); if ($2+0 > 90) print $1}'
#Listado por quantidade
UserParameter=zfs-userparams.pool.90deuso-quant,/usr/sbin/zpool list -H -o name,capacity | awk '{gsub(/%/, "", $2); if ($2+0 > 90) print $1}' | wc -l
#Veja o total de Leitura/Escrita das Operações e Largura de Banda da Leitura/Escrita de cada Pool. Substitua o nome da Pool no campo "minhapool"
# Para Read Ops
UserParameter=zfs-userparams.pool.readops,/usr/sbin/zpool iostat -H 1 1 | awk '{if ($1 == "rpool" && $1 != "-" && NF > 5) print "Pool:", $1, "| Read Ops:", $4}'
# Para Write Ops
UserParameter=zfs-userparams.pool.writeops,/usr/sbin/zpool iostat -H 1 1 | awk '{if ($1 == "rpool" && $1 != "-" && NF > 5) print "Pool:", $1, "| Write Ops:", $5}'
# Para Read BW
UserParameter=zfs-userparams.pool.readbw,/usr/sbin/zpool iostat -H 1 1 | awk '{if ($1 == "rpool" && $1 != "-" && NF > 5) print "Pool:", $1, "| Read BW:", $6}'
# Para Write BW
UserParameter=zfs-userparams.pool.writebw,/usr/sbin/zpool iostat -H 1 1 | awk '{if ($1 == "rpool" && $1 != "-" && NF > 5) print "Pool:", $1, "| Write BW:", $7}'