Zabbix – Template para no-break APC UPS

Inspirado por outra necessidade de um participante do fórum Zabbix-Brasil (Adjalma Santos) procedi com a criação de um script para monitoração de nobreaks APC-UPS através do comando apcaccess.

Este modelo de monitoração pode ser usado em no-break que não disponham de outras formas de monitoração (SNMP, Web, etc) ou em ambientes que ela não esteja plenamente funcional.

O membro do fórum que externou a necessidade de criação me encaminhou um spool da execução do comando num Back-UPS RS 1500 e com este arquivo trabalhei para a confecção deste script.

Olhando a página do MAN do comando observei que os retornos possíveis do apcaccess variam em função do modelo do nobreak. Então este primeiro post traz o template básico para nobreaks UPS, no próximo post iremos apresentar o template para o modelo específico (RS 1500).

Dependendo das permissões que o usuário zabbix possuir poderá ser necessária a configuração de sudo ou da crontab do root gerando o arquivo de transferencia de dados.

Caso se deseje que o usuário zabbix execute o comando diretamente à cada solicitação (acho que não seria a melhor opção de performance apesar de ser a opção com o menor delay de informações), a linha 20 do script zaups.sh deverá ser descomentada e ajustada conforme o seu ambiente.

A variável $DIRETORIO deverá ser configurada para um local onde possa ser armazenado o arquivo temporário com o spool do apcaccess.

Conforme o manual da ferramenta os parâmetros comuns à todos os modelos são:

APC - version, number of records and number of bytes following
DATE - Date and time of last update from UPS
HOSTNAME - hostname of computer running apcupsd
VERSION - apcupsd version number, date and operating system
UPSNAME - UPS name from configuration file (dumb) or EEPROM (smart)
CABLE - Cable type specified in the configuration file
MODEL - UPS model derived from UPS information
UPSMODE - Mode in which UPS is operating
STARTTIME - Date and time apcupsd was started
STATUS - UPS status (online, charging, on battery etc)
MASTERUPD - Last time the master sent an update to the slave
ENDAPC - Date and time of status information was written

O template construído possui coleta todos estes dados EXCETO o MASTERUPD que, pelo spool que me foi passado, não era um dos parâmetros disponíveis no modelo RS 1500. Nele colocamos uma trigger somente criticando o STATUS do nobreak.

Para que o Zabbix possa coletar os dados é necessário que o zabbix_agentd.conf do servidor que estiver conectado ao nobreak seja alterado e que seja adicionada uma linha similara à linha abaixo:

UserParameter=ups[*],/etc/zabbix/scripts/zaups.sh $1 $2 $3 $4 $5 $6

Os arquivos necessários para o funcionamento estão nos links abaixo:

  • {filelink=4}
  • {filelink=5}