Esta web utiliza cookies, puedes ver nuestra política de cookies, aquí Si continuas navegando estás aceptándola

Monitorización controladoras LSI mediante zabbix


El repo de los scripts utilizados se puede localizar en la siguiente dirección:

https://github.com/lesovsky/zabbix-extensions/tree/master/files/hwraid-megacli

Definimos los UserParameters:

vi /etc/zabbix/conf.d/megacli.conf
UserParameter=megacli.adp.discovery,/var/lib/zabbix/externalscripts/megacli-adp-discovery.sh
UserParameter=megacli.ld.discovery,/var/lib/zabbix/externalscripts/megacli-ld-discovery.sh
UserParameter=megacli.pd.discovery,/var/lib/zabbix/externalscripts/megacli-pd-discovery.sh

Instalamos un cron ya que las unidades del auto-discovery son items reportados mediante zabbix-trapper:

crontab -e
0 */1 * * *    /var/lib/zabbix/externalscripts/megacli-raid-data-processor.sh

Nos bajamos los scripts configurados y eliminamos el sudo según necesidades:

cd /var/lib/zabbix/externalscripts/
wget https://raw.githubusercontent.com/lesovsky/zabbix-extensions/master/files/hwraid-megacli/scripts/megacli-adp-discovery.sh
sed -i 's/sudo//g' megacli-adp-discovery.sh

wget https://raw.githubusercontent.com/lesovsky/zabbix-extensions/master/files/hwraid-megacli/scripts/megacli-ld-discovery.sh
sed -i 's/sudo//g' megacli-ld-discovery.sh

wget https://raw.githubusercontent.com/lesovsky/zabbix-extensions/master/files/hwraid-megacli/scripts/megacli-pd-discovery.sh
sed -i 's/sudo//g' megacli-pd-discovery.sh

wget https://raw.githubusercontent.com/lesovsky/zabbix-extensions/master/files/hwraid-megacli/scripts/megacli-raid-data-processor.sh
sed -i 's/sudo//g' megacli-raid-data-processor.sh
sed -i 's//usr/libexec/zabbix-extensions/scripts///var/lib/zabbix/externalscripts//g' megacli-raid-data-processor.sh

chmod 700 *.sh

NOTA: Si utilizamos proxys el script original parsea mal los datos:

vi /var/lib/zabbix/externalscripts/megacli-raid-data-processor.sh
zbx_server=$(grep ^Server= /etc/zabbix/zabbix_agentd.conf |cut -d= -f2|cut -d, -f1)
zbx_server=$(grep ^Server= /etc/zabbix/zabbix_agentd.conf |cut -d= -f2|cut -d, -f2)

El script no está bien programado, por ejemplo si la temperatura es N/A falla, cambiamos:

value=$(sed -n -e "/pd begin $adp $enc $pd/,/ld end $adp $enc $pd/p" $data_out |grep -m1 -w "^Drive Temperature" |awk '{print $3}' |grep -oE '[0-9]+')
value=$(sed -n -e "/pd begin $adp $enc $pd/,/ld end $adp $enc $pd/p" $data_out |grep -m1 -w "^Drive Temperature" |awk '{print $3}' |grep -oE '[0-9]+')
if [ -z $value ]; then
    value='0'
fi

Para los mas perecesos dejo en mi servidor los ficheros modificados, pero hay que resaltar que estos ficheros quedarán obosletos con el tiempo ya que no se aplicarán las actualizaciones del repo original:

wget www.alfaexploit.com//uploads/files/LSI/megacli-adp-discovery.sh
wget www.alfaexploit.com//uploads/files/LSI/megacli-ld-discovery.sh
wget www.alfaexploit.com//uploads/files/LSI/megacli-pd-discovery.sh
wget www.alfaexploit.com//uploads/files/LSI/megacli-raid-data-processor.sh
wget www.alfaexploit.com//uploads/files/LSI/hwraid-megacli-template.xml

Reiniciamos el servicio:

/etc/init.d/zabbix-agentd restart

Importamos el template en zbx:

wget https://raw.githubusercontent.com/lesovsky/zabbix-extensions/master/files/hwraid-megacli/hwraid-megacli-template.xml

Aplicamos el template al server en cuestión desde la interfaz web del Zabbix.


TROUBLESHOOTING

Los items provienen del cronjob, ejecutamos el script y consultamos los datos colectados:

/var/lib/zabbix/externalscripts/megacli-raid-data-processor.sh
cat /run/zabbix-sender-megacli-raid-data.in
"node00" megacli.adp.name[0]  Supermicro SMC2208
"node00" megacli.ld.degraded[0] 0
"node00" megacli.ld.offline[0] 0
"node00" megacli.pd.total[0] 2
"node00" megacli.pd.critical[0] 0
"node00" megacli.pd.failed[0] 0
"node00" megacli.mem.err[0] 0
"node00" megacli.mem.unerr[0] 0
"node00" megacli.ld.state[0:0] Optimal
"node00" megacli.pd.media_error[0:252:0] 0
"node00" megacli.pd.other_error[0:252:0] 0
"node00" megacli.pd.pred_failure[0:252:0] 0
"node00" megacli.pd.state[0:252:0] Online
"node00" megacli.pd.temperature[0:252:0]
"node00" megacli.pd.media_error[0:252:1] 0
"node00" megacli.pd.other_error[0:252:1] 0
"node00" megacli.pd.pred_failure[0:252:1] 0
"node00" megacli.pd.state[0:252:1] Online
"node00" megacli.pd.temperature[0:252:1] 0

NOTA: Todas las líneas a enviar deberían de ser:

<hostname> <key> <value>

Podemos simular alarmas para comprobar que Zabbix nos avisa en caso de problemas:

vi /run/zabbix-sender-megacli-raid-data.in
"node00" megacli.pd.critical[0] 1

Tamibién podemos comprobar la alarma pero saltándonos los scripts intermedios:

zabbix_sender -z ZBX_SERVER_IP -s node00 -k megacli.pd.critical[0] -o 1

Autor: Kr0m -- 19/04/2016 20:04:55