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 (nas versões mais novas ainda não pude testar).
Após rodar um apt-get update, ficarão disponíveis os seguintes pacotes:
- 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.
Temperatura atual
root@lnxsrv:~# hplog -tStatus dos fans
ID TYPE LOCATION STATUS CURRENT THRESHOLD
1 Basic Sensor Ambient Normal 66F/ 19C 104F/ 40C
2 Basic Sensor Memory Board Normal 132F/ 56C 230F/110C
3 Basic Sensor CPU (1) Normal 86F/ 30C 212F/100C
4 Basic Sensor CPU (1) Normal 86F/ 30C 212F/100C
5 Basic Sensor I/O Zone Normal 96F/ 36C 145F/ 63C
6 Basic Sensor CPU (2) Normal ---F/---C 212F/100C
7 Basic Sensor CPU (2) Normal ---F/---C 212F/100C
root@lnxsrv:~# hplog -f
ID TYPE LOCATION STATUS REDUNDANT FAN SPEED
1 Var. Speed System Board Normal No Low ( 35)
2 Basic Fan System Board Absent No Unknown
3 Var. Speed System Board Normal No Low ( 35)
4 Basic Fan System Board Absent No Unknown
5 Var. Speed CPU (1) Normal N/A Low ( 35)
6 Basic Fan CPU (2) Absent N/A Unknown
Status do power
root@lnxsrv1:~# hplog -p
ID TYPE LOCATION STATUS REDUNDANT
1 Standard Pwr. Supply Bay Normal No
2 Standard Pwr. Supply Bay Absent 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.
Status da controladora
root@lnxsrv:~# hpacucli ctrl all show status
Smart Array E200i in Slot 0 (Embedded)
Controller Status: OK
Cache Status: OK
Battery/Capacitor Status: OK
Status dos discos
root@lnxsrv:~# hpacucli ctrl slot=0 pd all show detail
Smart Array E200i in Slot 0 (Embedded)
array A
physicaldrive 2I:1:1
Port: 2I
Box: 1
Bay: 1
Status: OK
Drive Type: Data Drive
Interface Type: SATA
Size: 250 GB
Firmware Revision: HPG9
Serial Number: Z3THAVJF
Model: ATA VB0250EAVER
SATA NCQ Capable: False
PHY Count: 1
PHY Transfer Rate: 1.5GBPS
physicaldrive 2I:1:2
Port: 2I
Box: 1
Bay: 2
Status: OK
Drive Type: Data Drive
Interface Type: SATA
Size: 250 GB
Firmware Revision: HPG1
Serial Number: 9SF0527C
Model: ATA GB0250EAFJF
SATA NCQ Capable: False
PHY Count: 1
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
echo "Erro de disco encontrado"
MAILBODY="Olá, \nexiste um erro de disco no servidor $HOSTNAME\n\nSaida da verificacao:\n`$HPACUCLI ctrl slot=0 pd all show detail`"
echo -e "${MAILBODY}" | eval $MAILEXEC
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.