quinta-feira, 27 de fevereiro de 2014

Monitorar UPS Nobreak APC com Nagios

Faz tempo que não posto nada, vou falar sobre algo interessante que é monitorar UPS da linha APC com o Nagios, o modelo que estou falando é o SUA 3000 XL, mas pode ser monitorado por qualquer série SUA da APC :


Para fazer esse monitoramento é necessário comprar uma placa de rede, custa em torno de R$ 300,00 (http://goo.gl/Y22hjn)
 
Bem vamos ao que interessa vamos entrar no usr/local/nagios/etc/objects/commands.cfg e colocar o código descrito abaixo:
 
 
 
# 'snmp_ups_capacity' command definition
define command{
command_name snmp_ups_capacity
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -C $ARG1$ -o .1.3.6.1.4.1.318.1.1.1.2.2.1.0 -l '\Battery Charge\' -u '\%\'
}
# 'snmp_ups_current' command definition
define command{
command_name snmp_ups_current
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -C $ARG1$ -o .1.3.6.1.4.1.318.1.1.1.4.2.4.0 -w 30 -c 50 -l '\Output Current\' -u '\Amperes\'
}
 
 
 
# 'snmp_ups_frequency_in' command definition Frequência em Hertz de Entrada
define command{
command_name snmp_ups_frequency_in
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -C $ARG1$ -o .1.3.6.1.4.1.318.1.1.1.3.2.4.0 -l '\Input Freq\' -u '\Hertz\'
}
# 'snmp_ups_frequency_out' command definition  Frequência em Hertz de Saida
define command{
command_name snmp_ups_frequency_out
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -C $ARG1$ -o .1.3.6.1.4.1.318.1.1.1.4.2.2.0 -l '\Output Freq\' -u '\Hertz\'
}
# 'snmp_ups_lasttest_date' command definition
define command{
command_name snmp_ups_lasttest_date
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -C $ARG1$ -o .1.3.6.1.4.1.318.1.1.1.7.2.4.0 -l '\Last Test Date\'
}
# 'snmp_ups_lasttest_result' command definition SNMP
define command{
command_name snmp_ups_lasttest_result
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -C $ARG1$ -o .1.3.6.1.4.1.318.1.1.1.7.2.3.0 -c 2 -l '\1=Pass 2=Fail\'
}
# 'snmp_ups_load' command definition Carga do Nobreak
define command{
command_name snmp_ups_load 
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -C $ARG1$ -o .1.3.6.1.4.1.318.1.1.1.4.2.3.0 -w 60 -c 90 -l '\Current Load\' -u '\%\'
}
# 'snmp_ups_runtime' command definition Tempo de runtime caso caia a energia
define command{
command_name snmp_ups_runtime
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -C $ARG1$ -o .1.3.6.1.4.1.318.1.1.1.2.2.3.0 '\RunTime\'
}
# 'snmp_ups_stat' command definition  Status do UPS
define command{
command_name snmp_ups_stat
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -C $ARG1$ -o .1.3.6.1.4.1.318.1.1.1.2.1.1.0 -w 3 -c 4 -l '\Main UPS Status\'
}
# 'snmp_ups_temp' command definition - Temperatura do UPS
define command{
command_name snmp_ups_temp
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -C $ARG1$ -o .1.3.6.1.4.1.318.1.1.1.2.2.2.0 -w 40 -c 45 -l '\Internal Temp\' -u '\Celsius\'
}
# 'snmp_ups_voltage_in' command definition - Voltagem de Entrada
define command{
command_name snmp_ups_voltage_in
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -C $ARG1$ -o .1.3.6.1.4.1.318.1.1.1.3.2.1.0 -l '\Output Voltage\' -u '\Volts\'
}
# 'snmp_ups_voltage_out' command definition - Voltagem de Saída
define command{
command_name snmp_ups_voltage_out
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -C $ARG1$ -o .1.3.6.1.4.1.318.1.1.1.4.2.1.0 -l '\Output Voltage\' -u '\Volts\'
}


Após ter atualizado o commands.cfg, é necessário criar um outro arquivo apc.cfg, vou disponibilizar ele abaixo, basta apenas configurar o nome dos hosts:
###############################################################################
# APCUPS.CFG - CONFIG FILE FOR MONITORING APC UPS
#
#
#
###############################################################################
# HOST DEFINITIONS
###############################################################################
# Define the UPS that we'll be monitoring
define host{
 use    generic-service
 host_name   NOBREAK
 alias    My APC 2200 Main Server
 notification_period  24x7
 check_period   24x7
 contacts   nagiosadmin
 address    192.168.1.1
 }
###############################################################################
# HOST GROUP DEFINITIONS
###############################################################################
define hostgroup{
 hostgroup_name   apcups
 alias    apcups
 members    NOBREAK
 }
###############################################################################
# SERVICE DEFINITIONS
###############################################################################
# Ping UPS
define service{
 use    local-service
 host_name   NOBREAK
 service_description            PING
 check_command   check_ping!100.0,20%!500.0,60%
 }
define service{
 use    local-service
 host_name   NOBREAK
 service_description            UPS Capacity
 check_command   snmp_ups_capacity! -H $HOSTADDRESS$ -C public
 }
define service{
 use    local-service
 host_name   NOBREAK
 service_description            UPS Current
 check_command   snmp_ups_current! -H $HOSTADDRESS$ -C public
 }
define service{
 use    local-service
 host_name   NOBREAK
 service_description            UPS Freq In
 check_command   snmp_ups_frequency_in! -H $HOSTADDRESS$ -C public
 }
define service{
 use    local-service
 host_name   NOBREAK
 service_description            UPS Freq Out
 check_command   snmp_ups_frequency_out! -H $HOSTADDRESS$ -C public
 }
define service{
 use    local-service
 host_name   NOBREAK
 service_description            UPS Load
 check_command   snmp_ups_load! -H $HOSTADDRESS$ -C public
 }
#define service{
# use    local-service
# host_name   NOBREAK
# service_description            UPS Test Date
# check_command   snmp_ups_lasttest_date! -H $HOSTADDRESS$ -C public
# }
#define service{
# use    local-service
# host_name   NOBREAK
# service_description            UPS Test Result
# check_command   snmp_ups_lasttest_result! -H $HOSTADDRESS$ -C public
# }
define service{
 use    local-service
 host_name   NOBREAK
 service_description            UPS Status
 check_command   snmp_ups_stat! -H $HOSTADDRESS$ -C public
 }
define service{
 use    local-service
 host_name   NOBREAK
 service_description            UPS RunTime
 check_command   snmp_ups_runtime! -H $HOSTADDRESS$ -C public
 }
define service{
 use    local-service
 host_name   NOBREAK
 service_description            UPS Temp
 check_command   snmp_ups_temp! -H $HOSTADDRESS$ -C public
 }
define service{
 use    local-service
 host_name   NOBREAK
 service_description            UPS Volts In
 check_command   snmp_ups_voltage_in! -H $HOSTADDRESS$ -C public
 }
define service{
 use    local-service
 host_name   NOBREAK
 service_description            UPS Volts Out
 check_command   snmp_ups_voltage_out! -H $HOSTADDRESS$ -C public
 }

#------------------------------------------------------------------------------
 

Não esquecer de entrar no arquivo nagios.cfg e colocar a linha abaixo:
 
# Definitions for monitoring No Break
cfg_file=/usr/local/nagios/etc/objects/apc.cfg


Pronto agora é só reiniciar o nagios: /etc/init.d/nagios restart

Obrigado por ler esse post, não fui eu que desenvolvi esse script o autor foi

Jeff Manross, deixo os créditos a ele.


 

Um comentário: