Monitorizando el SLA de los Servicios chequeados de Centreon
Algo curioso y que depende de las circunstancias puede venir bien puede ser el conocer el SLA de cualquier servicio que estamos monitorizando actualmente en nuestros Centreon. Puede también estar pensado para cuando monitorizamos a nivel de Negocio, para dar visibilidad de su disponibilidad.
Dakigunez bezala, Centreon almacena sus metrics y estados en una BD de MariaDB, podemos sencillamente mediante interroges de MySQL sacar en tiempo o en % el state de un Servicio monitorizado en Centreon. Podremos saber cuánto tiempo (o porcentaje) ha estado en estado OK, Abisua, Larrialdia, Unknown o en Mantenimiento. ¿Para qué? bueno, de denek dakite SLA ezagutzen dugula edozein Host o Zerbitzu en Centreon, baina beste gauza bat da alertarako alertarako noiz hau ez se cumple, adibidez gure Zerbitzu de Negozio Zerbitzua vía NagVis.
Ondo, hasteko interesgarria izango da si no estás monitorizando galderak de MySQL, eches un begirada a post hau. When tengas ya el script que permita permita a BBDD de MySQL kontsultatzeko, komandoak sortu ahal izango ditugu behar dituztenak eta bakoitza bere kontsulta mota batekin. Hosts-en SLA monitoreatzeko komando batzuk erabilgarri izango zaizkigulako, Beste batzuk Zerbitzuei dagokie, Beste batzuek emaitza denbora errealean emango digute eta beste batzuk ez bezala %, Beraz, behar duzunaren arabera hemen aukerak uzten dizkizut:
- Zerbitzuen SLA OK da %:
$CENTREONPLUGINS$/Nagios-Plugins/check_mysql_query.pl -q "SELECT ROUND((SUM(OKTimeScheduled)/($ARG1$ * 86400))*100,2) log_archive_service-tik portzentaje gisa, services non log_archive_service.service_id = services.service_id eta description = '$ARG2$' eta from_unixtime(date_end) > date_sub(now(), INTERVAL $ARG 1$ day) order BY log_id DESC" -H 127.0.0.1 -d centreon_storage -u centreon -p CENTRÉON_ERABILTZAILE_PASAHITZA -t 60 --no-querytime -T -g -l 'SLA' -U %
- Zerbitzuen SLA denboran OK da:
$CENTREONPLUGINS$/Nagios-Plugins/check_mysql_query.pl -q "SELECT CONCAT(FLOOR(HOUR(sec_to_time(SUM(OKTimeScheduled))) / 24), 'd_', MOD(HOUR(sec_to_time(SUM(OKTimeScheduled))), 24), 'h_', MINUTE(sec_to_time(SUM(OKTimeScheduled))), 'm') AS Denbora FROM log_archive_service, services non log_archive_service.service_id = services.service_id eta description = '$ARG2$' eta from_unixtime(date_end) > date_sub(now(), INTERVAL $ARG 1$ day) order BY log_id DESC" -H 127.0.0.1 -d centreon_storage -u centreon -p CENTRÉON_ERABILTZAILE_PASAHITZA -t 60 --no-querytime -T -g -l 'SLA'
- Zerbitzuen SLA Alertan dagoenean %:
$CENTREONPLUGINS$/Nagios-Plugins/check_mysql_query.pl -q "SELECT ROUND((SUM(WARNINGTimeScheduled)/($ARG1$ * 86400))*100,2) log_archive_service-tik portzentaje gisa, services non log_archive_service.service_id = services.service_id eta description = '$ARG2$' eta from_unixtime(date_end) > date_sub(now(), INTERVAL $ARG 1$ day) order BY log_id DESC" -H 127.0.0.1 -d centreon_storage -u centreon -p CENTRÉON_ERABILTZAILE_PASAHITZA -t 60 --no-querytime -T -g -l 'SLA' -U %
- Zerbitzuen SLA denboran Alertan:
$CENTREONPLUGINS$/Nagios-Plugins/check_mysql_query.pl -q "SELECT CONCAT(FLOOR(HOUR(sec_to_time(SUM(WARNINGTimeScheduled))) / 24), 'd_', MOD(HOUR(sec_to_time(SUM(WARNINGTimeScheduled))), 24), 'h_', MINUTE(sec_to_time(SUM(WARNINGTimeScheduled))), 'm') AS Denbora FROM log_archive_service, services non log_archive_service.service_id = services.service_id eta description = '$ARG2$' eta from_unixtime(date_end) > date_sub(now(), INTERVAL $ARG 1$ day) order BY log_id DESC" -H 127.0.0.1 -d centreon_storage -u centreon -p CENTRÉON_ERABILTZAILE_PASAHITZA -t 60 --no-querytime -T -g -l 'SLA'
- Zerbitzuen SLA Kritikoa denean %:
$CENTREONPLUGINS$/Nagios-Plugins/check_mysql_query.pl -q "SELECT ROUND((SUM(CRITICALTimeScheduled)/($ARG1$ * 86400))*100,2) log_archive_service-tik portzentaje gisa, services non log_archive_service.service_id = services.service_id eta description = '$ARG2$' eta from_unixtime(date_end) > date_sub(now(), INTERVAL $ARG 1$ day) order BY log_id DESC" -H 127.0.0.1 -d centreon_storage -u centreon -p CENTRÉON_ERABILTZAILE_PASAHITZA -t 60 --no-querytime -T -g -l 'SLA' -U %
- Zerbitzuen SLA denboran Kritikoa:
$CENTREONPLUGINS$/Nagios-Plugins/check_mysql_query.pl -q "SELECT CONCAT(FLOOR(HOUR(sec_to_time(SUM(CRITICALTimeScheduled))) / 24), 'd_', MOD(HOUR(sec_to_time(SUM(CRITICALTimeScheduled))), 24), 'h_', MINUTE(sec_to_time(SUM(CRITICALTimeScheduled))), 'm') AS Denbora FROM log_archive_service, services non log_archive_service.service_id = services.service_id eta description = '$ARG2$' eta from_unixtime(date_end) > date_sub(now(), INTERVAL $ARG 1$ day) order BY log_id DESC" -H 127.0.0.1 -d centreon_storage -u centreon -p CENTRÉON_ERABILTZAILE_PASAHITZA -t 60 --no-querytime -T -g -l 'SLA'
- Hosts-en SLA Uptime-ean %:
$CENTREONPLUGINS$/Nagios-Plugins/check_mysql_query.pl -q "SELECT ROUND((SUM(UPTimeScheduled)/($ARG1$ * 86400))*100,2) as porcentaje FROM hosts, log_archive_host WHERE log_archive_host.host_id = hosts.host_id AND hosts.name = '$ARG 2$' AND from_unixtime(date_end) > date_sub(now(), INTERVAL $ARG 1$ day) Order BY date_end DESC" -H 127.0.0.1 -d centreon_storage -u centreon -p CENTRÉON_ERABILTZAILE_PASAHITZA -t 60 --no-querytime -T -g -l 'SLA' -U %
- Hosts-en SLA denboran Uptime:
$CENTREONPLUGINS$/Nagios-Plugins/check_mysql_query.pl -q "SELECT CONCAT(FLOOR(HOUR(sec_to_time(SUM(UPTimeScheduled))) / 24), 'd_', MOD(HOUR(sec_to_time(SUM(UPTimeScheduled))), 24), 'h_', MINUTE(sec_to_time(SUM(UPTimeScheduled))), 'm') AS Denbora FROM hosts, log_archive_host WHERE log_archive_host.host_id = hosts.host_id AND hosts.name = '$ARG 2$' AND from_unixtime(date_end) > date_sub(now(), INTERVAL $ARG 1$ day) Order BY date_end DESC" -H 127.0.0.1 -d centreon_storage -u centreon -p CENTRÉON_ERABILTZAILE_PASAHITZA -t 60 --no-querytime -T -g -l 'SLA'
- SLA de Hosts Downtime en %:
$CENTREONPLUGINS$/Nagios-Plugins/check_mysql_query.pl -q "SELECT ROUND((SUM(DOWNTimeScheduled)/($ARG1$ * 86400))*100,2) as porcentaje FROM hosts, log_archive_host WHERE log_archive_host.host_id = hosts.host_id AND hosts.name = '$ARG 2$' AND from_unixtime(date_end) > date_sub(now(), INTERVAL $ARG 1$ day) Order BY date_end DESC" -H 127.0.0.1 -d centreon_storage -u centreon -p CENTRÉON_ERABILTZAILE_PASAHITZA -t 60 --no-querytime -T -g -l 'SLA' -U %
- SLA de Hosts Downtime en Tiempo:
$CENTREONPLUGINS$/Nagios-Plugins/check_mysql_query.pl -q "SELECT CONCAT(FLOOR(HOUR(sec_to_time(SUM(DOWNTimeScheduled))) / 24), 'd_', MOD(HOUR(sec_to_time(SUM(DOWNTimeScheduled))), 24), 'h_', MINUTE(sec_to_time(SUM(DOWNTimeScheduled))), 'm') AS Denbora FROM hosts, log_archive_host WHERE log_archive_host.host_id = hosts.host_id AND hosts.name = '$ARG 2$' AND from_unixtime(date_end) > date_sub(now(), INTERVAL $ARG 1$ day) Order BY date_end DESC" -H 127.0.0.1 -d centreon_storage -u centreon -p CENTRÉON_ERABILTZAILE_PASAHITZA -t 60 --no-querytime -T -g -l 'SLA'
Y ahora sólo falta crear tantos Servicios para monitorizar el SLA como nos interese, en este caso práctico, yo los estoy utilizando únicamente para medir el SLA de los Servicios de Negocio, y por tanto para visualizarlos en NagVis. Como argumentos pondremos los días del SLA que nos interesa ver y en el Nombre del Servicio, el nombre único de un Servicio a chequear.
Eta beti bezala, tras grabar y exportar la configuración, tendremos nuestros servicios SLA listos para chequear mediante una query en la base de datos de Centreon el tiempo o porcentaje del estado de un Servicio.
Y en NagVis, con el Gadget de RawNumbers podremos añadir los ítems SLA monitorizados y quedará más atractivo a la hora de movernos entre mapas y conocer el SLA que ofrece cualquier servicio, ideal para perfiles no 100% técnicos y quieran conocer el estado de su infraestructura en tiempo real.













































