Monitoritzant el SLA dels Serveis de Centreon

Una cosa curiosa i que depèn de les circumstàncies pot venir bé pot ser el conèixer el SLA de qualsevol servei que estem monitoritzant actualment als nostres Centreon. Pot també estar pensat per quan monitoritzem a nivell de Negoci, per donar visibilitat de la seva disponibilitat.

Com sabem, Centreon almacena sus métricas y estados en una BD de MariaDB, podem senzillament mediante consultes de MySQL sacar en tiempo o en % el estado de un Servicio monitorat en Centreon. Podremos saber cuánto tiempo (o porcentaje) ha estado en estado OK, Warning, Critical, Unknown o en Mantenimiento. Per a què? bo, de tots es sabido que podem reconèixer el SLA de qualsevol Host o Servei en Centreon, però una altra cosa es monitoraré per a alertarnos de quan aquest no se cumple, o per exemple per visualitzarlos en el nostre Servei de Negocis vía NagVis.

Bé, per començar seria interessant que si no estàs monitoritzant consultes de MySQL, eches un vistazo a aquest post. Quan tengas ja el script que permeta fer consultes a BBDD de MySQL, podrem crear els Comandos que necessitem i cada un amb el seu tipus de consulta. Ya que unos comandos nos servirán para monitorizar el SLA de Hosts, otros de Servicios, otros nos darán el resultat en tiempo y altres en %, así que dependiendo lo que necessites te dejo aquí ciertas posibilidades:

  • SLA de Servicios OK en %:
$CENTREONPLUGINS$/Nagios-Plugins/check_mysql_query.pl -q "SELECT ROUND((SUM(OKTimeScheduled)/($ARG1$ * 86400))*100,2) as porcentaje FROM log_archive_service, services WHERE log_archive_service.service_id = services.service_id I descripció = '$ARG 2$' I from_unixtime(date_end) > date_sub(ara(), INTERVAL $ARG1$ dia) ordre BY log_id DESC" -H 127.0.0.1 -d centreon_storage -u centreon -p CONTRASEÑA_USUARIO_CENTREON -t 60 --no-querytime -T -g -l 'SLA' -U %

  • SLA de Servicios OK en Tiempo:
$CENTREONPLUGINS$/Nagios-Plugins/check_mysql_query.pl -q "SELECT CONCAT(FLOOR(HORA(sec_to_time(SUM(OKTimeScheduled))) / 24), 'd_', MOD(HORA(sec_to_time(SUM(OKTimeScheduled))), 24), 'h_', MINUTE(sec_to_time(SUM(OKTimeScheduled))), 'm') AS Tiempo FROM log_archive_service, services WHERE log_archive_service.service_id = services.service_id I descripció = '$ARG 2$' I from_unixtime(date_end) > date_sub(ara(), INTERVAL $ARG1$ dia) ordre BY log_id DESC" -H 127.0.0.1 -d centreon_storage -u centreon -p CONTRASEÑA_USUARIO_CENTREON -t 60 --no-querytime -T -g -l 'SLA'

  • SLA de Servicios Warning en %:
$CENTREONPLUGINS$/Nagios-Plugins/check_mysql_query.pl -q "SELECT ROUND((SUM(WARNINGTimeScheduled)/($ARG1$ * 86400))*100,2) as porcentaje FROM log_archive_service, services WHERE log_archive_service.service_id = services.service_id I descripció = '$ARG 2$' I from_unixtime(date_end) > date_sub(ara(), INTERVAL $ARG1$ dia) ordre BY log_id DESC" -H 127.0.0.1 -d centreon_storage -u centreon -p CONTRASEÑA_USUARIO_CENTREON -t 60 --no-querytime -T -g -l 'SLA' -U %

  • SLA de Servicios Warning en Tiempo:
$CENTREONPLUGINS$/Nagios-Plugins/check_mysql_query.pl -q "SELECT CONCAT(FLOOR(HORA(sec_to_time(SUM(WARNINGTimeScheduled))) / 24), 'd_', MOD(HORA(sec_to_time(SUM(WARNINGTimeScheduled))), 24), 'h_', MINUTE(sec_to_time(SUM(WARNINGTimeScheduled))), 'm') AS Tiempo FROM log_archive_service, services WHERE log_archive_service.service_id = services.service_id I descripció = '$ARG 2$' I from_unixtime(date_end) > date_sub(ara(), INTERVAL $ARG1$ dia) ordre BY log_id DESC" -H 127.0.0.1 -d centreon_storage -u centreon -p CONTRASEÑA_USUARIO_CENTREON -t 60 --no-querytime -T -g -l 'SLA'

  • SLA de Servicios Critical en %:
$CENTREONPLUGINS$/Nagios-Plugins/check_mysql_query.pl -q "SELECT ROUND((SUM(CRITICALTimeScheduled)/($ARG1$ * 86400))*100,2) as porcentaje FROM log_archive_service, services WHERE log_archive_service.service_id = services.service_id I descripció = '$ARG 2$' I from_unixtime(date_end) > date_sub(ara(), INTERVAL $ARG1$ dia) ordre BY log_id DESC" -H 127.0.0.1 -d centreon_storage -u centreon -p CONTRASEÑA_USUARIO_CENTREON -t 60 --no-querytime -T -g -l 'SLA' -U %

  • SLA de Servicios Critical en Tiempo:
$CENTREONPLUGINS$/Nagios-Plugins/check_mysql_query.pl -q "SELECT CONCAT(FLOOR(HORA(sec_to_time(SUM(CRITICALTimeScheduled))) / 24), 'd_', MOD(HORA(sec_to_time(SUM(CRITICALTimeScheduled))), 24), 'h_', MINUTE(sec_to_time(SUM(CRITICALTimeScheduled))), 'm') AS Tiempo FROM log_archive_service, services WHERE log_archive_service.service_id = services.service_id I descripció = '$ARG 2$' I from_unixtime(date_end) > date_sub(ara(), INTERVAL $ARG1$ dia) ordre BY log_id DESC" -H 127.0.0.1 -d centreon_storage -u centreon -p CONTRASEÑA_USUARIO_CENTREON -t 60 --no-querytime -T -g -l 'SLA'

  • SLA de Hosts Uptime en %:
$CENTREONPLUGINS$/Nagios-Plugins/check_mysql_query.pl -q "SELECT ROUND((SUM(UPTimeScheduled)/($ARG1$ * 86400))*100,2) com a percentatge FROM hosts, log_archive_host WHERE log_archive_host.host_id = hosts.host_id AND hosts.name = '$ARG2$' AND from_unixtime(date_end) > date_sub(ara(), INTERVAL $ARG1$ dia)  order BY date_end DESC" -H 127.0.0.1 -d centreon_storage -u centreon -p CONTRASEÑA_USUARIO_CENTREON -t 60 --no-querytime -T -g -l 'SLA' -U %

  • SLA de Hosts Uptime en Tiempo:
$CENTREONPLUGINS$/Nagios-Plugins/check_mysql_query.pl -q "SELECT CONCAT(FLOOR(HORA(sec_to_time(SUM(UPTimeScheduled))) / 24), 'd_', MOD(HORA(sec_to_time(SUM(UPTimeScheduled))), 24), 'h_', MINUTE(sec_to_time(SUM(UPTimeScheduled))), 'm') COM TEMPS FROM hosts, log_archive_host WHERE log_archive_host.host_id = hosts.host_id AND hosts.name = '$ARG2$' AND from_unixtime(date_end) > date_sub(ara(), INTERVAL $ARG1$ dia)  order BY date_end DESC" -H 127.0.0.1 -d centreon_storage -u centreon -p CONTRASEÑA_USUARIO_CENTREON -t 60 --no-querytime -T -g -l 'SLA'

  • SLA de Temps d'Inactivitat d'Hosts en %:
$CENTREONPLUGINS$/Nagios-Plugins/check_mysql_query.pl -q "SELECT ROUND((SUM(DOWNTimeProgramat)/($ARG1$ * 86400))*100,2) com a percentatge FROM hosts, log_archive_host WHERE log_archive_host.host_id = hosts.host_id AND hosts.name = '$ARG2$' AND from_unixtime(date_end) > date_sub(ara(), INTERVAL $ARG1$ dia)  order BY date_end DESC" -H 127.0.0.1 -d centreon_storage -u centreon -p CONTRASEÑA_USUARIO_CENTREON -t 60 --no-querytime -T -g -l 'SLA' -U %

  • SLA de Temps d'Inactivitat d'Hosts en Temps:
$CENTREONPLUGINS$/Nagios-Plugins/check_mysql_query.pl -q "SELECT CONCAT(FLOOR(HORA(sec_to_time(SUM(DOWNTimeProgramat))) / 24), 'd_', MOD(HORA(sec_to_time(SUM(DOWNTimeProgramat))), 24), 'h_', MINUTE(sec_to_time(SUM(DOWNTimeProgramat))), 'm') COM TEMPS FROM hosts, log_archive_host WHERE log_archive_host.host_id = hosts.host_id AND hosts.name = '$ARG2$' AND from_unixtime(date_end) > date_sub(ara(), INTERVAL $ARG1$ dia)  order BY date_end DESC" -H 127.0.0.1 -d centreon_storage -u centreon -p CONTRASEÑA_USUARIO_CENTREON -t 60 --no-querytime -T -g -l 'SLA'

I ara només falta crear tants Serveis per monitoritzar el SLA com ens interessi, en aquest cas pràctic, jo els estic utilitzant únicament per mesurar el SLA dels Serveis de Negoci, i per tant per visualitzar-los a NagVis. Com arguments posarem els dies del SLA que ens interessa veure i en el Nom del Servei, el nom únic d'un Servei a comprovar.

I com sempre, després de desar i exportar la configuració, tindrem els nostres serveis SLA llestos per comprovar mitjançant una consulta a la base de dades de Centreon el temps o percentatge de l'estat d'un Servei.

I a NagVis, amb el Gadget de RawNumbers podremos afegir els ítems SLA monitorats i quedará més atractivo a la hora de movernos entre mapas i conèixer el SLA que ofereix qualsevol servei, ideal para perfiles no 100% técnicos y quieran conèixer el estat de la seva infraestructura en tiempo real.

Posts recomanats

Autor

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, no dubtis a contactar amb mi, us intentareu ajudar sempre que pugui, compartir és viure ;) . Gaudir dels documents!!!

Llibre PowerShell en espanyol

18 de November de 2021