Recebendo alertas de falhas de servidores HP ProLiant rodando Ubuntu 
Autor: Marcelo Terres | Publicado: 2014-01-24T13:10:00-02:00





Apesar de não suportar o sistema operacional Ubuntu, muita gente não sabe, mas a HP disponibiliza suas ferramentas de gerenciamento de servidores ProLiant no formato .deb, tendo inclusive um repositório disponível que pode ser facilmente configurado em seu servidor.



As ferramentas disponíveis permitem verificar tempetura, velocidade dos fans, estado do disco e da controladora RAID, configurar o iLO entre outras coisas.



Mas como faço para instalar as ferramentas?



Para começar, adicione o seguinte repositório no seu servidor:



deb http://downloads.linux.hp.com/SDR/downloads/ProLiantSupportPack/ lucid current/non-free



Mesmo o repositório sendo para o Ubuntu 10.04, as ferramentas funcionam perfeitamente no 12.04 &nbsp;(nas versões mais novas ainda não pude testar).






Após rodar um apt-get update, ficarão disponíveis os seguintes pacotes:&nbsp;



cpqacuxe: utilitário web de configuração dos arrays de disco (necessita controladora RAID, e não, ele não funciona com o "RAID" onboard que depende de drivers que normalmente está disponível nos servidores ML110).
hp-health: contém as ferramentas para monitoramento da "saúde" do sistema.
hpsmh: provê a página web de gerenciamento do sistema onde é possível visualizar os alarmes e a "saúde" do servidor.
hp-smh-templates: contém templates para a página web de gerenciamento do sistema.
hp-snmp-agents: contém o servidor SNMP e agentes de storage e de rede para todos os servidores ProLiant.
hpacucli: é a versão de linha de comando do cpqacuxe.
hponcfg: contém as ferramentas de linha de comando para configurar o iLO.



E depois de instaladas, o que eu posso fazer?



Dos pacotes acima, eu pude testar apenas o hp-health, hpacucli e o hpsmh, e somente as seguintes ferramentas: hplog, hpacucli e a interface web do hpshm.



hplog



O hplog, entre outras coisas, possibilita a visualização do status atual da temperatura, dos fans e da energia, permitindo que tais dados sejam utilizados em um script para geração de um alerta por e-mail, por exemplo, que é o objetivo principal deste post.


Alguns exemplos:

Temperatura atual


root@lnxsrv:~# hplog -t
ID &nbsp; &nbsp; TYPE &nbsp; &nbsp; &nbsp; &nbsp;LOCATION &nbsp; &nbsp; &nbsp;STATUS &nbsp; &nbsp;CURRENT &nbsp;THRESHOLD
&nbsp;1 &nbsp;Basic Sensor Ambient &nbsp; &nbsp; &nbsp; &nbsp; Normal &nbsp; &nbsp;66F/ 19C 104F/ 40C
&nbsp;2 &nbsp;Basic Sensor Memory Board &nbsp; &nbsp;Normal &nbsp; 132F/ 56C 230F/110C
&nbsp;3 &nbsp;Basic Sensor CPU (1) &nbsp; &nbsp; &nbsp; &nbsp; Normal &nbsp; &nbsp;86F/ 30C 212F/100C
&nbsp;4 &nbsp;Basic Sensor CPU (1) &nbsp; &nbsp; &nbsp; &nbsp; Normal &nbsp; &nbsp;86F/ 30C 212F/100C
&nbsp;5 &nbsp;Basic Sensor I/O Zone &nbsp; &nbsp; &nbsp; &nbsp;Normal &nbsp; &nbsp;96F/ 36C 145F/ 63C
&nbsp;6 &nbsp;Basic Sensor CPU (2) &nbsp; &nbsp; &nbsp; &nbsp; Normal &nbsp; ---F/---C 212F/100C
&nbsp;7 &nbsp;Basic Sensor CPU (2) &nbsp; &nbsp; &nbsp; &nbsp; Normal &nbsp; ---F/---C 212F/100C
Status dos fans

root@lnxsrv:~# hplog -f
ID &nbsp; &nbsp; TYPE &nbsp; &nbsp; &nbsp; &nbsp;LOCATION &nbsp; &nbsp; &nbsp;STATUS &nbsp;REDUNDANT FAN SPEED
&nbsp;1 &nbsp;Var. Speed &nbsp; System Board &nbsp; &nbsp;Normal &nbsp; &nbsp; No &nbsp; &nbsp; &nbsp;Low &nbsp; &nbsp;( 35)
&nbsp;2 &nbsp;Basic Fan &nbsp; &nbsp;System Board &nbsp; &nbsp;Absent &nbsp; &nbsp; No &nbsp; &nbsp; &nbsp;Unknown
&nbsp;3 &nbsp;Var. Speed &nbsp; System Board &nbsp; &nbsp;Normal &nbsp; &nbsp; No &nbsp; &nbsp; &nbsp;Low &nbsp; &nbsp;( 35)
&nbsp;4 &nbsp;Basic Fan &nbsp; &nbsp;System Board &nbsp; &nbsp;Absent &nbsp; &nbsp; No &nbsp; &nbsp; &nbsp;Unknown
&nbsp;5 &nbsp;Var. Speed &nbsp; CPU (1) &nbsp; &nbsp; &nbsp; &nbsp; Normal &nbsp; &nbsp; N/A &nbsp; &nbsp; Low &nbsp; &nbsp;( 35)
&nbsp;6 &nbsp;Basic Fan &nbsp; &nbsp;CPU (2) &nbsp; &nbsp; &nbsp; &nbsp; Absent &nbsp; &nbsp; N/A &nbsp; &nbsp; Unknown

Status do power

root@lnxsrv1:~# hplog -p
ID &nbsp; &nbsp; TYPE &nbsp; &nbsp; &nbsp; &nbsp;LOCATION &nbsp; &nbsp; &nbsp;STATUS &nbsp;REDUNDANT
&nbsp;1 &nbsp;Standard &nbsp; &nbsp; Pwr. Supply Bay Normal &nbsp; &nbsp; No
&nbsp;2 &nbsp;Standard &nbsp; &nbsp; Pwr. Supply Bay Absent &nbsp; &nbsp; No

hpacucli


O hpacucli, entre outras coisas, possibilita a visualização do status atual da controladora e dos discos, permitindo que tais dados sejam utilizados em um script para geração de um alerta por e-mail, por exemplo.



Alguns exemplos:

Status da controladora

root@lnxsrv:~# hpacucli ctrl all show status
Smart Array E200i in Slot 0 (Embedded)
&nbsp;&nbsp; Controller Status: OK
&nbsp;&nbsp; Cache Status: OK
&nbsp;&nbsp; Battery/Capacitor Status: OK

Status dos discos

root@lnxsrv:~# hpacucli ctrl slot=0 pd all show detail
Smart Array E200i in Slot 0 (Embedded)
&nbsp; &nbsp;array A
&nbsp; &nbsp; &nbsp; physicaldrive 2I:1:1
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; Port: 2I
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; Box: 1
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; Bay: 1
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; Status: OK
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; Drive Type: Data Drive
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; Interface Type: SATA
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; Size: 250 GB
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; Firmware Revision: HPG9
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; Serial Number: Z3THAVJF
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; Model: ATA &nbsp; &nbsp; VB0250EAVER
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; SATA NCQ Capable: False
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; PHY Count: 1
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; PHY Transfer Rate: 1.5GBPS
&nbsp; &nbsp; &nbsp; physicaldrive 2I:1:2
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; Port: 2I
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; Box: 1
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; Bay: 2
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; Status: OK
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; Drive Type: Data Drive
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; Interface Type: SATA
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; Size: 250 GB
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; Firmware Revision: HPG1
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; Serial Number: 9SF0527C
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; Model: ATA &nbsp; &nbsp; GB0250EAFJF
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; SATA NCQ Capable: False
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; PHY Count: 1
&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; PHY Transfer Rate: 1.5GBPS

Interface web do hpshm


Minha experiência com a interface web não foi das melhores. Usei a mesma em dois modelos diferentes, mas em nenhum deles consegui obter os dados que desejava. Por fim preferi utilizar as ferramentas de linha de comando e não dei mais atenção a este recurso, então é provável que ele tenha sido mal explorado.






E como posso tratar e receber os alertas?



Uma possibilidade (a mais óbvia delas) é tratar a saída dos comandos num script que procura por erros e, caso os mesmos sejam encontrados, enviar o status para um determinado e-mail.



Vou exemplificar abaixo, partindo do pressuposto que desejamos receber alertas em caso de falhas em algum dos HDs do servidor:



#! /bin/bash
#
# Script de envio de e-mail
# em caso de falha de disco
#
# Marcelo Terres
#

MAILTO="marcelo@meudominio.com.br"
MAILSUBJECT="Alarme de disco em $HOSTNAME"
HPACUCLI="/usr/sbin/hpacucli"
MAILEXEC="/usr/bin/mail -a \"Content-Type: text/plain;charset=UTF-8;\" -s \"$MAILSUBJECT\" \"$MAILTO\""

$HPACUCLI ctrl slot=0 pd all show detail | grep "Status: Failed" -q

if [ $? == 0 ]; then

&nbsp; echo "Erro de disco encontrado"

&nbsp; MAILBODY="Olá, \nexiste um erro de disco no servidor&nbsp;$HOSTNAME\n\nSaida da verificacao:\n`$HPACUCLI ctrl slot=0 pd all show&nbsp;detail`"
&nbsp; echo -e "${MAILBODY}" | eval $MAILEXEC
&nbsp; exit 1
fi

exit 0


O exemplo acima é bastante simplório, é claro, mas tem por objetivo somente servir de base para que você coloque sua criatividade em prática e desenvolva agora algo que atenda sua demanda da melhor forma possível.


Até mais.