Esta pagina se ve mejor con JavaScript habilitado

Monitorización controladoras LSI mediante zabbix

 ·  🎃 kr0m

Como ya comentamos en una ocasión anterior Zabbix es un sistema de monitorización altamente configurable, tanto que nos permite crear nuestros propios scripts de check, en esta ocasión vamos a configurar alarmas que nos comprueben el estado de salud de las conocidas controladoras de disco LSI.

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

Reiniciamos el servicio:

/etc/init.d/zabbix-agentd restart

Importamos el template en zbx:

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

Si te ha gustado el artículo puedes invitarme a un RedBull aquí