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}